Hallo Leute, ich hab mich gerade damit beschäftigt mir mit meinem Atmega 8 (clk 3,6864MHz) den Timer0 auf 1ms einzurichten. Alsom habe ich mich ein bisschen im Internet belesen und habe auch die Ergebnisse mehrerer Programme verglichen. Folgende Lösung habe ich nun gefunden: Gewünschte Zeit: 0.001 s = 1ms Rechnerich am nächsten gelegen: 0.0010069444444444444 s Verwendeter prescaler: 64 Verwendeter preload: 198 ok schön und gut. nun weiß ich wie ich ihn einstellen muss. Aber mich stört schon ein wenig einfach alles "vorgekaut" zu bekommen. Also hab ich die Formel aus dem gcc die ich gefunden habe genommen und mal nachgerechnet. (2^8bit * 64) / ( 3,6864MHz * 1000) = 4,444444ms aber nicht 1 ms! Und den Wert von 198 für TCNT0 habe ich nicht wirklich begriffen. Ok ich "kürze" den Timer etwas ab, sodass der Zählwert wohl anders ist, aber gibts dafür auch eine Formel, dass ich das auch mal verstehe, anstatt es abzukäsen? Gefunden habe ich diese nämlich nicht. Danke für eure Hilfe! Sven
Naja. Der Zaehler zaehlt von 198 bis 256, und wird dann neu mit 198 geladen...
Lies dich in den CTC Modus ein, mit Preload ist eigtl immer Gemurkse.
schon klar, aber woher weiß das programm, was mit den wert gab, dass dieser 198 sein muss. ich möchts einfach verstehen. schließlicht sind 4,44ms nicht 1ms! ich hab gerade mal nachgerechnet. wnen mit einem prescaler und einer auflösung von 8bit 4,44ms rauskommt bei 256 zählschritten dann kann ich das durch 4,44 teilen und erhalte so 1ms! dann muss ich wohl dem zähler einen wert von 3,44ms vorgeben, umgerechnet in zählschritte -> 198
beim Timer0 gibts kein CTC. beim Timer1 wäre das dann äquivalent 3686 am OCR1A ohne Vorteiler. Aber den Timer brauche ich noch woanders :D
Nochmal ganz einfach: 3686400 / 64 = 57600 Jetzt zählt der Timer nicht mit 3,6864Mhz sondern mit 57,6kHz um eine Stelle weiter. 1kHz willst du erreichen. Also musst du 57,6 Schritte zählen. Deshalb fängt man bei 0 - 58 = 198 an zu zählen.
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.