Habe einen Mega8 und versuche eine Rechteckspannung mit 100 kHz Frequenz
auszugeben. Den OC1A Pin nutze ich nicht, da ich synchron dazu auch noch
ein Datensignal anlegen muss.
Folgendes habe ich programmiert:
Initialisierung
1 | // Timer 1 konfigurieren
|
2 | TCCR1B = (1<<CS10)|(1<<WGM12);
|
3 | OCR1AL = 0x4F;
|
4 | TIMSK |= (1<<OCIE1A);
|
Interrupt
1 | if ((PORTC & (1 << PC1)) == 0)
|
2 | PORTC |= (1 << PC1);
|
3 | else
|
4 | PORTC &= ~(1 << PC1);
|
Im Grundsatz funktioniert es auch, aber leider ist die Periodendauer
immer wechselnd. Auf dem Oszi wackelt das Rechtecksignal, was daran
liegt, dass manchmal die High-Zeit zwischen 6us und 3us variiert.
Irgendwelche Ideen, weshalb das nicht richtig funktioniert?