Timer-Interrupt mit dem ATMega16

Gast #366378
Lesenswert?
• ▲
▼
Hallo liebe µC-Freunde!

Ich habe in AVRStudio mit WinAVR als Plugin folgenden Code
geschrieben:

#include <avr/interrupt.h>
#include <avr/iom16.h>

volatile uint8_t test=0;


ISR (TIMER2_COMP_vect)
{
  test++;
}

int main(void)
{
  cli();
  DDRD = 0xFF;
  PORTD = 0;
  TCCR2 = 0b00011010;
  OCR2 = 100;
  sei();
  while (1);
}

Das Programm sollte über den Timer2 alle 100 µs (CPU-Takt 8 Mhz) OC2
togglen und die zugehörige Interruptroutine ausführen. Das togglen
klappt auch (sichtbar in der I/O-Ansicht), die Interruptroutine wird
jedoch nie erreicht (einmal sichbar am Wert von "test" und am
Breakpoint, den ich in die Routine gesetzt habe). Dies pasiert sowohl
wenn ich über den JTAG ICE direkt auf dem µC debugge, als auch wenn ich
den Mega16 vom AVR Studio simulieren lasse. Ich habe stundenlang
rumprobiert, das Manual zum ATMega16 studiert und mich im Internet
totgesucht, habe aber keinen Fehler gefunden. Ich hoffe, ihr könnt mir
helfen!

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.