Cursos / Eletrônica / Projeto de Sistemas Microcontrolados / Aula

arrow_back Aula 04 - Estudo de microcontroladores PIC – Parte II

Análise de blocos funcionais comuns às famílias 16F e 18F

Nos dois itens seguintes, serão estudados detalhes construtivos e de funcionamento do Timer 0 e das portas A e B, comuns a todos os microcontroladores da família PIC 16F e 18F. Durante todo o restante deste texto, os FSRs usados na manipulação dos blocos funcionais em análise serão referenciados.

O Timer 0

O registrador Timer 0, referenciado por TMR0,  é um temporizador/contador de 8 bits cujo conteúdo é continuamente incrementado, podendo, no entanto, ter programável a frequência e o valor  de início de contagem. 

Se, por exemplo, escrevermos nele o valor 10, após um tempo de 4 ciclos de relógio, o conteúdo do TMR0 começa a ser incrementado de 1, com frequência constante e independente da execução do resto do programa. Uma vez atingido o valor 255, será zerado automaticamente retornando, então, a contagem a 0 e não ao valor inicialmente imposto.

Na Figura 4 está representada a estrutura  interna do PIC que determina o funcionamento do registro TMR0.

Estrutura  interna do PIC que  determina o funcionamento do registro TMR0.

O bloco Fosc/4 e T0CKI representam as duas possíveis fontes de sinal para o contador TMR0. Fosc/4 é um sinal gerado internamente no PIC a partir do circuito de clock e dividida por quatro, enquanto T0CKI é um sinal gerado de um eventual circuito externo e aplicado ao pino 3 (T0CKI).

Os blocos T0CS e PSA são dois comutadores de sinal, os quais selecionam o sinal de entrada com base no valor dos bits T0CS e PSA do  registrador OPTION.

A presença da porta XOR  na entrada TOCKI do PIC permite que o bit TOSE do OPTION defina se o TMR0 será incrementado na descida (TOSE=1) ou na subida do pulso (TOSE=0) do sinal externo aplicado.

O bloco PRESCALER é um divisor programável de 8 bits que permite modificar a frequência do sinal aplicado ao TMR0 e, assim, poder aumentar o tempo de contagem do TMR0 com relação a sua cadência básica.

Por exemplo, na Figura 5, admitindo TOCS = 0 e PSA = 1, o TMR0 contará numa frequência Fosc/4 e, na Figura 6, admitindo TOCS = 0 e PSA = 0, o TMR0 contará numa frequência Fosc/4 dividida ainda por um valor imposto pelo Prescaler, de acordo com os valores dos bits PS2, PS1 e PS0 do registrador OPTION_REG (ou OPTION simplesmente), segundo a Tabela 1.

Funcionamento do TMR0 com T0CS = 0 e PSA = 1.

 

Funcionamento do TMR0 com T0CS = 0 e  PSA = 0.

O Prescaler é um contador de 8 bits e está disponível como um prescaler para o TMR0 e como um postscaler para o Watchdog (referenciado por WDT). Por simplicidade, é sempre referido como um prescaler. O uso do prescaler é excludente. Isso significa que enquanto estiver sendo usado com o TMR0, não poderá ser usado com o WDT ou vice-versa. Tal característica, certamente, limita a versatilidade do PIC.

PS2, PS1,PS0 TMR0 WDT
000

1:2

1:1

001

1:4

1:2

010

1:8

1:4

011

1:16

1:8

100

1:32

1:16

101

1:64

1:32

110

1:128

1:64

111

1:256

1:128

Tabela 1 – Configuração do Prescaler para o TMR0 e para o Watchdog (WDT)

A definição do uso do prescaler, se com o TMR0 ou com o WDT, é feita por software, atuando-se no bit PSA do registrador OPTION (se 0, o prescaler será aplicado ao TMR0). De forma idêntica, a definição do tempo de prescaler para o TMR0 ou para o WDT é feita por software, atuando-se nos bits PS0, PS1 e PS2 do registrador OPTION, de acordo com a Tabela 1 já referenciada. 

Sem prescaler, o TMR0 fica configurado na escala de 1:1 e "estoura" sua contagem máxima, por exemplo, em aproximadamente 72 ms para uma frequência de clock de 4 MHz. 

Sem prescaler, o WDT é incrementado automaticamente e "estoura" a cada 18 ms para uma mesma frequência de clock de 4 MHz. 

Um diagrama completo do sistema TMR0/WDT/PRESCALER pode ser visto na Figura 7.

Nas linhas 17 e 18 da Tabela 1 (Características gerais dos microprocessadores 16F84, 16F286 e 16F877) apresentada na aula 3 (revise), são especificados mais dois temporizadores, além do TMR0, que podem ser usados em aplicações gerais que exijam contagem de tempo, sendo um de 8 bits, o Timer 2 (que conta como o TMR0 até 0FFh) e outro de 16 bits (o Timer 1 que conta até 0FFFFh). Esses temporizadores se apresentam muito relacionados, ao contrário do TMR0, com aplicações que envolvem unidades periféricas, as quais já foram referenciadas e que estudaremos em algumas aplicações. Uma coisa é certa: para utilizá-los, torna-se necessário também um estudo mais detalhado, como o que foi feito neste item com o TMR0.

Diagrama completo do sistema  TMR0/WDT/PRESCALER.

Versão 5.3 - Todos os Direitos reservados