Forum: Mikrocontroller und Digitale Elektronik Baudratenquarz und Zeitmessung


von Jürgen H. (misteret)


Lesenswert?

Hi!
Ich verwende einen Baudratenqarz mit 14,7456 Mhz beim ATmega16.

Für eine Berechnung muss ich eine möglichst exakte Zeit messen. Die 
Messzeit beträgt mind. 0,5s. D.h. 1ms Genauigkeit wäre schon super.

Ich frage mich jetzt, wie ich den Prescaler im ATmega einstellen muss, 
um für einen Interrupt z.b. Genau 1 ms zu brauchen. Oder 1 µs. Dies 1000 
mal aufaddiert ergibt ja auch 1ms.

Die Rechnung wäre ja ungefähr so:

x = OCR1A bzw OCR0, je nachdem, ob Timer0 oder Timer1 verwendet wird.

Für t müsste ich eben auf eine ganze Zahl kommen, und das schaffe ich 
durch probieren irgendwie nicht wirklich

von Falk B. (falk)


Lesenswert?

@  Jürgen Hems (misteret)

>Ich verwende einen Baudratenqarz mit 14,7456 Mhz beim ATmega16.

>Für eine Berechnung muss ich eine möglichst exakte Zeit messen. Die
>Messzeit beträgt mind. 0,5s. D.h. 1ms Genauigkeit wäre schon super.

Easy.

14,7456 MHz / 1ms = 14745 Takte. Die Nachkommastelle von 0,6 kann man 
mit einem Fehler von 40ppm in den Skat drücken. Siehe Timer und 
CTC-Modus.

>Ich frage mich jetzt, wie ich den Prescaler im ATmega einstellen muss,
>um für einen Interrupt z.b. Genau 1 ms zu brauchen.

Siehe oben.

> Oder 1 µs.

Das willst du nicht wirklich ;-)

>Für t müsste ich eben auf eine ganze Zahl kommen, und das schaffe ich
>durch probieren irgendwie nicht wirklich

Schon mal was von Grundrechenarten gehört? Verhältnisgleichung, Dreisatz 
und so?

Kopfschüttelnd
Falk

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.