Tássio Borges Departamento de Engenharia Elétrica

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