View
107
Download
3
Category
Preview:
Citation preview
MicrocontroladoresPIC
Tássio BorgesDepartamento de Engenharia Elétrica
Um microcontrolador difere de um microprocessador em vários aspectos. Primeiro e o mais importante, é a sua funcionalidade. Para que um microprocessador possa ser usado, outros componentes devem-lhe ser adicionados, tais como memória e componentes para receber e enviar dados. Em resumo, isso significa que o microprocessador é o verdadeiro coração do computador. Por outro lado, o microcontrolador foi projetado para ter tudo num só. Nenhuns outros componentes externos são necessários nas aplicações, uma vez que todos os periféricos necessários já estão contidos nele. Assim, nós poupamos tempo e espaço na construção dos dispositivos.
Introdução
Memórias◦ RAM◦ ROM◦ EEPROM◦ Flash
Unidade Central de Processamento (CPU) Interface de Entrada e Saída (I/O) Comunicação Serial / USB / SPI / ZigBee Temporizador Watchdog Modulador de Largura de Pulso (PWM) Conversor Analógico – Digital (ADC)
Periféricos do PIC
RAM◦ É a memória de dados do PIC. É apagada se o PIC for
desligado. FLASH
◦ É um tipo de memória de programa do PIC, pode ser reescrita quase que infinitamente.
ROM◦ Outro tipo de memória de programa do PIC que só pode
ser gravada uma vez EEPROM
Outro tipo de memória que pode ser de dados ou de programa do PIC, mas esse tipo de memória não se apaga com o desligamento do microcontrolador.
Memórias
CPU◦ Na Unidade de processamento Central são
processador todos os dados do microcontrolador, como operações lógicas e matemáticas.
Entrada e Saída◦ A interface de entrada e saída do
microcontrolador são os pinos.
CPU e I/O
Os microcontroladores da família PIC possuem protocolos de comunicação disponíveis para o programador. Alguns são:◦ Serial (RS232)◦ USB◦ SPI (Serial Peripheral Interface)◦ Ethernet◦ ZigBee (IEEE 802.15.4)
Comunicação
O temporizador é incrementado a cada intervalo predefinido de tempo.
O watchdog é um temporizador de uso específico, pois ele só pode ser usado para reiniciar o microcontrolador no caso em que o tempo de execução do programa seja maior que o tempo definido pelo watchdog.
EXEMPLO: Ao programar um microcontrolador o programador define o watchdog para 128ms, que é o tempo aproximado da execução do programa, porém o programa trava e quando o watchdog conta um valor superior a 128ms ele reinicia o microcontrolador.
Temporizador e Watchdog
Modulação por Largura de pulso
PWM
Conversor analógico – digital◦ Os dados presentes na natureza são analógicos,
porém o microcontrolador só consegue processar dados digitais.
◦ A solução é converter os dados de natureza analógica em dados digitais para que o microcontrolador possa entender.
◦ Isso vale para temperatura, tensão, velocidade.
ADC
Para que o PIC funcione é necessário um sistema de oscilação para criar o CLOCK do sistema.
O clock do sistema é gerado na maioria dos casos por um cristal oscilador.
O clock não é o inverso dafrequência de oscilação.
Oscilador
Compiladores principais:◦ PIC – C (CCS)◦ Hi-Tech C (Hi-Tech)◦ C18,C32 (Microchip)◦ MikroC (mikroElektronika)
Programação em C
PIC C
Para programar o PIC no PIC – C é necessário definir qual é o microcontrolador.◦ Exemplo: PIC16F877A
Então podemos partir para a programação.
Programação
Na linha 1, colocamos o arquivo que contém as definições do PIC.Na linha 2, é definido a utilização do ADC do PIC com 8 bits de resolução.Na linha 3 é colocado o clock do cristal utilizado, nesse caso é de 4MHzNa linha 4 são definidos os fuses do microcontrolador.
Fuses do PIC16F877A
Fuses de Cristal:◦ LP (Low Power - <200KHz )◦ XT (Cristal - <= 4MHz)◦ HS (High Speed - > 4MHz)
Fuses Alimentação: PUT (Power Up Time) BROWNOUT (Reset por Brown Out)
FUSES
Brown Out
O Brownout ocorre quando a tensão de alimentação cai para abaixo do nível mínimo.Caso 1: Queda gradual.Caso 2: Ruídos.
#include <16f877.h> // identifica microcontrolador alvo#device ADC=10 // define AD para 10 bits, variando de 0 a 1023#use delay (clock=4000000) // <- define cristal para 4Mhz. Para outros valores, mude e
recompile.
main() // função principal { output_a(0); // desliga toda PORTA output_b(0); // desliga toda PORTB output_c(0); // desliga toda PORTC output_d(0); // desliga toda PORTD while(1) // para repetir bloco. Laço infinito. { output_high(pin_B0); // ativa pino B0 delay_ms(500); // tempo de 500 ms output_low(pin_B0); // desativa pino B0 delay_ms(500); // tempo de 500 ms } }
Exemplo de programaçãoPiscar um LED
Circuito para montagem
Pinos do PIC16F877A
#include <16f877.h> // identifica microcontrolador alvo#device ADC=10 // define AD para 10 bits, variando de 0 a 1023#use delay (clock=4000000) // <- define cristal para 4Mhz. Para outros valores, mude e
recompile.
main() // função principal { output_a(0); // desliga toda PORTA output_b(0); // desliga toda PORTB output_c(0); // desliga toda PORTC output_d(0); // desliga toda PORTD while(1) // para repetir bloco. Laço infinito. {
if(input(pin_D2)) Se o pino D2 estiver em nível alto{
output_high(pin_B0); // ativa pino B0 delay_ms(500); // tempo de 500 ms output_low(pin_B0); // desativa pino B0 delay_ms(500); // tempo de 500 ms
}}
}
Programa para entradaBotão acionando LED
NUNCA esqueça o MCRL! NUNCA ligue o microcontrolador sem antes
verificar se a alimentação está correta! SEMPRE utilize resistores para limitar
corrente. SEMPRE utilize o manual do PIC para não
terminar por queimar o circuito. Verifique as correntes suportadas pelo seu
microcontrolador
Dicas importante
Recommended