Introducao Computacao Embarcada Parte II

Embed Size (px)

Citation preview

Agenda Acadmica 2010

Minicurso:

Introduo Computao Embarcada Parte IIProf. Gustavo Lus Furtado Vicente PUVR-ICEx

COMO FAZ?PARA ACENDER UM LED ...

0 0V 1 5V

COMO FAZ?PARA ACENDER UM LED ... CONFIGURAO:Em mikroC:

trisA = 0b11110111;

ALTERAO:Em mikroC:0 = Out

portA.F3 = 1; portA.F3 = 0;

// acende LED // apaga LED

1 = In

Relao entre os registradores TrisA e PortA

COMO FAZ?PARA LER UMA CHAVE ...

CHAVE ABERTA 5V CHAVE FECHADA 0V

COMO FAZ?PARA LER UMA CHAVE ... CONFIGURAO:Em mikroC:

trisA = 0b00001000;

VERIFICAO:Em mikroC:0 = Out1 = In

if (portA.F3) // se chave aberta { ...

Relao entre os registradores TrisA e PortA

}

COMO FAZ?ENTRADA E SADA ...

COMO FAZ?ENTRADA E SADA ... CONFIGURAO:Em mikroC:

trisA = 0b00001000;

Exemplo de uso:Em mikroC:0 = Out 1 = In

if (portA.F3) portA.F2 = 1; else

// se chave aberta // acende LED // seno

portA.F2 = 0;

// apaga LED

COMO FAZ?PARA ACENDER UMA LMPADA (110V) ...

COMO FAZ?LER UM SINAL ANALGICO ... o microcontrolador tem entradas analgicas ???

Tenso varia de 0V a 5V

COMO FAZ?LER UM SINAL ANALGICO ... CONFIGURAO: definir a direo da porta (entrada)

Registrador TRISA definir que a entrada ser analgica ANSEL: indica a entrada analgica

ADCON: indica o canal a ser lidoEm mikroC:

trisA = 0b00000100;ansel = 0b00000100;

COMO FAZ?LER UM SINAL ANALGICO ... LEITURA: usa-se uma funo da biblioteca mikroC

Read_Adc()Em mikroC:

... unsigned int temper; ... temper = Read_Adc(2); ...

COMO FAZ?LER UM SINAL ANALGICO ...

IMPORTANTE: Conformao do sinal a ser lido/escrito:SINAL DE PEQUENA AMPLITUDE AMPLIFICAO SINAL ADEQUADO

SINAL DE GRANDE AMPLITUDE

ATENUAO

SINAL ADEQUADO

COMO FAZ?CONTAR TEMPO ...CONTADOR (8bits) Divisor Programvel

clock

000 001 002 003 ... 253 254 255INTERRUPO

CRISTAL (>10MHz)

CPU

COMO FAZ?PARNTESES: INTERRUPO: evento assncrono (que no depende do clock do microcontrolador para ocorrer), que interrompe a execuo do programa a qualquer momentoPrograma Principal ... ler sensor1 ler sensor2 ler sensor 3 calcular mdia dos sensores se (mdia > mdia_anterior) media_anterior = media seno media = 0 ...

INTERRUPO (interna ou externa)

Funo de Tratamento de Interrupo

Funo_ISR desligar a bomba dgua Fim_Funo

COMO FAZ?CONTAR TEMPO ...CONTADOR (8bits)

Duas formas por monitorao da contagem clock

por interrupo CONFIGURAO:

000 001 002 003 ... 253 254 255

OPTION_REG: configura contador TMR0: contm a contagem

CPU

COMO FAZ?CONTAR TEMPO ...

COMO FAZ?CONTAR TEMPO ... Contando tempo por monitorao da contagem (pooling) unsigned int tempo, delta;

...delta = @#$%; tempo = tmr0; // um valor qualquer (vlido)

while (tmr0 tempo < delta); // conto o tempo aqui...

COMO FAZ?CONTAR TEMPO ... Contando tempo por interrupo preciso habilitar a interrupo Funo_Interrupo tempo = tempo + 1 Fim_FunoInterrupo do TMR0

unsigned int tempo; intcon.GIE = 1; intcon.TIE = 1; ... delta = @#$%; // um valor qualquer (vlido) tempo = 0; while (tempo < delta); // conto o tempo aqui ...

COMO FAZ?

CONTAR EVENTOS (externos) ... s uma questo de quem gera o clock (OPTION_REG)

COMO FAZ?COMUNICAR-SE VIA INTERFACE SERIAL (por hardware) ...

COMO FAZ?COMUNICAR-SE VIA INTERFACE SERIAL (por hardware) ... Configurar as portas (para Tx e Rx) Definir a taxa de comunicao (clock) CONFIGURAO TXSTA: configura a transmisso (n.bits, modo de tx,...)

RCSTA: configura a recepo (idem) BAUDCTL, SPBRG, SPBRGH: definem a taxa de comunicao Dependendo da frequencia do cristal oscilador, taxas de 115kbps

COMO FAZ?COMUNICAR-SE VIA INTERFACE SERIAL (por hardware) ... CONFIGURAO: ... txsta = 0x04; rcsta = 0; baudctl = 0x08; spbrg = 64; spbrgh = 0; ... OU ... Usart_Init(9600); ...

// define 9.600bps

// biblioteca mikroC

COMO FAZ?COMUNICAR-SE VIA INTERFACE SERIAL (por hardware) ... TRANSMISSO: ... txreg = dado; ... OU ... Usart_Write(dado); ... // biblioteca mikroC

// dado a transmitir

COMO FAZ?COMUNICAR-SE VIA INTERFACE SERIAL (por hardware) ... RECEPO: ... while(!intcon.RCIF); dado = rcreg; ... OU ... while(!Usart_Data_Ready()); Usart_Read(dado); ... // espera recepo // biblioteca mikroC

// espera recepo // dado recebido

COMO FAZ?COMUNICAR-SE VIA INTERFACE SERIAL (por software) ... Pode-se utilizar qualquer porta configurada como digital reproduz-se, atravs de programao, a serializao do dado

COMO FAZ?COMUNICAR-SE VIA INTERFACE SERIAL (por software) ...void putc(char c) { char i;

porta.F3 = 0; Delay_us(208); for( i=0; i>1; } porta.F3 = 1;}

// start bit // Taxa = 2400bps

// bit 0 primeiro

// stop bit

COMO FAZ?COMUNICAR-SE SEM FIO ...

COMO FAZ?COMUNICAR-SE SEM FIO ...

COMO FAZ?PARA ESCREVER EM UM DISPLAY LCD... display serial comunicao serial (por hardware ou software)

COMO FAZ?PARA LER UM TECLADO (de telefone, p.ex.)... scanning de 4 sadas e 4 entradas ativa-se cada sada e verificam-se as entradas

COMO FAZ?PARA LER UM TECLADO DE TELEFONE ...char Tecla() { char Tcl1[5] = {'1', '4', '7', 0, '*'}; char Tcl2[5] = {'2', '5', '8', 0, '0'}; char Tcl3[5] = {'3', '6', '9', 0, '#'};PortaB = PortaB | 0x10; delay_ms(5); if( PortaB & 0x0F ) return Tcl1[(PortaB & 0x0F)>>1]; PortaB = PortaB | 0x20; delay_ms(5); if( PortaB & 0x0F ) return Tcl2[(PortaB & 0x0F)>>1]; PortaB = PortaB | 0x40; delay_ms(5); if( PortaB & 0x0F ) return Tcl3[(PortaB & 0x0F)>>1]; return 0; }

COMO FAZ?PARA CONTROLAR UM MOTOR ELTRICO DC (a bateria) ... PWM:Menos energia mdia

Mais energia mdia

COMO FAZ?PARA CONTROLAR UM MOTOR ELTRICO DC (corrente contnua)... PWM:

CONFIGURAO: TMR2, PR2: definem o perodo CCPR1L, CCP1CON: definem o duty cycle

COMO FAZ?PARA CONTROLAR UM MOTOR ELTRICO DC (corrente contnua)... necessria a utilizao de um DRIVER de potncia

COISAS FEITAS . . .Tacmetro

Sinal no Cabo de Vela

COISAS FEITAS . . .Teclado musical (sintetizador) controle do teclado e gerao do som

COISAS FEITAS . . .Rob Mvel

DESENVOLVIMENTO & PESQUISA. . .

PERSISTA

TRABALHE EM GRUPO

BUSQUE ALTERNATIVAS

NO DESISTA

[email protected]@puvr.uff.br [email protected]