Forum: Mikrocontroller und Digitale Elektronik avr und assembler timer problem


von Emperor L0ser (Gast)


Lesenswert?

moin, ich schlage mich grad mit dem timer des mega 32 rum.


hier mal etwas code:

.org 0x000                    ;reset sprungmarke
         rjmp main
.org 0x016                    ;timer0 overflow
         rjmp timer0

main:

         ldi r16, 0b0000010   ;Prescaler einstellen
         out TCCR0, r16       ;und reinladen

         ldi r16, 0b00000001  ;Timer starten
         out TIMSK, r16

         ;noch n bisschen code

         sei                  ;Interrupts einschalten

ende:  rjmp ende      ;Endlosschleife

;
;Ab hier die kommt der Timer
;
timer0:
         ;das was der timer so alles tun soll
         reti

nach dem reti kehrt das avr-studio zum "rjmp timer0" zurück und führt
den befehl gleich nochmal aus (auch der mikrocontroller selbst macht
keine sinvollen sachen...) Folgende Fehlermeldung kommt beim avr-studio
mit (obwohl es weiterläuft):  AVR Simulator: Invalid opcode 0xffff at
address 0x003030

meine frage: wie schaffe ich es, das nach der abarbeitung des timers
wieder zum original code gesprungen wird. (indem fall also wieder in
die endlosschleife)

von Michael U. (Gast)


Lesenswert?

Hallo,

Du hast offenbar den Stackpointer nicht gesetzt, so führt RETI in die
Wüste aber nicht zurück.

Gruß aus Berlin
Michael

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
Noch kein Account? Hier anmelden.