µC Atmel Atmega8
Ich habe eine Frage, die ich hier in einem kleinen Beispiel 
veranschaulichen möchte.
Ich betreibe auf dem Atmega8 den Timer 1 16-bit.
Nun möchte ich bei einem Compare Match den Pin PB1 (OC1A) auf high 
setzt.
Im Programm schreibe ich an der Stelle also dies:
1  | TCCR1A |= (1<<COM1A0) | (1<<COM1A1); 
  | 
2  | OCR1A = 100;
  | 
3  | TIMSK |= (1 << OCIE1A);
  | 
In dem Beispiel wird bei erreichen also des Timers von TCNT1=101 das 
Compare Match A ausgelöst und diese ISR aufgerufen:
1  | ISR (TIMER1_COMPA_vect){
 | 
2  | TIMSK &= ~(1 << OCIE1A);
  | 
3  | TCCR1A &= ~(1 << COM1A0); // Bit löschen, sodass beim nächsten mal auf low geschaltet wird
  | 
4  | TCCR1A |= (1 << FOC1A); // Force Output schaltet Bit wieder auf low
  | 
5  | TCCR1A |= ~(1 << COM1A0); // würde beim nächsten erreichen wieder high werden
  | 
6  | }
  | 
Die ISR schaltet den Compare Match wieder aus, bis er hypothetisch 
irgendwann wieder eingeschaltet wird (an einer Stelle des Programms).
Wird jetzt aber bei erreichen des Timers von 101 beim nächsten mal der 
Pin wieder auf low gesetzt?
Ich meine, die ISR wird nicht angesprungen, klar, weil ja im TIMSK 
Register das entsprechende Flag gelöscht ist. Aber durch die gesetzten 
COM1A0 und COM1A1 schaltet die Hardware dann trotzdem den Pin um?
Danke.
Ach ja, ich habe das jetzt so aus dem Kopf geschrieben nur als Bsp, d.h. 
nicht compiliert. Evtl. sind noch kleine Fehler drin... aber vom Prinzip 
her sollte es durchsichtig sein.
LG
Sven