Witam,
piszę program, w którym zmuszony jestem użyć dwóch timerów w Atmega8. Będzie taka sytuacja, gdy obydwa timery będą musiały generować przerwanie w tym samym momencie, czyli muszą odliczyć taki sam odcinek czasu. Wszystko byłoby dobrze, gdyby nie fakt, że timer1 pomimo, że jest dobrze skonfigurowany (przynajmniej mi się tak wydaje
) opóźnia się w stosunku do timera0, który prawidłowo odlicza czas. Zamieszczam fragment programu z konfiguracją timerów. Czas do odliczenia to 800ms. Proszę powiedzieć, co robię źle, że timer1 opóźnia się.
piszę program, w którym zmuszony jestem użyć dwóch timerów w Atmega8. Będzie taka sytuacja, gdy obydwa timery będą musiały generować przerwanie w tym samym momencie, czyli muszą odliczyć taki sam odcinek czasu. Wszystko byłoby dobrze, gdyby nie fakt, że timer1 pomimo, że jest dobrze skonfigurowany (przynajmniej mi się tak wydaje
$crystal = 8000000
Const Timer1reload = 10000
Const Timer0reload = 250
Config Timer0 = Timer , Prescale = 256
Config Timer1 = Timer , Prescale = 8
Load Timer1 , Timer1reload
Load Timer0 , Timer0reload
On Ovf1 Timer1_isr
On Ovf0 Timer0_isr
Enable Interrupts
Enable Timer0
Enable Timer1
Do
.
.
.
.
.
Loop
Timer0_isr:
Incr Ms
If Ms = 100 Then
Ms=0
.
.
.
End If
Return
Timer1_isr:
incr Ms1
If Ms1 = 80 Then
Ms1=0
.
.
.
End If
Return