Página 1 de 1

TIMER1

MensagemEnviado: 28 Mar 2007 05:04
por antonio
PESSOAL TUDO BEM !!

tenho aqui umas duvidas do qual queria tirar !!

Tenho estado a ler um pouco sobre interrupçoes , de tal modo que encontrei isto abaixo sobre o TIMER1 mas nao consigo entender direito;

"Um TIMER1 de 16 bits a 8Mhz se incrementa a cada ciclo de intrução, do qual gera um interrupçao a cada 32768us"

O que nao consigo entender è os calculos !

Quanto tempo demora um ciclo de intruçao para que gera a interrupçao a cada 32768us?

No codigo em baixo o que eu entendo é que a cada 32768us a variavel "v" é incrementada en 1, este raciocinio esta correto?

Agora se eu quiser fazer do TIMER1 um contador Como devo fazer?

E como fazer do TIMER1 um temporizador como proceder?


#INT_TIMER1
tmr_handler() {
++v;
}

Pessoal agradeço forte se estas duvidas poder ser esclerecidas!
Abraços

MensagemEnviado: 28 Mar 2007 08:02
por MOR_AL
Olá antonio!

Frequência do oscilador (FO) = 8.000.000 Hz
Frequência do clock (FC) = FO / 4 = 8.000.000 / 4 = 2.000.000
Período de cada clock (PC) = 1 / FC = 1 / 2.000.000 = 0,5us
Número de contagens máxima do registro do TIMER1 (NT1) = 2 elevado a 16 = 65.536.
Tempo para contar 65.536 pulsos = PC x NT1 = 0,5us x 65.536 = 32768 us.
MOR_AL

MensagemEnviado: 28 Mar 2007 09:11
por Adauto sampaio
Deixa eu pegar carona no tópico e tentar esclarecer uma dúvida. Como faço para escrever no TMR1 do 16F873A usando ASM? Coloco os dados na forma binária ou decimal em cada registrador? Agradeço já a colaboração e paciência de todos.



MOR_AL escreveu:Olá antonio!

Frequência do oscilador (FO) = 8.000.000 Hz
Frequência do clock (FC) = FO / 4 = 8.000.000 / 4 = 2.000.000
Período de cada clock (PC) = 1 / FC = 1 / 2.000.000 = 0,5us
Número de contagens máxima do registro do TIMER1 (NT1) = 2 elevado a 16 = 65.536.
Tempo para contar 65.536 pulsos = PC x NT1 = 0,5us x 65.536 = 32768 us.
MOR_AL

MensagemEnviado: 28 Mar 2007 09:17
por fabim
rsrs.
timer H e L.
vc pode escrever
decimal, binario, hexa.. aí vai de sua vontade.
H = 8 bits = de 0 a 255
L = 8 bits = de 0 a 255

Agora se vc vai escrever .255 ou '11111111' ou 0xff..

tanto faz..

Fabim

MensagemEnviado: 28 Mar 2007 09:52
por Adauto sampaio
hehe. Valeu Fabim, vo martela um pouco aki e depois te conto


fabim escreveu:rsrs.
timer H e L.
vc pode escrever
decimal, binario, hexa.. aí vai de sua vontade.
H = 8 bits = de 0 a 255
L = 8 bits = de 0 a 255

Agora se vc vai escrever .255 ou '11111111' ou 0xff..

tanto faz..

Fabim

MensagemEnviado: 28 Mar 2007 17:38
por egb
Aproveitando o embalo do titulo do topico pergunto:

Estava precisando de um relógio, então pensei em duas soluções:
1 - usar o timer1 do 16f877a para gerar interrupcoes e usar contadores para gerar segundos, minutos e horas data enfim.

2 - comprar um ds1302.

Queria saber se tem como usar a solução 1 com um bom desenpenho e confiabilidade similar a solução 2.

Ou pelo menos, como fazer para o timer1 trabalhar de forma mais precisa possivel, em termos de qual Cristal, prescaler, valor de TMR1 ?

esse foi meu primeiro post!!! parabens pelo forum :wink:

MensagemEnviado: 29 Mar 2007 04:35
por antonio
Colegas!!

Agradeço mais uma vez a todos que colaboraram e ajudaram !

até

MensagemEnviado: 29 Mar 2007 08:00
por fabim
egb.
Vou te ser sincero, relogio usando os contadores internos do pic...
Olha, muito trampo, o cristal tem que ser o mais mió di bom..

Agora usar um DS SMD minusculo com um cristalzinho de 32.768hz, vai te poupar muito tempo e muita dor de cabeça, e muito mais confiavel.
Agora se o ambito do circuitinho é para aprender a usar os timers, aprender a calcular configurar etc, aí sim vá em frente.

Fabim

MensagemEnviado: 29 Mar 2007 09:41
por egb
Valeu Fabim,

Então vou partir pra solução do DS1302 mesmo.

MensagemEnviado: 03 Abr 2007 06:37
por microeletronica
Posso ajudar com o codigo do RTC externo.
Qualquer duvida, entre em contato.

[]s.