Você está na página 1de 13

Microcontroladores

e FPGAs
Aplicaes em Automao
Edward David Moreno Ordonez
Cesar Giacomini Penteado
Alexandre Csar Rodrigues da Silva

Novatec Editora

Captulo 1
Microcontrolador PIC16F628, da
Microchip

Este captulo apresenta o microcontrolador PIC 16F628, da Microchip, o qual bem-difundido, tem baixo custo e bastante empregado em projetos de automao nos mercados
brasileiro e mundial. Alm do mais, enfatiza-se um estudo de seus osciladores, modos
de reset, interrupes, perifrico CCP (Capture/Compare/PWM) e Timers.

1.1 Principais Caractersticas do Microcontrolador PIC16F628


O PIC 16F628 [PIC,1999] um microcontrolador seguro, tem boa imunidade interferncia
eletromagntica e ao rudo na alimentao [CABRAL, 2001], dispe de mecanismos de
proteo capazes de ressetar todos os blocos internos, oscilador interno calibrvel por software, memria de programa FLASH, uma CPU RISC de alta performance e outras valiosas
caractersticas que tornaram este chip um sucesso de venda para sistemas embarcados.
Os barramentos de dados e instrues so implementados individualmente, integrando a arquitetura Harvard [PATTERSON, 1994; HINTZ, 1992], permitem palavras de
programa de 14 e de 8 bits de dados. Sua CPU possui dois estgios de pipeline e contm
somente 35 instrues, as quais, em sua maioria, pode ser executada em um nico ciclo
(at 200ns em 20Mhz), com exceo das instrues de desvios (branchs), que precisam
de dois ciclos para completar. Apresenta tambm capacidade de interrupo, 16 registradores especiais para controle do hardware interno, oito nveis de pilha e modos de
endereamento direto, indireto e relativo.
Um diagrama de blocos que representa a arquitetura interna do PIC 16F62X pode ser
visualizado na Figura 1.1, a qual apenas representa a estrutura de ligao entre os vrios
registradores e os blocos internos, pois, importante destacar, que, na realidade, alguns
deles no so implementados fisicamente: so endereos ou conjuntos de endereos da
memria RAM interna.
18

Captulo 1 Microcontrolador PIC16F628, da Microchip

19

O registrador FSR (File Select Register) utilizado para o endereamento indireto


da memria de programa; o registrador de STATUS, que armazena estado aritmtico da
ULA, o estado do reset e o banco de memria RAM selecionado; a pilha de oito nveis
(oito registradores agrupados, visualizados e acessados como uma pilha) e o prprio PC
(Program Counter) so endereos especficos nesta memria RAM.

Figura 1.1 Arquitetura interna do microcontrolador PIC 16F628 [PIC, 1999].

Dois outros mdulos importantes so as memrias FLASH e EEPROM. A primeira


destina-se a armazenar o cdigo-fonte do programa a ser executado. J a segunda, objetiva
armazenar variveis definidas pelo programador para o controle e o restabelecimento do
programa, caso ocorra falta de energia eltrica. As duas memrias so no-volteis, ou seja,
no perdem seus dados na falta de energia externa. No PIC 16F628, possvel atualizar
(regravar) os dados da memria FLASH em at 1.000 vezes, permitindo que o programador
realize at 1.000 correes no programa principal. Ao centro da Figura 1.1, esto representados todos os perifricos responsveis por inicializar corretamente o chip, monitorar
sua alimentao e a correta execuo do programa-fonte. Tambm possvel visualizar o
importante mdulo gerador de Timing e as portas de E/S, PORTA e PORTB.

Microcontroladores e FPGAs

20

Na parte inferior da mesma figura, encontram-se os perifricos que caracterizam o


PIC: o comparador analgico, os trs Timers, o mdulo CCP (Capture/Compare/PWM)
e a USART.
O mdulo Instruction Decode & Control e o ULA so componentes presentes em
qualquer microcontrolador. Todos esses registradores e mdulos, bem como suas principais funes, sero comentados a seguir.

1.1.1 Principais Caractersticas dos Perifricos do PIC 16F628


As caractersticas mais importantes que o PIC 16F628 possui so:
Arquitetura Harvard que prov dois barramentos separados: um, de 14 bits para
instrues de programa, e outro de 8 bits para manipulao de dados.
Quinze (15) pinos de E/S com controle individual de direo.
Um mdulo com dois comparadores analgicos, um mdulo programvel de
referncia de voltagem interna (VreF), entrada programvel entre as portas do
dispositivo e uma voltagem de referncia interna, acesso externo sada do comparador; dois Timers/contadores de 8 bits cada com prescaler programvel; um
Timer/contador de 8 bits com registrador de perodo, prescaler e postscaler.
Um mdulo, chamado de CCP (Capture/Compare/PWM), capaz de executar trs
funcionalidades, no simultneas, que so:
captura do perodo de transio entre estados de um nico pino, com 16 bits
e resoluo mxima de 12,5 ns;
comparao entre o perodo de transio entre estados de um nico pino e
uma constante de 16 bits, previamente estabelecida;
produo de um pulso de PWM (Pulse Wide Modulation), com 10 bits de resoluo.
Um mdulo de recepo/transmisso sncrona/assncrona universal (USART/
SCI).
Quatro opes de oscilador : XT, HS, LP e interno.
Programao serial in-circuit via dois pinos.
Memria FLASH de 2048 x 14.
Memria RAM de 224 x 8 e
Memria EEPROM de 128 x 8.

Captulo 1 Microcontrolador PIC16F628, da Microchip

21

Circuitos especiais para lidar com a necessidade de aplicaes de tempo real so


conjuntos presentes nos microcontroladores PIC, dispostos parte da CPU. A famlia PIC
16F628 possui caractersticas voltadas a maximizar a confiana do sistema, minimizar
custos por meio da eliminao de componentes externos, prover economia de energia
e oferecer proteo de cdigo.
Estas caractersticas ou circuitos so:
1. Seleo de oscilador (OSC selection).
2. Vrias fontes e opes de reset POR (Power-on Reset), PWRT (Power-up Timer),

OST (Oscillator Start-Up Timer), BOD (Brown-out Reset).


3. Dez fontes de interrupes.
4. WDT (Watchdog Timer).
5. SLEEP.
6. CCP.
7. Timers.

Nas prximas sees, ser apresentada uma maior descrio de algumas destas
unidades.

1.2 Seleo de Osciladores do PIC 16F628


O PIC 16F628 pode operar em oito diferentes opes de oscilador. O programador pode
configurar trs bits, a fim de selecionar um dentre esses oito modos, que podem ser LP
(Low Power Crystal), XT (Crystal/Resonator), HS (High Speed Crystal/Resonator), dois
modos ER (External Resistor), dois modos INTRC (Internal Resistor/Capacitor) e EC
(External Clock In).
Nos modos XT, LP ou HS, um cristal ou um ressonador cermico conectado aos
pinos OSC1 e OSC2 para estabelecer a oscilao. Nesses pinos tambm possvel que
o dispositivo receba um clock externo diretamente no pino OSC1. A Figura 1.2 mostra
como controlar a freqncia de oscilao do microcontrolador.

(A) OSC Modo LP, XP ou HS

(B) OSC Modo com resistor

Figura 1.2 Modos de controle de freqncia de oscilao no PIC16F628.

22

Microcontroladores e FPGAs

A Figura 1.2 ilustra, em (A), os componentes externos necessrios para controlar a


freqncia nos modos LP, XP ou HS e em (B), o modulo ER, com um resistor conectado
ao PIC.
O modo de clock ER com resistor externo recomendado para aplicaes no-sensveis temporizao e oferece economia adicional de custo. Somente um componente
externo, um resistor ligado ao Vss, necessrio para fixar a freqncia do oscilador interno.
O resistor controla a freqncia de oscilao de acordo com a corrente DC que flui por
intermdio do mesmo. Alm do valor da resistncia imposta pelo resistor, a freqncia
final obtida ir variar de um dispositivo para outro (cada PIC tem um comportamento
ligeiramente diferente em relao a um mesmo valor de resistor), em funo da tenso
de alimentao e da temperatura.
Para valores de resistncia abaixo de 38K, o oscilador pode se tornar instvel ou parar
completamente. J para valores acima de 1M, o oscilador torna-se sensvel ao rudo e
umidade. Ento, para o uso de ER, recomenda-se para o resistor valores entre 38K para
a mnima oscilao, 10kHz, at 1M para a mxima oscilao, 8MHz, ressaltando que a
aplicao no deve ser sensvel temporizao.
O modo ER possui duas opes que controlam o pino no utilizado OSC2: a primeira
permite que esse pino seja usado como uma porta normal de E/S, enquanto a segunda
configura o pino como sada de clock interno (valor dividido por 4), para fins de teste
ou de sincronizao com outros dispositivos.
No modo INTRC, um oscilador interno prov uma freqncia de operao nominal
de 4MHz (com alimentao em 5V e temperatura de 25C). Este modo de clock excelente, pois dispensa componentes externos, libera os pinos de clock para serem utilizados
como E/S normal e oferece tima estabilidade de freqncia de operao. Neste modo,
possvel calibrar via software uma pequena variao na freqncia obtida, a qual poder
estar entre 3.65 e 4.28 MHz.
Existe ainda uma ltima configurao do oscilador interno, que capaz de prover
uma sada de clock de forma similar configurao ER: o pino OSC2. utilizado para
sada de uma freqncia quatro vezes menor que o clock interno (no caso, de 4MHz), para
simples aferio do valor ou para propsito de sincronismo com outros dispositivos.

1.3 Modos de Reset do PIC 16F628


O microcontrolador PIC dispe de quatro fontes de reset, as quais sero descritas a seguir.
Um reset uma ao em que o sistema inicializado e os registradores importantes so
levados a valores conhecidos, de forma que o processamento comece ou recomece de
forma confivel. Alguns registradores no so afetados por qualquer condio de reset;
seus estados tambm no so afetados na inicializao e em qualquer outra forma de
reset: so registradores que determinam a natureza de um reset.

Captulo 1 Microcontrolador PIC16F628, da Microchip

23

A Figura 1.3 ilustra um diagrama de blocos simplificado do circuito interno de reset do


PIC. Na parte superior esquerda, possvel visualizar os componentes mais importantes do
circuito interno de reset: a entrada de reset externo, no pino MCLR; os mdulos Watchdog
Timer, Power-on Reset e Brown-out Detect, estes dois ltimos responsveis pela monitorao
das condies de alimentao do chip. J na parte inferior esquerda, esto representados
os circuitos de delay (atraso) do clock externo proveniente do pino OSC1/CLKIN. Todos
esses mdulos so finalmente conectados a um latch, cuja funo ressetar (inicializar) o
microcontrolador PIC em todos os momentos apropriados, os quais so indicados pelos
mdulos anteriores.
A funo de cada um desses mdulos, bem como uma descrio de seu funcionamento, comentada nas prximas subsees.

Figura 1.3 Circuito interno de reset do PIC 16F628 [PIC, 1999].

1.3.1 POR (Power-On Reset)


O POR (Power-On Reset) um reset do sistema que ocorre sempre que o PIC energizado. O reset POR segura o chip (no permite qualquer processamento) at que a tenso
de alimentao tenha alcanado um nvel suficiente que garanta o correto funcionamento do PIC. Para se obter vantagem do POR, necessrio interligar o pino MCLR
alimentao por meio de um resistor, o que eliminar componentes externos em geral
necessrios para realizar o Power-On Reset. O POR no produz reset interno quando a
tenso de alimentao declina.

Microcontroladores e FPGAs

24

Quando o dispositivo inicia sua operao normal (sai da condio de reset), os parmetros de operao (voltagem, freqncia, temperatura etc.) precisam estar seguros.
Se essa condio no for atingida, o PIC deve ser segurado no reset, ou seja, a funo
do POR.

1.3.2 BOD (Brown-Out Detect)


O Brown-Out Detect, mais conhecido pelos usurios do PIC como BOD, um dos mais
importantes mecanismos para garantir a estabilidade e a confiabilidade da execuo
correta de um programa. indicado principalmente para sistemas que permanecem
ativos ininterruptamente, aguardando comandos externos, executam suas funes e
retornam espera de outros comandos.
O BOD monitora a tenso de alimentao e, caso esta oscile descendo a nveis crticos
um limiar de tenso, no qual o fabricante no garante o correto funcionamento do
chip um reset gerado. Esse reset s finaliza depois que a alimentao retornar a um
nvel seguro, onde o PIC poder voltar ao processamento com segurana.
A famlia PIC 16F62X possui Brown-Out Detect. Se a tenso de alimentao VDD
cair abaixo de 4.0V, o BOD ressetar o chip. Seja qual for a fonte de reset (Power-on,
Brown-out, Watchdog etc.), o chip permanecer em reset at que VDD retorne acima
de BVDD. O PWRT (Power-up Timer) ser chamado e manter o chip em reset por
72ms (milissegundos). Se, dentro deste perodo de 72ms, o VDD cair abaixo de BVDD,
o Power-up Timer ser zerado e novamente manter o chip em reset por mais 72ms.
Com esse mecanismo consegue-se garantir que o chip s retorne ao seu processamento
depois de garantida a estabilidade da tenso. A Figura 1.4 ilustra as ocorrncias de reset
em funo da alimentao.

Figura 1.4 Ocorrncias de reset circuito BOD, no PIC16F628 [PIC, 1999].

O circuito BOD possui um bit de configurao, responsvel por habilitar ou no o


BOD. Esse bit denominado BODEN.

Captulo 1 Microcontrolador PIC16F628, da Microchip

25

1.3.3 OST (Oscillator Start-up Timer)


O Oscillator Start-up Timer, chamado de OST, prov um atraso de 1.024 ciclos do oscilador
(presente na porta OSC1) aps o perodo de 72ms de expirao do PWRT. Esse atraso
assegura que o cristal oscilador ou o ressonador tenha iniciado e esteja estabilizado,
garantindo que a CPU inicie corretamente suas atividades.
O OST time-out chamado somente nos modos de oscilador XT, LP e HS e tambm
no Power-on Reset ou Wake-up from Sleep.

1.3.4 WDT (Watchdog Timer)


O Watchdog Timer (co de guarda ou melhor conhecido como WDT) um contador livre que opera sobre um oscilador interno RC (Resistor Capacitor) e no requer
nenhum componente externo. Este oscilador RC separado do oscilador ER presente
no pino de CLKIN. Isto significa que o WDT funcionar at mesmo se o clock externo
presente em OSC1 e OSC2 parar.
Durante a operao normal, se o contador Watchdog chegar ao fim de sua contagem,
um reset no microcontrolador ser gerado. O tempo de contagem do Watchdog varia
de 18ms at 2.3 segundos de acordo com um prescaler presente no mdulo Watchdog
Timer.

1.4 Interrupes do PIC 16F628


O PIC 16F62X possui 10 fontes de interrupes, a saber:
1. Interrupo externa proveniente do pino RB0/INT.
2. Interrupo por estouro do TIMER1.
3. Interrupo por igualdade de valor entre TIMER2 e outro valor previamente es-

tabelecido (no CCP, lembrar que CCP Capture/Compare/PWM mdulo que


faz a captura comparao e operao de PWM). PWM significa Pulse Width
Modulation, modulao baseada em largura do pulso.
4. Interrupo por estouro do TIMER0.
5. Interrupo do comparador analgico.
6. Interrupo da USART (interface de comunicao).
7. Interrupo do mdulo CCP.
8 10. Interrupes por mudanas de estado na porta B, nos pinos RB4 ao RB7.

Microcontroladores e FPGAs

26

Um registrador de controle de interrupes, o INTCON, armazena as requisies individuais de interrupes em bits sinalizadores (flag bits) e tambm responsvel por habilitar interrupes globais e individuais por meio de um bit, o GIE (INTCON<7>).
A Figura 1.5 ilustra o mecanismo interno de captura de interrupes do PIC. Todas
as siglas com a terminao F (exemplo: TMR1F) so representaes de ligaes entre o
mecanismo de reset e o flag do dispositivo que causou a interrupo na CPU. J as siglas
com a terminao E, so os bits que habilitam ou no a interrupo correspondente.

Figura 1.5 Estrutura de obteno de interrupes do PIC 16F628 [PIC, 1999].

O bit GIE, presente no INTCON, habilita as interrupes globais, alm de ser limpo
no reset. Interrupes individuais (siglas com a terminao E) podem ser habilitadas
ou desabilitadas em seu respectivo bit no INTCON.

1.5 Mdulo CCP (Capture/Compare/PWM)


O mdulo CCP (Capture/Compare/PWM) contm um registrador de 16bits que pode
operar como um registrador de captura, comparao ou como um PWM Duty Cycle.
Este importante mdulo monitora eventos ocorridos na porta RB3 e pode ser configurado para realizar as seguintes quatro funes:
1. Capturar a largura de um pulso entre todas as subidas (rising edge) ou descidas

(falling edge) deste.


2. Capturar a largura de um pulso, considerando 4 ou 16 subidas do mesmo.
3. Compara uma largura de pulso com um segundo valor previamente estabeleci-

do.
4. Gera uma sada de pulsos com modulao de largura (PWM).

A funo do mdulo CCP definida pelos bits de configurao de seu registrador


de controle, o CCP1COM.

Captulo 1 Microcontrolador PIC16F628, da Microchip

27

A Figura 1.6 ilustra, em (a), o mdulo CCP configurado em modo de captura e em


(b), o mdulo CCP configurado em modo comparador.

(A) CCP em modo de captura

(B) CCP em modo de comparao

Figura 1.6 Modos de operao do perifrico CCP do PIC16F628 [PIC, 1999].

No modo de captura, o registrador CCPR1 captura o valor de 16 bits do Timer1 quando


ocorre um evento no pino RB3, conforme j foi comentado. No modo de comparao,
o valor de 16 bits anteriormente setado constantemente comparado com o valor
corrente em Timer1. Quando os valores so iguais, um bit de flag, o CCP1IF setado
para que ocorra uma interrupo (se esta interrupo estiver habilitada por CCP1IE)
no processamento da CPU.
O Timer1 precisa estar operando em modo timer ou contador sincronizado para
que o mdulo CCP seja capaz de capturar larguras de pulso. Em modo assncrono, a
operao de captura no funcionar.
A terceira funo do mdulo CCP a produo de um pulso de PWM para utilizao externa ao chip. No modo PWM, o CCP pode produzir pulsos com at 10 bits de
resoluo. A Figura 1.7 ilustra em (a) a configurao interna do CCP para produo de
PWM e em (b), as especificaes do pulso gerado nesse modo.

(A) CCP em modo PWM

(B) Parmetros para obter a forma de onda

Figura 1.7 Terceira funo (PWM) do mdulo CCP do PIC16F628 [PIC, 1999].

O perodo do pulso de PWM especificado por uma escrita no registrador PR2.


Quando Timer2 igual ao PR2 ocorrem os seguintes eventos no prximo ciclo de incremento:

Microcontroladores e FPGAs

28
1. Timer2 zerado.

2. O pino CCP1 setado (a exceo quando o valor do duty cycle for igual a 0%).
3. O PWM duty cycle transferido do CCPR1L ao CCPR1H.

O PWM duty cycle especificado por uma escrita no registrador CCPR1L e no


CCP1CON<5:4>. Se o PWM duty cycle for maior que o perodo, o pino CPP1 nunca
ser limpo (zerado). Neste modo de gerao de PWM possvel gerar vrias freqncias
diferentes, mantendo a propriedade de alterar o duty cycle.

1.6 Timers Temporizadores


O microcontrolador PIC16F628 possui trs Timers. O Timer0 apresenta as seguintes caractersticas: (a) pode operar como um timer ou um contador de 8 bits; (b) possvel ler ou
escrever valores em seu registrador; (c) prescaler de 8 bits programvel via software; (d) gera
interrupo no estouro de FFH para 00H e (e) tem seleo de borda para clock externo.
A Figura 1.8 mostra a estrutura de apoio para o Timer0, possibilitando a identificao
do bit (T0SE) de seleo de borda (falling ou rising edge), o prescaler, que nada mais
do que um divisor de clock, o prprio Timer0 e seu bit de interrupo (T0IF).

Figura 1.8 Estrutura do Timer0 [PIC, 1999].

O Timer1 e o Timer2 so registradores de 16 e 8 bits, respectivamente, e possuem


caractersticas equivalentes ao Timer0, porm so compartilhados com o mdulo CCP,
o que causa incmodo aos programadores quando necessria a existncia de funes
independentes dentre tais mdulos.

Captulo 1 Microcontrolador PIC16F628, da Microchip

29

1.7 Modo SLEEP


O modo SLEEP destina-se a oferecer uma maneira de operao na qual o consumo
de energia do chip extremamente baixo. Operando neste modo, e com o mnimo de
perifricos em funcionamento, o consumo tpico do microcontrolador menor que
1A (microampere, unidade de fluxo eltrico). Mesmo nesse consumo mnimo, o PIC
capaz de monitorar eventos em determinadas portas de E/S, alm de receber e tratar
interrupes.
Em modo SLEEP, o microcontrolador entra em standby e pode retornar ao modo de
operao normal (Wakeup) por meio de um reset externo, estouro do Watchdog Timer
ou por uma fonte de interrupes.

Você também pode gostar