Transcript
Page 1: Microcontroladores e FPGAs - Martins Fontes · 1.3 Modos de Reset do PIC 16F628 O microcontrolador PIC dispõe de quatro fontes de reset, as quais serão descritas a seguir. Um reset

Microcontroladores e FPGAs

Aplicações em Automação

Edward David Moreno OrdonezCesar Giacomini Penteado

Alexandre César Rodrigues da Silva

Novatec Editora

Page 2: Microcontroladores e FPGAs - Martins Fontes · 1.3 Modos de Reset do PIC 16F628 O microcontrolador PIC dispõe de quatro fontes de reset, as quais serão descritas a seguir. Um reset

18

Capítulo 1Microcontrolador PIC16F628, da Microchip

Este capítulo apresenta o microcontrolador PIC 16F628, da Microchip, o qual é bem-di-fundido, tem baixo custo e é bastante empregado em projetos de automação nos mercados brasileiro e mundial. Além do mais, enfatiza-se um estudo de seus osciladores, modos de reset, interrupções, periférico CCP (Capture/Compare/PWM) e Timers.

1.1 Principais Características do Microcontrolador PIC16F628

O PIC 16F628 [PIC, 1999] é um microcontrolador seguro, tem boa imunidade à interferência eletromagnética e ao ruído na alimentação [CABRAL, 2001], dispõe de mecanismos de proteção capazes de ressetar todos os blocos internos, oscilador interno calibrável por sof-tware, memória de programa FLASH, uma CPU RISC de alta performance e outras valiosas características que tornaram este chip um sucesso de venda para sistemas embarcados.

Os barramentos de dados e instruções são implementados individualmente, inte-grando a arquitetura Harvard [PATTERSON, 1994; HINTZ, 1992], permitem palavras de programa de 14 e de 8 bits de dados. Sua CPU possui dois estágios de pipeline e contém somente 35 instruções, as quais, em sua maioria, pode ser executada em um único ciclo (até 200ns em 20Mhz), com exceção das instruções de desvios (branchs), que precisam de dois ciclos para completar. Apresenta também capacidade de interrupção, 16 regis-tradores especiais para controle do hardware interno, oito níveis de pilha e modos de endereçamento 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 ligação entre os vários registradores e os blocos internos, pois, é importante destacar, que, na realidade, alguns deles não são implementados fisicamente: são endereços ou conjuntos de endereços da memória RAM interna.

Page 3: Microcontroladores e FPGAs - Martins Fontes · 1.3 Modos de Reset do PIC 16F628 O microcontrolador PIC dispõe de quatro fontes de reset, as quais serão descritas a seguir. Um reset

19Capítulo 1 • Microcontrolador PIC16F628, da Microchip

O registrador FSR (File Select Register) é utilizado para o endereçamento indireto da memória de programa; o registrador de STATUS, que armazena estado aritmético da ULA, o estado do reset e o banco de memória RAM selecionado; a pilha de oito níveis (oito registradores agrupados, visualizados e acessados como uma pilha) e o próprio PC (Program Counter) são endereços específicos nesta memória RAM.

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

Dois outros módulos importantes são as memórias FLASH e EEPROM. A primeira destina-se a armazenar o código-fonte do programa a ser executado. Já a segunda, objetiva armazenar variáveis definidas pelo programador para o controle e o restabelecimento do programa, caso ocorra falta de energia elétrica. As duas memórias são não-voláteis, ou seja, não perdem seus dados na falta de energia externa. No PIC 16F628, é possível atualizar (regravar) os dados da memória FLASH em até 1.000 vezes, permitindo que o programador realize até 1.000 correções no programa principal. Ao centro da Figura 1.1, estão represen-tados todos os periféricos responsáveis por inicializar corretamente o chip, monitorar sua alimentação e a correta execução do programa-fonte. Também é possível visualizar o importante módulo gerador de Timing e as portas de E/S, PORTA e PORTB.

Page 4: Microcontroladores e FPGAs - Martins Fontes · 1.3 Modos de Reset do PIC 16F628 O microcontrolador PIC dispõe de quatro fontes de reset, as quais serão descritas a seguir. Um reset

20 Microcontroladores e FPGAs

Na parte inferior da mesma figura, encontram-se os periféricos que caracterizam o PIC: o comparador analógico, os três Timers, o módulo CCP (Capture/Compare/PWM) e a USART.

O módulo Instruction Decode & Control e o ULA são componentes presentes em qualquer microcontrolador. Todos esses registradores e módulos, bem como suas prin-cipais funções, serão comentados a seguir.

1.1.1 Principais Características dos Periféricos do PIC 16F628

As características mais importantes que o PIC 16F628 possui são:

• Arquitetura Harvard que provê dois barramentos separados: um, de 14 bits para instruções de programa, e outro de 8 bits para manipulação de dados.

• Quinze (15) pinos de E/S com controle individual de direção.

• Um módulo com dois comparadores analógicos, um módulo programável de referência de voltagem interna (VreF), entrada programável entre as portas do dispositivo e uma voltagem de referência interna, acesso externo à saída do com-parador; dois Timers/contadores de 8 bits cada com prescaler programável; um Timer/contador de 8 bits com registrador de período, prescaler e postscaler.

• Um módulo, chamado de CCP (Capture/Compare/PWM), capaz de executar três funcionalidades, não simultâneas, que são:

• captura do período de transição entre estados de um único pino, com 16 bits e resolução máxima de 12,5 ns;

• comparação entre o período de transição entre estados de um único pino e uma constante de 16 bits, previamente estabelecida;

• produção de um pulso de PWM (Pulse Wide Modulation), com 10 bits de re-solução.

• Um módulo de recepção/transmissão síncrona/assíncrona universal (USART/SCI).

• Quatro opções de oscilador : XT, HS, LP e interno.

• Programação serial in-circuit via dois pinos.

• Memória FLASH de 2048 x 14.

• Memória RAM de 224 x 8 e

• Memória EEPROM de 128 x 8.

Page 5: Microcontroladores e FPGAs - Martins Fontes · 1.3 Modos de Reset do PIC 16F628 O microcontrolador PIC dispõe de quatro fontes de reset, as quais serão descritas a seguir. Um reset

21Capítulo 1 • Microcontrolador PIC16F628, da Microchip

Circuitos especiais para lidar com a necessidade de aplicações de tempo real são conjuntos presentes nos microcontroladores PIC, dispostos à parte da CPU. A família PIC 16F628 possui características voltadas a maximizar a confiança do sistema, minimizar custos por meio da eliminação de componentes externos, prover economia de energia e oferecer proteção de código.

Estas características – ou circuitos – são:

1. Seleção de oscilador (OSC selection).

2. Várias fontes e opções de reset – POR (Power-on Reset), PWRT (Power-up Timer), OST (Oscillator Start-Up Timer), BOD (Brown-out Reset).

3. Dez fontes de interrupções.

4. WDT (Watchdog Timer).

5. SLEEP.

6. CCP.

7. Timers.

Nas próximas seções, será apresentada uma maior descrição de algumas destas unidades.

1.2 Seleção de Osciladores do PIC 16F628

O PIC 16F628 pode operar em oito diferentes opções de oscilador. O programador pode configurar três 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 cerâmico é conectado aos pinos OSC1 e OSC2 para estabelecer a oscilação. Nesses pinos também é possível que o dispositivo receba um clock externo diretamente no pino OSC1. A Figura 1.2 mostra como controlar a freqüência de oscilação do microcontrolador.

(A) OSC Modo LP, XP ou HS (B) OSC Modo com resistor

Figura 1.2 – Modos de controle de freqüência de oscilação no PIC16F628.

Page 6: Microcontroladores e FPGAs - Martins Fontes · 1.3 Modos de Reset do PIC 16F628 O microcontrolador PIC dispõe de quatro fontes de reset, as quais serão descritas a seguir. Um reset

22 Microcontroladores e FPGAs

A Figura 1.2 ilustra, em (A), os componentes externos necessários para controlar a freqüência 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 aplicações não-sen-síveis à temporização e oferece economia adicional de custo. Somente um componente externo, um resistor ligado ao Vss, é necessário para fixar a freqüência do oscilador interno. O resistor controla a freqüência de oscilação de acordo com a corrente DC que flui por intermédio do mesmo. Além do valor da resistência imposta pelo resistor, a freqüência final obtida irá variar de um dispositivo para outro (cada PIC tem um comportamento ligeiramente diferente em relação a um mesmo valor de resistor), em função da tensão de alimentação e da temperatura.

Para valores de resistência abaixo de 38K, o oscilador pode se tornar instável ou parar completamente. Já para valores acima de 1M, o oscilador torna-se sensível ao ruído e à umidade. Então, para o uso de ER, recomenda-se para o resistor valores entre 38K para a mínima oscilação, 10kHz, até 1M para a máxima oscilação, 8MHz, ressaltando que a aplicação não deve ser sensível à temporização.

O modo ER possui duas opções que controlam o pino não utilizado OSC2: a primeira permite que esse pino seja usado como uma porta normal de E/S, enquanto a segunda configura o pino como saída de clock interno (valor dividido por 4), para fins de teste ou de sincronização com outros dispositivos.

No modo INTRC, um oscilador interno provê uma freqüência de operação nominal de 4MHz (com alimentação em 5V e temperatura de 25ºC). Este modo de clock é exce-lente, pois dispensa componentes externos, libera os pinos de clock para serem utilizados como E/S normal e oferece ótima estabilidade de freqüência de operação. Neste modo, é possível calibrar via software uma pequena variação na freqüência obtida, a qual poderá estar entre 3.65 e 4.28 MHz.

Existe ainda uma última configuração do oscilador interno, que é capaz de prover uma saída de clock de forma similar à configuração ER: é o pino OSC2. É utilizado para saída de uma freqüência quatro vezes menor que o clock interno (no caso, de 4MHz), para simples aferição do valor ou para propósito de sincronismo com outros dispositivos.

1.3 Modos de Reset do PIC 16F628

O microcontrolador PIC dispõe de quatro fontes de reset, as quais serão descritas a seguir. Um reset é uma ação em que o sistema é inicializado e os registradores importantes são levados a valores conhecidos, de forma que o processamento comece ou recomece de forma confiável. Alguns registradores não são afetados por qualquer condição de reset; seus estados também não são afetados na inicialização e em qualquer outra forma de reset: são registradores que determinam a natureza de um reset.

Page 7: Microcontroladores e FPGAs - Martins Fontes · 1.3 Modos de Reset do PIC 16F628 O microcontrolador PIC dispõe de quatro fontes de reset, as quais serão descritas a seguir. Um reset

23Capítulo 1 • Microcontrolador PIC16F628, da Microchip

A Figura 1.3 ilustra um diagrama de blocos simplificado do circuito interno de reset do PIC. Na parte superior esquerda, é possível visualizar os componentes mais importantes do circuito interno de reset: a entrada de reset externo, no pino MCLR; os módulos Watchdog Timer, Power-on Reset e Brown-out Detect, estes dois últimos responsáveis pela monitoração das condições de alimentação do chip. Já na parte inferior esquerda, estão representados os circuitos de delay (atraso) do clock externo proveniente do pino OSC1/CLKIN. Todos esses módulos são finalmente conectados a um latch, cuja função é ressetar (inicializar) o microcontrolador PIC em todos os momentos apropriados, os quais são indicados pelos módulos anteriores.

A função de cada um desses módulos, bem como uma descrição de seu funciona-mento, é comentada nas próximas subseções.

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 é energi-zado. O reset POR segura o chip (não permite qualquer processamento) até que a tensão de alimentação tenha alcançado um nível suficiente que garanta o correto funciona-mento do PIC. Para se obter vantagem do POR, é necessário interligar o pino MCLR à alimentação por meio de um resistor, o que eliminará componentes externos em geral necessários para realizar o Power-On Reset. O POR não produz reset interno quando a tensão de alimentação declina.

Page 8: Microcontroladores e FPGAs - Martins Fontes · 1.3 Modos de Reset do PIC 16F628 O microcontrolador PIC dispõe de quatro fontes de reset, as quais serão descritas a seguir. Um reset

24 Microcontroladores e FPGAs

Quando o dispositivo inicia sua operação normal (sai da condição de reset), os pa-râmetros de operação (voltagem, freqüência, temperatura etc.) precisam estar seguros. Se essa condição não for atingida, o PIC deve ser segurado no reset, ou seja, a função do POR.

1.3.2 BOD (Brown-Out Detect)

O Brown-Out Detect, mais conhecido pelos usuários do PIC como BOD, é um dos mais importantes mecanismos para garantir a estabilidade e a confiabilidade da execução correta de um programa. É indicado principalmente para sistemas que permanecem ativos ininterruptamente, aguardando comandos externos, executam suas funções e retornam à espera de outros comandos.

O BOD monitora a tensão de alimentação e, caso esta oscile descendo a níveis críticos – um limiar de tensão, no qual o fabricante não garante o correto funcionamento do chip – um reset é gerado. Esse reset só finaliza depois que a alimentação retornar a um nível seguro, onde o PIC poderá voltar ao processamento com segurança.

A família PIC 16F62X possui Brown-Out Detect. Se a tensão de alimentação 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 período 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 tensão. A Figura 1.4 ilustra as ocorrências de reset em função da alimentação.

Figura 1.4 – Ocorrências de reset – circuito BOD, no PIC16F628 [PIC, 1999].

O circuito BOD possui um bit de configuração, responsável por habilitar ou não o BOD. Esse bit é denominado BODEN.

Page 9: Microcontroladores e FPGAs - Martins Fontes · 1.3 Modos de Reset do PIC 16F628 O microcontrolador PIC dispõe de quatro fontes de reset, as quais serão descritas a seguir. Um reset

25Capítulo 1 • Microcontrolador PIC16F628, da Microchip

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) após o período de 72ms de expiração 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 também no Power-on Reset ou Wake-up from Sleep.

1.3.4 WDT (Watchdog Timer)

O Watchdog Timer (“cão de guarda” – ou melhor conhecido como WDT) é um conta-dor livre que opera sobre um oscilador interno RC (Resistor – Capacitor) e não 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 operação 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 módulo Watchdog Timer.

1.4 Interrupções do PIC 16F628

O PIC 16F62X possui 10 fontes de interrupções, a saber:

1. Interrupção externa proveniente do pino RB0/INT.

2. Interrupção por estouro do TIMER1.

3. Interrupção por igualdade de valor entre TIMER2 e outro valor previamente es-tabelecido (no CCP, lembrar que CCP é Capture/Compare/PWM – módulo que faz a captura – comparação e operação de PWM). PWM significa Pulse Width Modulation, modulação baseada em largura do pulso.

4. Interrupção por estouro do TIMER0.

5. Interrupção do comparador analógico.

6. Interrupção da USART (interface de comunicação).

7. Interrupção do módulo CCP.

8 – 10. Interrupções por mudanças de estado na porta B, nos pinos RB4 ao RB7.

Page 10: Microcontroladores e FPGAs - Martins Fontes · 1.3 Modos de Reset do PIC 16F628 O microcontrolador PIC dispõe de quatro fontes de reset, as quais serão descritas a seguir. Um reset

26 Microcontroladores e FPGAs

Um registrador de controle de interrupções, o INTCON, armazena as requisições in-dividuais de interrupções em bits sinalizadores (flag bits) e também é responsável por ha-bilitar interrupções globais e individuais por meio de um bit, o GIE (INTCON<7>).

A Figura 1.5 ilustra o mecanismo interno de captura de interrupções do PIC. Todas as siglas com a terminação F (exemplo: TMR1F) são representações de ligações entre o mecanismo de reset e o flag do dispositivo que causou a interrupção na CPU. Já as siglas com a terminação E, são os bits que habilitam ou não a interrupção correspondente.

Figura 1.5 – Estrutura de obtenção de interrupções do PIC 16F628 [PIC, 1999].

O bit GIE, presente no INTCON, habilita as interrupções globais, além de ser limpo no reset. Interrupções individuais (siglas com a terminação E) podem ser habilitadas ou desabilitadas em seu respectivo bit no INTCON.

1.5 Módulo CCP (Capture/Compare/PWM)

O módulo CCP (Capture/Compare/PWM) contém um registrador de 16bits que pode operar como um registrador de captura, comparação ou como um PWM Duty Cycle.

Este importante módulo monitora eventos ocorridos na porta RB3 e pode ser con-figurado para realizar as seguintes quatro funções:

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 saída de pulsos com modulação de largura (PWM).

A função do módulo CCP é definida pelos bits de configuração de seu registrador de controle, o CCP1COM.

Page 11: Microcontroladores e FPGAs - Martins Fontes · 1.3 Modos de Reset do PIC 16F628 O microcontrolador PIC dispõe de quatro fontes de reset, as quais serão descritas a seguir. Um reset

27Capítulo 1 • Microcontrolador PIC16F628, da Microchip

A Figura 1.6 ilustra, em (a), o módulo CCP configurado em modo de captura e em (b), o módulo CCP configurado em modo comparador.

(A) CCP em modo de captura (B) CCP em modo de comparação

Figura 1.6 – Modos de operação do periférico 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 comparação, o valor de 16 bits – anteriormente setado – é constantemente comparado com o valor corrente em Timer1. Quando os valores são iguais, um bit de flag, o CCP1IF é setado para que ocorra uma interrupção (se esta interrupção estiver habilitada por CCP1IE) no processamento da CPU.

O Timer1 precisa estar operando em modo timer ou contador sincronizado para que o módulo CCP seja capaz de capturar larguras de pulso. Em modo assíncrono, a operação de captura não funcionará.

A terceira função do módulo CCP é a produção de um pulso de PWM para utiliza-ção externa ao chip. No modo PWM, o CCP pode produzir pulsos com até 10 bits de resolução. A Figura 1.7 ilustra em (a) a configuração interna do CCP para produção de PWM e em (b), as especificações do pulso gerado nesse modo.

(A) CCP em modo PWM (B) Parâmetros para obter a forma de onda

Figura 1.7 – Terceira função (PWM) do módulo CCP do PIC16F628 [PIC, 1999].

O período do pulso de PWM é especificado por uma escrita no registrador PR2. Quando Timer2 é igual ao PR2 ocorrem os seguintes eventos no próximo ciclo de in-cremento:

Page 12: Microcontroladores e FPGAs - Martins Fontes · 1.3 Modos de Reset do PIC 16F628 O microcontrolador PIC dispõe de quatro fontes de reset, as quais serão descritas a seguir. Um reset

28 Microcontroladores e FPGAs

1. Timer2 é zerado.

2. O pino CCP1 é setado (a exceção é 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 período, o pino CPP1 nunca será limpo (zerado). Neste modo de geração de PWM é possível gerar várias freqüências diferentes, mantendo a propriedade de alterar o duty cycle.

1.6 Timers – Temporizadores

O microcontrolador PIC16F628 possui três Timers. O Timer0 apresenta as seguintes carac-terísticas: (a) pode operar como um timer ou um contador de 8 bits; (b) é possível ler ou escrever valores em seu registrador; (c) prescaler de 8 bits programável via software; (d) gera interrupção no estouro de FFH para 00H e (e) tem seleção de borda para clock externo.

A Figura 1.8 mostra a estrutura de apoio para o Timer0, possibilitando a identificação do bit (T0SE) de seleção de borda (falling ou rising edge), o prescaler, que nada mais é do que um divisor de clock, o próprio Timer0 e seu bit de interrupção (T0IF).

Figura 1.8 – Estrutura do Timer0 [PIC, 1999].

O Timer1 e o Timer2 são registradores de 16 e 8 bits, respectivamente, e possuem características equivalentes ao Timer0, porém são compartilhados com o módulo CCP, o que causa incômodo aos programadores quando é necessária a existência de funções independentes dentre tais módulos.

Page 13: Microcontroladores e FPGAs - Martins Fontes · 1.3 Modos de Reset do PIC 16F628 O microcontrolador PIC dispõe de quatro fontes de reset, as quais serão descritas a seguir. Um reset

29Capítulo 1 • Microcontrolador PIC16F628, da Microchip

1.7 Modo SLEEP

O modo SLEEP destina-se a oferecer uma maneira de operação na qual o consumo de energia do chip é extremamente baixo. Operando neste modo, e com o mínimo de periféricos em funcionamento, o consumo típico do microcontrolador é menor que 1µA (microampere, unidade de fluxo elétrico). Mesmo nesse consumo mínimo, o PIC é capaz de monitorar eventos em determinadas portas de E/S, além de receber e tratar interrupções.

Em modo SLEEP, o microcontrolador entra em standby e pode retornar ao modo de operação normal (Wakeup) por meio de um reset externo, estouro do Watchdog Timer ou por uma fonte de interrupções.