Forum: Mikrocontroller und Digitale Elektronik Timer von Tiny45 läuft zu langsam?


von Dirk Schlage (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe einen Tiny45 mit aktiviertem 8MHz internem Oszillator,
8-fach-Vorteiler ist deaktiviert.

Der Timer wird mit folgendem Code aktiviert:
#define INTERRUPTS_PER_SECOND   1000
#define TIMER_PER_SECOND 125000

// output compare interrupt for timer 1
TIMSK = 1<<OCIE1A;
TCCR1 = _BV (CTC1) | _BV (CS12) | _BV (CS11) | _BV (CS10);

// set PoutputCompare to get desired Timer1 frequency
OCR1A = (unsigned short) ((uint32_t) TIMER_PER_SECOND /
INTERRUPTS_PER_SECOND -1);
TCNT1 = 0;
Ich habe also den Vorteiler auf 64 eingestellt und erwarte jetzt, daß
der Interrupt etwa 1000 mal / Sekunde aufgerufen wird.
(8MHz / 64 = 1MHz / 8 = 125000 Timer /s, oder?

In der ISR toggle ich ein Outputpin, ich erwarte jetzt, daß ein Zyklus
2ms dauert, mein Oszilloskop sagt mir, daß es etwa 4ms sind, auch mein
eingebautes Autopoweroff dauert zu lange.

Im Anhang ein Codefragment.

Vieleicht hat jemand eine Idee, was ich beim Einstellen des Timers
nicht bedacht habe.

Den Internen Oszillator habe ich in einem anderen Test geprüft, in dem
ich den Takt ausgegeben und gemessen habe.

Gruß
    Dirk

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.