Você está na página 1de 8

Universidade Regional Integrada – Frederico Westphalen

Departamento de Engenharias e Ciência da Computação


Curso de Engenharia Elétrica

Disciplina: Microprocessadores e Microcontroladores – 30–429


Professor: Maicon Luís Flach, EE, Me.

Aula 3 – Temporizadores
Em virtude da suspensão das atividades presenciais, ocasionada pela pandemia
mundial acerca do COVID-19, o seguimento das aulas irá se dar por intermédio das
plataformas digitais. Uma vez que a disciplina de Microprocessadores e
Microcontroladores possui cunho prático em toda sua essência, se faz necessária a
dedicação por parte do aluno no decorrer desta dinâmica. Ainda, saliento que as atividades
práticas são imprescindíveis e serão desenvolvidas após a “normalização” das atividades.
Desde já agradeço a compreensão dos Senhores matriculados na disciplina.
Serão disponibilizadas atividades no PORTAL RM (conforme este documento),
estas, que deverão ser entregues de forma digital (arquivo de simulação do proteus
nomeado com cada atividade. Também, um .pdf com a explicação do funcionamento de
cada atividade) ao professor através do e-mail: mflach@uri.edu.br. Destacando que
atividade entregue no horário e data determinada contabilizará a presença no dia previsto.
A atividade não será aceita caso o horário de entrega da mesma extrapole o limite das
23:59h do dia respectivo a cada aula, acarretando imediatamente em falta.
OBS.: As atividades entregues na data e horário previsto, além de contabilizar para
critério de presença, possibilitarão ao aluno “ganhar” 0,1 ponto extra na MÉDIA
FINAL. Com relação ao pontos extras da atividades (0,1 pontos) somente serão
contabilizados caso o desenvolvimento das atividades estejam em concordância, ou seja,
se as atividades desenvolvidas realmente funcionam. Cabe destacar que atividades que
conterem plágio, seja de sites, livros e/ou colegas, serão desconsideradas. Sendo
detectado o plágio entre trabalho de alunos, será atribuída a nota zero e falta à todos
os alunos envolvidos. Desta forma, é de suma importância que o desenvolvimento das
atividades seja de autoria própria do aluno e, ainda, citando a fonte de onde a
informação foi retirada (junto de cada atividade), caso necessária. Ao final da atividade
deve constar todas as referências utilizadas.

Engenharia Elétrica – Microprocessadores e Microcontroladores


Universidade Regional Integrada – Frederico Westphalen
Departamento de Engenharias e Ciência da Computação
Curso de Engenharia Elétrica

Timer 0
O módulo Timer 0 pode ser utilizado como um temporizador ou como um
contador de eventos de 8 bits. Quando configurado como temporizador o módulo utiliza
o oscilador do microcontrolador para a base da temporização. Quando configurado como
contador, o módulo conta eventos externos, por meio do T0CKI que está multiplexado
com o pino RA4. A Figura 1 mostra o diagrama de blocos do módulo TMR0.

Figura 1: Diagrama de blocos do módulo TMR0.


Modo Temporizador – TMR0
Quando utilizado como temporizador, o TMR0 incrementa cada ciclo de
instrução (sem prescaler). Conseguimos selecionar a função temporizador resetando o bit
T0CS do registador OPTION_REG. Um detalhe importante é que quando escrevemos
no registrador TMR0, que é o registrador com o valor da contagem atual do temporizador,
o incremento nesse registrador é inibido por dois ciclos de instrução imediatamente após
a escrita. Para evitar este atraso na contagem, o valor escrito no registrador deve ser
ajustado para considerar este atraso.
O prescaler é um dispositivo que reduz uma frequência por um fator pré-
determinado, em microcontroladores o preescaler irá dividir a frequência de oscilação do
clock para uso no módulo do temporizador. O prescaler do TMR0 é compartilhado com
o Watchdog Timer (WDT), para selecionar por qual módulo ele será utilizado devemos
configurar o bit PSA do registrador OPTION_REG.

Engenharia Elétrica – Microprocessadores e Microcontroladores


Universidade Regional Integrada – Frederico Westphalen
Departamento de Engenharias e Ciência da Computação
Curso de Engenharia Elétrica

 PSA = 1 : Prescaler aplicado ao WDT


 PSA = 0 : Prescaler aplicado ao TMR0
Após devemos configurar o valor do prescaler, que é definido pelos bits PS2, PS1 e
PS0.

Importante:
 A única maneira de utilizar o Timer 0 com relação de 1:1 é aplicar o
prescaler ao WDT
O cálculo do tempo a ser contado pelo temporizador é feito da seguinte forma:
𝟒
𝑻𝒆𝒎𝒑𝒐 𝑻𝒐𝒕𝒂𝒍 = ∗ 𝑷𝒓𝒆𝒔𝒄𝒂𝒍𝒆𝒓 ∗ (𝟐𝟓𝟔 − 𝒗𝒂𝒍𝒐𝒓 𝒊𝒏𝒊𝒄𝒊𝒂𝒍)
𝒇𝑶𝒔𝒄
Modo Contador – TMR0
Com T0CS = 1, o Timer 0 funciona como contador e sua contagem incrementa a
cada pulso colocado no pino RA4/T0CKI.
Neste modo, deve-se selecionar como o contador irá incrementar seu valor, ou
seja, na borda de subida ou na borda de descida do sinal externo, através do bit T0SE do
registrador OPTION_REG.
 T0SE = 0: incremento na borda de subida
 T0SE = 1: incremento na borda de descida.

Engenharia Elétrica – Microprocessadores e Microcontroladores


Universidade Regional Integrada – Frederico Westphalen
Departamento de Engenharias e Ciência da Computação
Curso de Engenharia Elétrica

Registradores Associados – TMR0

Importante:
 Para utilizar a interrupção do Timer 0, deve-se setar os bits T0IE e GIE.
 A interrupção do Timer 0 acontece quando o registro TMR0 muda de FFh (255)
para 0. Neste caso, ocorre o estouro de contagem (overflow) e o flag T0IF é
setado, sinalizando a interrupção. O mesmo deverá ser zerado para permitir uma
nova interrupção.

Engenharia Elétrica – Microprocessadores e Microcontroladores


Universidade Regional Integrada – Frederico Westphalen
Departamento de Engenharias e Ciência da Computação
Curso de Engenharia Elétrica

Exemplo 01: Desenvolver um firmware que conte 500ms utilizando o Timer 0, utilize
este tempo para piscar um led conectado ao pino RD0. Utilize fosc de 8MHz.

Engenharia Elétrica – Microprocessadores e Microcontroladores


Universidade Regional Integrada – Frederico Westphalen
Departamento de Engenharias e Ciência da Computação
Curso de Engenharia Elétrica

Engenharia Elétrica – Microprocessadores e Microcontroladores


Universidade Regional Integrada – Frederico Westphalen
Departamento de Engenharias e Ciência da Computação
Curso de Engenharia Elétrica

Exemplo 02: Desenvolver um firmware que utilize o Timer zero como contador, a cada
incremento de contagem inverta a condição de um led conectado ao pino RD0.

Engenharia Elétrica – Microprocessadores e Microcontroladores


Universidade Regional Integrada – Frederico Westphalen
Departamento de Engenharias e Ciência da Computação
Curso de Engenharia Elétrica

Tarefa 01: Desenvolver um firmware que utilize o Timer 0 como temporizador. Quando
pressionada uma chave conectada ao pino RB0 (utilizar a interrupção externa), este deve
disparar a contagem do timer 0, que deve contar 1 segundo e inverter o nível lógico no
pino RA0 (utilize um LED conectado a este pino para visualizar a mudança de estado).
Quando pressionada novamente a chave o processo deve ser repetido.

Engenharia Elétrica – Microprocessadores e Microcontroladores

Você também pode gostar