MICROPROCESSADORES E
MICROCONTROLADORES
Tecnologia em Automação Industrial
Tecnologia em Automação Industrial
I/O e Timers
Edna Mie Kanazawa
ekanazawa@gmail.com
Conteúdo Programático
• Microprocessadores
– Histórico
– Principais aplicações
• Arquitetura de Microprocessadores
– Diagrama em blocos interno;
– ULA, Decodificador instruções, registradores;
– Barramentos de dados, endereços e controle
• Microcontroladores – Características – Principais aplicações • Arquitetura de Microcontroladores – Memórias – Interrupções – Registradores – formatos de instrução – conjuntos de instruções
Conteúdo Programático
• Técnicas de Desenvolvimento de software para aplicação de microcontroladores
– Depuração
– Simulação
• Programação
– Linguagem de Alto Nível
– Linguagem de Alto Nível
– Linguagem de Baixo Nível
• Laboratório
– Interfaces com dispositivos discretos e programáveis
– Interfaces paralelas: sinais digitais e analógicos
– Programação
– Temporizadores/Contadores programáveis
– Interrupções
•
I/O’s
•
Timers
•
Porta de I/O
– Transferem dados de/para pinos do microcontrolador
– Dados digitais (bits)
– Dados digitais (bits)
– Dados analógicos
• 5 portas – 34 pinos – PORTA • 7 pinos (RA0-RA6) – PORTB • 8 pins (RB0-RB7) • 8 pins (RB0-RB7) – PORTC • 8 pins (RC0-RC7) – PORTD • 8 pins(RD0-RD7) – PORTE • 3 pins(RE0-RE2)
• Os pinos dos port’s possuem multiplos usos
– Exemplo: bits 0-3 do PORTA (RA0/AN0 - RA3/AN3)
• Entrada digital (RA0-RA3)
• Saida digital (RA0-RA3)
• Entrada analógica
• Entrada analógica
– AN0 – AN3
– (input to on-board A/D converter)
– AN2, AN3 can also be used for A/D reference voltage input
– The 18F452 has a total of 8 analog inputs
– Exemplo: bits 0-2 do PORTB (RB0/INT0 - RB2/INT2)
• Entrada ou Saida Digital (RB0 - RB2)
•
Outros usos especiais do pinos de I/O
– Clock externo para os timers
– Detecção de tensão baixa (entrada analógica)
– Capture Compare (CCP) I/O
– Capture Compare (CCP) I/O
– SPI and I2C peripheral bus interfaces
– USART (synchronous/asynchronous serial I/O)
– Parallel slave port
Configurando as portas de
I/O
•
Cada PORTx (x = A-E) possui 3 registros
associados
– PORTx - registrador de porta
– TRISx - registrador de direção de dados
– TRISx - registrador de direção de dados
– LATx – usado para ler/modificar/escrever operações
• Normalmente os registradores não são acessados diretamente
Configuração do PORTx
•
Os bits TRISx configuram a direção dos dados
(entrada ou saida) do PORTx
– TRISx{i} = 0 -> PORTx{i} configurado com saída
– TRISx{i} = 1 -> PORTx{i} configurado como entrada
Acende LED se botão
pressionado
•
Exemplo:
– Piscar os leds
•
Exercício
– Ler os dois botões e tocar o buzzer com
frequencia diferente para cada combinação de botões.
•
Uso dos timers são necessários quando
precisamos:
– Gerar eventos em tempo específico
– Medir a duração de um evento
– Medir a duração de um evento
– Registrar data e hora de um evento
Teoria
• O principal componente de sistema de tempo e um contador binário.
• O contador incrementa a cada pulso aplicado em sua entrada.
• O contador conta continuamente de 0 a 2n-1, onde n é o número de bits do
contador.
• O sistema de tempo é independente, logo pode contar entradas ou pulsos paralelamente enquanto o microcontrolador executa o programa principal. paralelamente enquanto o microcontrolador executa o programa principal.
• Se uma entrada de clock do contador possui uma frequencia conhecida é possível medir o intervalo de tempo contando os pulso de clock.
• Por exemplo:
– Se a entrada de clock possui frequencia de 1Mhz (periodo de 1us) e temos 3000 pulsos no sinal de clock, então temos um tempo de 3000 microsegundos
Teoria
• Em microcontroladores, a entrada de clock para o sistema de tempo interno pode ser selecionado via software.
• Os microcontroladores possuem fonte própria de clock e pode ser selecionado como entrada de clock. Neste caso, o sistema de tempo trabalhará como timer, pois possui uma frequencia de tempo trabalhará como timer, pois possui uma frequencia de clock conhecida.
• Existe a possibilidade gerar sinais de clocks externos através dos pinos de I/O do microcontrolador e esses pulsos podem ser gerados em intervalos de tempo aleatórios.
– Esses pulsos podem ser produzidos manualmente através de um botão ou por outra fonte, como sensor que pode gerar um pulso sempre que um carro
Estrutura funcional do
timer de 16 bits
•
Supondo que gostaríamos de medir o tempo
decorrido entre dois eventos sucessivos.
•
Assumindo que quando o primeiro evento
acontece, o timer resetado para zero e
acontece, o timer resetado para zero e
quando o segundo evento acontece o a saida
do timer é 25000.
•
O período do clock é de 1us, então o tempo
entre os dois eventos é de
•
Este contador de tempo pode contar de
0-65535 (2
16-1), desta forma podemos medir
uma faixa de tempo de 0 to 65535 x 1 µs =
65.535 milliseconds, com resolução de 1 µs.
65.535 milliseconds, com resolução de 1 µs.
•
O intervalo de tempo máximo que o timer
pode medir é conhecido como faixa de
temporização e a resolução define o intervalo
mínimo que o timer pode medir.
• O módulo de tempo tem uma saida adicional, chamado de flag overflow, que indica que o contador atingiu a saida máxima e neste caso o módulo vai para zero.
• Nos microcontroladores o timer gera uma interrupção de timer overflow.
timer overflow.
• Podemos contar o número de vezes que esta interrupção ocore e extender para um faixa de tempo que podemos medir.
– Tempo decorrido = (stop count – start count) + number of overflows x (2n-1)
Prescaler
•
Prescaler – divisor de clock
•
Exemplo:
– Ser usarmos um divisor de frequencia de 8 em um timer de 16 bits, então a taxa de tempo será de timer de 16 bits, então a taxa de tempo será de 65535 x 8 µs = 524.280 milliseconds.
Timers
•
Características
– Limite de contagem – Tipo de incremento – Pré e postscales – Pré e postscales – Geração de interrupções – Periféricos associados• Timer0 – TMR0
– Contador de 8 bits
– Valor atual disponível no registrador TMR0
– Registrador TMR0 – leitura e escrita – permitindo a reinicialização do contador
reinicialização do contador
– Duas formas de incremento através da chave OPTION_REG <TOCS>
• TOCS=1 Incremento a cada transição no pino RA4/TOCKI
– Permite definir se o incremento ocorrerá na descida ou subida do sinal de entrada OPTION_REG<TOSE>
» 0 – descida
» 1 - subida
•
TMR0L (timer0 low byte register)
•
TMR0H (timer0 high byte register)
•
T0CON (Timer0 control register)
Operação
•
Quando ocorre overflow do Timer0, ou seja,
transições de 11111111 para 00000000, o bit
TMR0IF (bit 2) do registrador INTCON é setado
– Este bit deve ser manualmente resetado
– Este bit deve ser manualmente resetado
•
Exercício
– Utilizar os timers e duas interrupções para
controlar a frequencia de leitura dos botões e a frequencia do buzzer
•
Exercício
– Com os exemplos práticos de acesso as portas de I/O e implementação dos timer crie uma aplicação para apresentaçã dos dados contador no display para apresentaçã dos dados contador no display de 7 segmentos.
– O display de 7 segmentos está ligado ao PORTD do PIC 18F452.
Bibliografia Básica
• PEREIRA, F. Microcontroladores PIC: programação em C 5.ed. São Paulo, Érica, 2006.
• SOUZA, V. A. Projetando com os microcontoladores
da família PIC 18 - uma nova percepção. São Paulo, da família PIC 18 - uma nova percepção. São Paulo,
Ensino Profissional, 2007.
• ZANCO, W. S. Microcontroladores PIC: Técnicas de software e hardware para projetos de circuitos
Bibliografia Complementar
• SILVA, R. A. Programando microcontroladores PIC - linguagem C. São Paulo, Ensino Profissional, 2006.
• MORENO, E. D.; PENTEADO, C. G. & RODRIGUES, A. C. Microcontroladores