Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Minicurso:
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;
1 = In
COMO FAZ?
PARA LER UMA CHAVE ...
COMO FAZ?
PARA LER UMA CHAVE ... CONFIGURAO:
Em mikroC:
trisA = 0b00001000;
VERIFICAO:
Em mikroC:
0 = Out
1 = In
COMO FAZ?
ENTRADA E SADA ...
COMO FAZ?
ENTRADA E SADA ... CONFIGURAO:
Em mikroC:
trisA = 0b00001000;
Exemplo de uso:
Em mikroC:
0 = Out 1 = In
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
trisA = 0b00000100;
ansel = 0b00000100;
COMO FAZ?
LER UM SINAL ANALGICO ... LEITURA: usa-se uma funo da biblioteca mikroC
Read_Adc(<canal>)
Em mikroC:
COMO FAZ?
LER UM SINAL ANALGICO ...
ATENUAO
SINAL ADEQUADO
COMO FAZ?
CONTAR TEMPO ...
CONTADOR (8bits) Divisor Programvel
clock
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 momento
Programa Principal ... ler sensor1 ler sensor2 ler sensor 3 calcular mdia dos sensores se (mdia > mdia_anterior) media_anterior = media seno media = 0 ...
COMO FAZ?
CONTAR TEMPO ...
CONTADOR (8bits)
por interrupo
CONFIGURAO:
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)
COMO FAZ?
CONTAR TEMPO ... Contando tempo por interrupo preciso habilitar a interrupo Funo_Interrupo tempo = tempo + 1 Fim_Funo
Interrupo 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,...)
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
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<8; i++) { if( c.F0 ) porta.F3 = 1; else porta.F3 = 0; Delay_us(208); c = c>>1; } porta.F3 = 1;
}
// 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
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
COISAS FEITAS . . .
Teclado musical (sintetizador) controle do teclado e gerao do som
COISAS FEITAS . . .
Rob Mvel
PERSISTA
TRABALHE EM GRUPO
BUSQUE ALTERNATIVAS
NO DESISTA
Obrigado
gfurtado61@yahoo.com.br
gfurtado@puvr.uff.br gustavo@tudosobcontrole.com