-
-
Erfahrener Benutzer
Fleißiges Mitglied
Den letzten Post streichen wir mal. Dieses "machs ganz oder gar nicht" Gesülze kann ich auf den Tod nicht ausstehen!
@x-ryder:
Der Quarz schwingt 7 273 800 mal pro sekunde.
Der Controller demnach auch weil der Takt nicht vorgeteilt wird.
Nach Adam Riese ist ein Taktzyklus 1/7 273 800s (0,1347µs) sekunden lang.
Nun muß man den Prescaler (Vorteiler) in "Config Timer1...." so einstellen, das der Timer1 maximal 65535mal zählt und innerhalb dieses Vorgangs 1Sekunde verstreicht.
Gültige Werte sin 1,8,64,256 und 1024.
Jetzt kommt die kleine Rechnerei:
Man multipliziert die Zykluszeit mit dem Wert für den Prescaler. (ich nehm einfach ma 256 als Wert an)
0,1347µs * 256 = 35,1988µs.
Nun dividiert man 1 durch dieses Ergebniss.
1/0,0000351988s = 28413,28125
Der Controller kann nur Ganze Zahlen verarbeiten, also rundet man hier ab und es dauert etwas weniger als eine Sekunde, oder man rundet auf und es dauert etwas länger als eine Sekunde bis das Timeroverflowflag die Interruptroutine einleitet.
Dazu muss man aber dem Timer sagen wo er beginnen soll zu zählen.
Dazu subtrahiert man den oben errechneten Wert von 65535.
65535 - 28413 = 37122
Der erste Befehl in der Interruptroutine muss dann
Timer1 = 37122
lauten, und diese Routine wird dann in dem oben ausgerechneten festen Zeitintervall durchgeführt.
mfG aus P
der E-Fan
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen