Timer0 -> Verzweiflung in ASM

Gast #452113
Lesenswert?
• ▲
▼
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
Gast #452119
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.