por fabim » 29 Mai 2008 15:00
não sei se o amigo esta no inicio do começo.rsrs
Mais sobre temporização..
Contador primario... preescaler
Contador secundario .... TIMER0.
Funcionamento.
Na pratica.
É simplesmente o preescaler, um outro Timer0, configuravel com valores com potencia de 2 fixo. cuja este fornece pulsos para alimentar outros periféricos, dado como o WDT por exemplo ou mesmo o Timer0.
Este prescaler pode ser configurado entre estes valores à baixo.
2,8,16,32,64,128,256 - quando o mesmo é utilizado para o TMR0
E
1,2,4,8,16,32,64,128 - quando o mesmo é utilizado para o WDT.
Vamos em um exemplo simplão.
Cristal de 4mhz.
Como se sabe as instruções internas do pic rodam FCK/4.
Tempo base intão de
1/ (FCK/4) = 1uS ou 0.000001S.
Quero usar o TMR0 de tal forma que são multiplos de 256uS
Seto o Prescaler para 256*0.000001S = a cada 256uS o TMR0 é incrementado.
Bom vamos lá.
Quero setar o TMR0 para estouro a cada 10mS+/-.
Quantos 256uS cabem dentro de 10mS ?
39, que se aprossima mais.
39 * 0.000256 = 0,009984S.
Agora a técnica do zoiômetro!!
Sei que a interrupção do Timer 0, acontece a cada estouro dos 256 valores possiveis, voltando a contar de zero novamente.
Porêm cada valor é equivalente a 256uS.
Se eu sei que são necessarios 39 valores em 256uS para proximo dos 10mS..
Begin...
256 - 39 = 217.!!!
Eu escrevo 217 no timer0
de 217 para 256 são 39 * 256uS que dá aproximadamente 10mS para o estouro acontecer.!!
"obs. isto não é muito funcional para tempos precisos.. pois nunca se sabe qual oi valor atual do preescaler" Existem outros periféricos mais precisos dentro do pic..
Espero que entenda.
Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!