Forum: Mikrocontroller und Digitale Elektronik AVR-Timer Overflow, ich kapiere es nicht


von Dennis (Gast)


Lesenswert?

Hallo,

Folgendes macht mich im Moment völlig fertig, ich schnall es einfach 
nicht:

ATiny26
8Mhz über internal RC-Clock, bestmöglich kalibriert.
Ich nutze Timer-Overflow0. Kein weiterer Int aktiviert.
Der Timer-Vorteiler steht auf 1

In der ISR wird nur ein Portbit an-aus geschaltet, damit ich die 
Frequenz des INT messen kann.

Nun müsste der Timer-Int mit einber Frequenz von 31250Khz kommen.
Denn 8000000/256 = 31250
Klappt einwandfrei, Oszi und Frequenzzähler bestätigen das sogar recht 
genau. Das Signal ist ein wunderbares rechteck ohne Störungen etc.

Nun will ich aber einen Timer-Int mit 40Khz
Also lade in der ISR (direkt als erstes) TCNT0 mit einem Wert vor.
Der Wert ist 56, weil: 256-56=200 und 8000000/200 = 40Khz.

KLAPPT NUR NICHT. Die gemessene Frequenz ist immer ca.36Khz.
40Khz bekomme ich erst ab einem Vorladewert von ca.75
Könnte ich natürlich so lassen, aber rechnerisch stimmt es einfach nicht 
und will wissen warum. Kann mir das mal jemand erklären?

Grüsse
Dennis

von Andreas K. (a-k)


Lesenswert?

Für konstante Interrupt-Rate sollte man den CTC Mode verwenden, denn 
sonst beeiflusst die Verarbeitungszeit des Interrupts das Zeitverhalten.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.