Está en la 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.

20

Microcontroladores e FPGAs

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.

24

Microcontroladores e FPGAs

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.

26

Microcontroladores e FPGAs

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:

28
1. Timer2 zerado.

Microcontroladores e FPGAs

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.

También podría gustarte