Hallo,
im Mega8 Datenblatt (Atmel doc2486) gibt es auf Seite 111 unter Figur 49 eine Formel zur Berechnung der Ausgangsfrequenz des OC Pins wenn er toggelt. Danach rechnet auch http://www.bunbury.de/technik/berech...berechnung.htm , Zitat: "...welche Comparewerte (CTC-Modus mit Toggle Pin)..."; meiner Meinung nach allerdings mit einem kleinen Fehler.

Du brauchst jedoch nicht die Ausgangsfrequenzfrequenz des OC Pins sondern die Frequenz des Auftretens des Interrupts.
Formel im Datenblatt für Ausgangsfrequenz: Focn = fclk / 2 * N * (1+OCRn)
Die Interruptfrequenz ist doppelt so hoch: Fint = fclk / N * (1+OCRn)
Focn - Ausgangsfrequenz am Pin
fclk - Systemclock (zB 16Mhz oder 8MHz)
2 - Devisor wg. toggle
N - Prescaler
OCRn - Compare Value
Fint - Interruptfrequenz

gewünschte Peridendauer 10µs entspricht Fint von 100000Hz
Formel nach OCRn umgestellt: OCRn = (fclk / N * Fint) - 1
Damit ist muß für 10µs der Compare1a (OCRn) = 19 für Systemtakt 16MHz sein und 9 für 8MHz

Die "1", die da noch subtrahiert wird, kommt wohl daher daß wenn der Timer (TCNT) auf Null steht, einen clk braucht um auf Eins zu kommen. Zwei clks um auf Zwei zu kommen...zehn clks um auf Deinen Comparewert 10 zu kommen - Interrupt wird ausgelöst - ABER nun braucht er einen weiteren clk um wieder auf Null zu kommen!

Hab jetzt nur versucht, den Timer wie ich ihn verstanden habe zu erklären. Alles ohne Gewähr und kann auch nicht sagen ob Dein Programm sonst OK ist, da ich mit ATtiny45 bastele. Weitere Abweichungen müßte man nochmal unter die Lupe nehmen, wenn das mit dem Timer klar ist.

Gruß
Searcher