top of page

TIMER 2

Já vimos bastante coisa sobre TIMER, como configura, qual a sua função. Nas aulas anteriores estudamos TIMER 0 e logo depois o TIMER 1. Hoje vamos aprender a brincar com o TIMER 2. Para começar vamos abrir o PIC C Compiler e fazer as configurações básicas para o PIC 18F2550 que já estão bem memorizadas e como atividade tente fazê-las vocês mesmos. Depois de fazer as configurações, vejamos a seguinte imagem:































































Como vamos estudar apenas o TIMER 2 não precisamos mexer em mais nada além das opções presentes no campo TIMER 2. Como podemos ver esse é um tipo de timer bem interativo com o usuário por ser totalmente configurável e isso o torna bem sofisticado mesmo por possuir poucas resoluções em relação aos outros timers. Você vai ver também que o período de interrupção está diretamente ligado ao período de overflow, ou seja, conforme mudamos o período de overflow estaremos também mudando automaticamente o período de interrupção. É bom entender essas duas coisas: a primeira é que o período de overflow significa o estouro do timer, ou seja, no nosso caso o overflow vai executar de 128us a 128us não significando que esse será o momento em que ocorrerá a interrupção. A segunda coisa a se entender é o período de interrupção, e esse sim será o momento exato em que ocorrerá a execução do código de interrupção independentemente de onde esteja o período de overflow. Bom agora que sabemos, podemos fazer as configurações.



1 – Habilite o Timer 2


2 – Selecione uma resolução de 1.3us


3 – Selecione o período de overflow digitando 95


4 – Selecione o período de interrupção digitando 16


Nossa interrupção acontecerá a cada 2ms. O próximo passo da configuração nós já sabemos que é a habilitação do Timer 2 nos campos da opção Interrupts.
Agora que já fizemos todas as configurações podemos clicar em OK e verificar nossas ligações elétricas no ISIS que será apenas o PIC 18F2550 e um Terminal Virtual. Assim:











































Vamos apenas testar e provar que o Timer 2 funciona mesmo. Vamos declarar no inicio, antes da função de interrupção um inteiro de 32bits de nome qualquer, assim:



Int32 x;


Dentro da função de interrupção vamos incrementar esse x;


void  TIMER2_isr(void)
{
x++;
}


Vamos colocar o While porque não pode faltar, e vamos inserir um printf dentro dele para mostrar as somas do x.


While(TRUE)
{
Printf(“%ld”,x);
}


Pronto, agora compile e carregue seu código e dê um play na sua simulação. Você vai ver um monte de número na tela e esses correspondem ao estouro do timer, o overflow. Você vai perceber também que ele dará alguns pulos de mais ou menos umas 4 unidades de um número para o outro e isso é devido ao efeito do printf por ser um putc formatado que leva um tempo para ser executado.


Então se você pegar o tempo da sua simulação e dividir pelo último valor mostrado em seu terminal virtual (4 digitos) verá que o resultado será um número próximo a 2ms que foi o que nós configuramos para ser o momento da interrupção. Assim nós provamos que o Timer 2 funciona e pode ser aplicado tranquilamente. É isso pessoal. Terminamos assim a parte de interrupções por Timer. Claro que existe o Timer 3 mas é um timer muito semelhante ou até podemos arriscar e dizer que é igual ao Timer 0. Bom, é isso, bons estudos e até a próxima.

bottom of page