mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR ATmega32 Interrupt CTC


Autor: fgutm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ...

Autor: fgutm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1000 Dank!!! Daran hätt ich zuletzt gedacht!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.