Forum: Compiler & IDEs Timer-Interrupt mit dem ATMega16


von Lucas Romero (Gast)


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!

von Wolfram (Gast)


Lesenswert?

Wenn du den Interrupt nicht aktivierst ,dann musst du dich auch nicht
wundern wenn er nicht angesprungen wird...

von Lucas Romero (Gast)


Lesenswert?

Vielen, vielen Dank für deinen Hinweis! Mann bin ich doof!

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
Noch kein Account? Hier anmelden.