Hallo liebe Gemeinde Ich habe mich neulich an die Timer Programierung in Assembler gewagt, nur leider macht mein Testobjekt (ein Mega16) absolut nicht das, was er soll. Auch im AVR Studio Debugger zeigt sich ein merkwürdiges Verhalten. Damit meine ich, dass das Programm bis "sei" fehlerfrei läuft, aber ab "rjmp loop" springt er nicht etwa zu sich selbst, sondern setzt wieder bei "out TCCR0, temp" an. Dann wird das Programm wieder bis sei abgearbeitet und bleibt auch in der Endlosschleife. Sobald der Timer überläuft zeigt sich aber wieder der Sprungfehler. Der Atmel startet beim Testen einfach neu. (Bootloader läuft wieder an) Was kann ich da falsch gemacht haben? Stimmt etwas mit den Interrupt Vektoren nicht? Würde mich freuen wenn jemand mal über den Source schauen könnte. MFG Scholz
Nach dem was man hier im Forum so allgemein liest hat der Mega16 pro Intvector 2 Befehlsworte reserviert um longjumps über den vollen Adressbereich zu ermöglichen. Im Beispiel ist aber nur jeweils 1 Wort durch rjmp bzw. reti belegt.
Danke, das war das Problem. Habe die rjmp durch jmp Befehle ersetzt und nun scheint es zu funktionieren =)
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.