Forum: Mikrocontroller und Digitale Elektronik Atmega32 counter interrupt alle 1ms


von Godi S. (godi22)


Lesenswert?

Hallo!

Ich will mit dem Timer2 des Atmega 32 die Zeit die er eingeschaltet ist 
in ms mitzählen.
Dazu habe ich mir gedacht ich lade den timer so vor das er jede ms ein 
overflow interrupt aufruft.
Den Timer will ich über den Eingang TOSC2 mit einem externen Quarz mit 
32768Hz Takten.
So das heißt ich habe 32,768Takte pro ms.
Wenn ich jetzt den Timer mit (256-32,768) = 223 Takten vorlade dann wird 
das ja ungenau.

Was kann ich da machen damit ich die ms genau bekomme?
Oder funktioniert das nicht bei so einer geringen Taktrate?

godi

von raketenfred (Gast)


Lesenswert?

Hast du über einen Prescaler mal nachgedacht?

Damit könnte man das ggf. ganzzahlig hin kriegen

von Peter D. (peda)


Lesenswert?

Warum willst Du noch nen extra Quarz anschließen?
Nimm doch einfach den CPU-Quarz als Takt.

Wie genau muß denn die Zeitmessung sein?

Nimm irgendein Interval in der Nähe von 1ms und rechne dann erst zur 
Ausgabe auf ms um.


Peter

von Oliver J. (skriptkiddy)


Lesenswert?

Du brauchst als Taktrate ganzzahlige Vielfache von 1 kHz. Dann kannst du 
auf T_zykl=1ms Intervall herunterteilen.


Mathematisch ausgedrückt heißt das:

wobei n eine natürliche Zahl und T_zykl dein Interval ist.


Gruß Skriptkiddy

von Godi S. (godi22)


Lesenswert?

Vielen Dank für die Antworten.

Den externen Quarz habe ich nur weil es eine Übung ist.
Über prescaler habe ich nachgedacht nur komme ich da nicht auf einen 
guten Wert.

Mir ist jetzt noch was anderes eingefallen.
Ich werde einfach die Interrupts mitzählen und dann eine Funktion 
schreiben die mir als rückgabewert
(TCNT2+countOverflow*256)/32.768
zurückgibt.

Dann sollte das schon reichen. :)

Aber echt ein super Forum hier. Da bekommt man flink gute Antworten! :)

godi

von Peter D. (peda)


Lesenswert?

godi godi schrieb:
> Ich werde einfach die Interrupts mitzählen und dann eine Funktion
> schreiben die mir als rückgabewert
> (TCNT2+countOverflow*256)/32.768
> zurückgibt.

So einfach geht es aber nicht.

Beitrag "AVR Timer mit 32 Bit"


Peter

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.