AVR ATmega32 Interrupt CTC

Gast #1041467
Nabend,
ich versuch Timer1 im CTC-Mode zum Laufen zu bringen (leeres 
Assemblerprojekt in AVR-Studio 4.14). Zuerst hab ichs mit nem TOP-Wert 
in IRC1 versucht - und weil das net gleich lief hab ichs mit OCR1A als 
TOP-Wert probiert. Läuft zwar, aber springt zu T0_compare statt 
T1_overflow! Da ich den Timer0 net angerührt hab, raff ich grad gar nix 
mehr! Ist der Quelltext (Interruptliste) aus dem Datenblatt falsch?!? 
Denn ein ATmega32 16PU im SDK500 verhält sich genauso wie der Simulator.

.include "m32def.inc"
  jmp  RESET        ; Reset Handler
  reti; IRQ0        ; IRQ0 Handler
  reti; IRQ1        ; IRQ1 Handler
  reti; IRQ2        ; IRQ2 Handler
  reti; T2_compare  ; Timer2 Compare Handler
  reti; T2_overflow ; Timer2 Overflow Handler
  jmp T1_capture    ; Timer1 Capture Handler
  jmp T1_compareA   ; Timer1 CompareA Handler
  reti; T1_compareB ; Timer1 CompareB Handler
  jmp T1_overflow   ; Timer1 Overflow Handler
  jmp T0_compare    ; Timer0 Compare Handler
  jmp T0_overflow   ; Timer0 Overflow Handler
Deine Vektortabelle ist ja auch komplett falsch! Warum übernimmst Du 
nicht die aus dem Datenblatt (und lässt die jmp s von nicht benutzten 
Interrupts z.B. auf eine bestimmte Adresse zeigen, an der ein reti oder 
wahlweise eine Fehlerbehandlungsroutine steht)? Der ATMega32 hat mehr 
als 8 KiB Flash und dementsprechend sind die Interrupt-Vektoren 32 Bit 
(2 Worte) breit, und nicht 16 Bit, weil sonst kein jmp hineinpassen 
würde. reti hat aber auch nur 16 Bit, weshalb die Tabelle schon nach 
dem ersten reti nicht mehr stimmt und weshalb da jeweils mindestens 
noch ein nop mit rein muss. Oder Du arbeitest direkt mit .org ...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.