Ich möchte für mein Auto ein Tacho und einen Drehzahlmesser mit einem ATMega32 basteln. Ich hatte mir es so vorgestellt, dass ich einen Timer laufen lasse (den Timer2(8Bit)) der dann z.B. alle 200ms nachguckt wieviele Impulse die beiden Counter gezählt haben. Das Problem ist natürlich, dass ich nicht den 16Bit Timer verwenden kann, da ich ja nur der erste 8Bit und der 16Bit externe Eingänge haben. Das heisst für mich, dass ich nur maximal ein Intervall von 16,32ms hinbekomme, wenn ich mich nicht verrechnet habe. In dieser Zeit kann es natürlich auch sein, dass noch gar nichts gezählt wurde. Denn z.B. bei Standgas (ca. 800 U/min) bekomme ich ja nur alle 75ms einen Impuls (falls es nur einer pro Umdrehung ist). Entsprechend gleich ist es ja auch bei geschwindigkeit, sogar noch extremer. Nun könnte ich natürlich noch per Software durch den Timer immer wieder eine Variable hochzählen lassen, so dass ich z.B. auf 500ms komme. Allerdings kann es dann ja auch ungenau werden oder hält sich das einigermaßen in Grenzen? Wie würdet ihr das machen?
Du hast 3 Timer, also kannst Du einen für die Meßzeitbasis und für alle anderen Zeitbedingungen nutzen und die anderen beiden zum Zählen der beiden Frequenzen. Man kann mit dem Overflowinterrupt alle Timer beliebig erweitern und verliert dabei überhaupt nichts an Genauigkeit. Man muß nur beachten, daß der Überlauf nicht atomar erfolgt, d.h. der Interrupt wird später ausgeführt. Bekommt man zeitnahe zum Auslesen des Timers einen Überlauf, kann man am höchsten Bit des Timerwertes entscheiden, ob der Überlauf noch mitgezählt werden muß oder nicht. Peter
Das ist schon richtig, dass ich 3 Timer habe. Zwei davon will ich als aber ja als Counter benutzten. Und nur Counter0 und Counter1 haben externe Anschlüsse. Daher habe ich für die Zeitbasis keinen 16Bit Timer sondern nur 8Bit. Damit kann ich aber mit einem Vorteiler von 1024 nur einen 64us Interrupt realisieren. Lasse ich den 8Bit Zähler damit inkrementieren bekomme ich alle 16,32ms einen Overflow. Was meinst du jetzt mit deinem höchsten Bit?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.