Zitat Zitat von MrTaco
Der soll doch nen interrupt machen wenn Zähler = OCR1B ist.
Genau das macht er ja auch - nur dann muss der Zähler auch erst mal bis zu dem Wert kommen, der in OCR1B steht.

So wie Du den Timer eingestellt hast, wird das OCR1A-Register dafür verwendet, den Maximalwert des Zählers zu definieren. Wenn Du z.B. den Wert 350 ins OCR1A-Register schreibst, zählt der Zähler von 0 bis 350 und fängt dann wieder bei 0 an. Wenn er dann beim Zählen den Wert erreicht, der in OCR1B steht, wird auch der entsprechende Interrupt ausgelöst.

Im Standard-Modus zählt der Zähler immer von 0-65535 (0xFFFF). Dazu müsste aber das Bit WGM12 bei der Initialisierung auf 0 gesetzt werden (also TCCR1B|= 0b00000010; )

Schau Dir mal im aktuellen Datenblatt vom ATMega16A die Tabelle auf Seite 112 an, besonders die Spalte "TOP". Vielleicht wird's dann klarer

Gruß,
askazo