-
-
Timer Initialisierung:
Bsp.: Verwendung von Timer1
TIMSK |= _BV(TOIE1);
//aktivieren des Überlaufinterrupts von Timer1
Nun muss man ausrechnen, wie man auf die 2s kommt (ich nehme mal 4MHz Takt an). Als Prescaler (Vorteiler) verwende ich mal exemplarisch 1024, du kannst auch einen anderen nehmen, musst dann nur die folgende Rechnung abändern.
TCCR1B = _BV(CS12) | _BV(CS10); //Prescaler definieren
Mit diesem Prescaler erhält man nun eine Zählfrequenz von 4MHz/1024 = 3,906kHz, also dauert ein Zählschritt dann 1/3,906kHz = 256us.
Um auf 2s zu kommen, muss der MC also 2s/256us = 7812,5 Zählschritte machen.
Das Timer1 ein 16-Bit Timer ist, musst du ihn also immer mit 2^16-7812 = 57723 vorladen.
TCNT1 = 57723; //Zählregister vorladen
Zuletzt musst du Interrupts noch global zulassen.
sei ();
Das LED-Blinken würde ich dann, wie oben bereits demonstriert, in der ISR ausführen lassen.
Gruß, Alex
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen