Procesor Atmel Mega8 zasilamy 3V
Taktowany 8MHz z wewnętrznego zegara procesora
Potrzebuje odmierzać równe impulsy co 1 sekundę i chciałem wykorzystać do tego celu Timer0. I tu pojawia mi się problem. W obrębie pętli Do Loop wszystko działa poprawnie (led gaśnie i zapala się na okres 5 sekund). Jednak wygląda tak jakby przerwania nie działały i nie wiem czemu. Zastanawiam się czy przypadkiem powodem problemu nie jest sposób taktowania procesora bo podobny program w innym układzie z prcesorem taktowanym z kwarcu działa poprawnie
Kod: Zaznacz cały
$regfile = "m8def.dat" ' typ procesora
Config Pind.5 = Output 'led zielony
Config Pind.6 = Output 'led czerwony
Set Portd.5 'led zielony
Set Portd.6 'led czerwony
Dim X As Byte 'zmienna do obliczen
Dim Tl As Byte 'licznik Timer0
Config Timer0 = Timer , Prescale = 256 'konfigoracja timera
On Timer0 Odmierz
Enable Interrupts
Enable Timer0
Load Timer0 = 250
Start Timer0
Do
Toggle Portd.6
Wait 5
Loop
'-------------------------------------------------------------------
Odmierz:
Load Timer0 = 250
Incr Tl
If Tl = 125 Then
Tl = 0
Toggle Pind.5
End If
Return