Forum: Mikrocontroller und Digitale Elektronik Frage zu Timer1 (16-bit)


von Notker C. (Gast)


Lesenswert?

Hallo AVR-Gemeinde,

ich habe mal eine Frage zu dem 16-bit Timer. Und zwar möchte ich sehr 
präzise die Zeitverzögerung von einer Sekunde messen. Wenn ich meinem 
AVR nun einen Quarz von 4,096Mhz verpasse, kommt das ja bei einer 
Vorteilung von 1024 genau hin, wenn ich den Zähler dann noch 4000 Zyklen 
zählen lasse. Ich möchte das Programm allerdings interruptlos gestalten, 
weil dazu keine Notwendigkeit besteht und ich den Zähler mittels Polling 
abfragen will. Wenn ich das, was ich bislang an Informationen gesammelt 
habe, richtig interpretiere, sollte es auch ohne Interrupt möglich sein, 
den Timer1 durch Setzen des CTC1-Bits im Register TCRR1B so zu 
gestalten, dass er freilaufend immer dann auf Null zurücksetzt, wenn 
sein Zählerstand mit dem Vergleichsregister A übereinstimmt, ohne dass 
ich ihn immer wieder softwaregesteuert neu setzen muss.
Ist das richtig?
Ich könnte natürlich durch Schreiben von Beispielcode im AVR-Studio 
herumprobieren, aber das Debugging von Code mit solch langen 
Zählerverzögerungen gestaltet sich dort recht unkomfortabel und man kann 
ja auch mal jemand fragen, der Ahnung von diesen Geschichten hat.

Vielleicht wären einige Zeilen Beispielcode in C nicht schlecht.

Vielen Dank schon mal für die Beratung!

Beste Grüsse,

Notker

von Jonas Diemer (Gast)


Lesenswert?

ja, es geht! du bräcuhtest dazu nichtmal einen timer, kannst ja auch 
einfach eine "delay loop" benutzen...

wieso geht das nich komfortabel zu debuggen? du musst doch lediglich 
breakpoints setzen, dann kannst du die vergangene zeit im debugger 
ablesen.

sorry, dass ich keinen code abliefere. :-)

von Stefan_H (Gast)


Angehängte Dateien:

Lesenswert?

Diese Funktion wartet die anzahl der übergebenen Millisekunden. Is in C, 
hoffe du kannst es verwenden. Geht nur bei 8Mhz, müßtest es umschreiben 
um andere Taktfrequenz zu verwenden. Komentar fehlt, wenns Fragen git, 
dann einfach fragen.

lg,

Stefan

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.