Hallo Gemeinde,
Manchmal scheint das Hirn zu blockieren. Ich kriege es doch gerade
nicht gebacken eine lauffähige Timer0 Overflow Routine zum laufen zu
bringen:
Service-Routine:
ovf0: in status,SREG
rcall keyin
ldi temp,254 ;reload timer
out TCNT0,temp
out SREG,status
reti
Wird während der INIT-Phase aufgerufen:
tcnt0init:
ldi temp,254
out TCNT0,temp
ldi temp,0x02
out TIMSK,temp
sei
ret
Interrupt-Routine wird nicht angesprungen. Warum?
Du hast den Timer ja offenbar gar nicht gestartet, dazu mußt Du erst mal das TCCR0-Register entsprechend laden (Modus und Prescaler). Ich hab zwar grad nur das ATmega16-Datenblatt, aber ich vermute, das wird beim 161 ähnlich sein. MfG Olaf
Stack und Sprungtabelle sind OK. Der Rest läuft ja anstandslos. Das Datenblatt des ATMEGA161 ist etwas verwirrend und die m161def.inc hat Fehler in den Kommentaren. Aber der Tipp mit TCCR0 war OK. Danke!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.