Forum: Mikrocontroller und Digitale Elektronik Timer


von Philipp Karbach (Gast)


Lesenswert?

hallo,
hab hier ein rechenproblem. versuche nen genaue uhr in mein projekt
einzubauen. in der codesammlung hab ich nen netten code dafür gefunden.
das ganze läuft auch, ist aber zu langsam weil es nicht an meine
konfiguration angepasst ist. derjenige initialisiert den timer so:

void timer_init (void) {
    TCCR1B = (1<<CS12) | (1<<CS10);
    TIMSK |= (1<<TOIE1);
    TCNT1 = 53817;
    sei ();
}

das versteh ich auch ganz gut aber wie berechnet man die 53817? ich hab
nen atmega8 mit 3.6864Mhz quarz. Könnte mir das jemand mal vorrechnen?
Vielen Dank. :)

von Rahul (Gast)


Lesenswert?

schön, dass du nicht meine Uhr nimmst...

65535-53817 = 11718 Schritte bis zum Überlauf
3,6864MHz / 1024 = 3600Hz
Eigentlich müsstest du TCNT1 = 61935 setzen, um jede Sekunde einen
Überlauf zu produzieren.

von peter dannegger (Gast)


Lesenswert?

Man kann aber auch die Formeln im Klartext hinschreiben, der
C-Präprozessor kann nämlich Konstanten selber ausrechnen:

http://www.mikrocontroller.net/forum/read-4-57760.html#new


Peter

von Philipp Karbach (Gast)


Lesenswert?

sorry deine uhr hatte ich noch nicht so verstanden. ich hab mir das
angesehen ;). danke für die rechnung, ich probier es gleich mal :))

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.