Gast
#1897421
Morgen µC Gemeinde, im Prinzip sagt der Betreff schon alles aus. Ich möchte dass der 16-bit Timer des Atmega32 mir in regelmäßigem Abstand (vorerst nur ca. im Abstand 1ms) einen Interrupt auslöst, der sagen wir mal eine LED an PD5 ein und ausschaltet. Ich bin Anfänger und möchte zunächst alle Funktionen des Atmega austesten um damit verschiedene Projekte zu realisieren. Die hiesigen Tutorials habe ich schon durchforstet leider ohne Erfolg, auch das Datenblatt gewälzt etc.. Aber der Interrupt will einfach nicht kommen :( Hier ein paar Code Schnipsel: Initialisierung des Timers (CTC-Modus, Prescaler-1024, TOP = 1000, Timer 1 CompareA Interrupt gesetzt): TCCR1A &= ~(1<<WGM11); TCCR1A &= ~(1<<WGM10); TCCR1B |= (1<<WGM12); TCCR1B &= ~(1<<WGM13); TCCR1B |= (1<<CS12); TCCR1B &= ~(1<<CS11); TCCR1B |= (1<<CS10); OCR1A = 0x03E8; /*(entsprich dual 1000)*/ TIMSK |= (1<<OCIE1A); so weit alles richtig ;) ? Weiterhin die Interrupt-Routine (laut s.42 Datenblatt): ISR(TIMER1_COMPA_vect){ PORTD |= (1<<PD5); } Globale Interrupts sind mit sei(); aktiviert, #include <avr/interrupt.h> hab ich auch nicht vergessen. Den ganzen Code zu Posten wird ein wenig schwierig da es nur ein kleiner Teil einer Routinge zur LCD-Ansteurung ist, ich denke das würde stark verwirren. Die LED will einfach nicht angehen, was sie ja theoretisch einmal müsste. Wenn ich den entsprechenden Schnipsel anfangs in die main schreibe, dann leuchtet sie natürlich.