Introducao Computacao Embarcada Parte II
-
Upload
ebrahim-rocha -
Category
Documents
-
view
288 -
download
0
Transcript of Introducao Computacao Embarcada Parte II
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]