Forum: Mikrocontroller und Digitale Elektronik Timer0 , 10ms zählzeit


von Oliver D. (smasher)


Lesenswert?

Hallo,

ich wollte mal fragen, wie ihr mit Timer0 und 16mhz quarz eine 
abtastrate von 10ms erzeugen würdet.
Ich habe mir überlegt, dass man bei einem prescaler von 256 ca. 245,1/s 
einen Timer überlauf hat....

Irgendwie kommen aber immer krumme Zahlen raus.
Was verwendet ihr um möglichst genau 10ms zu kommen?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

(Klingt nach AVR)

Du kannst ihn im CTC-Modus betreiben und OCR0 auf 250 setzen, dann
hast du 250 Hz als Frequenz für den TIMER0_COMPARE_vect.  Davon
zählst du 25 Stück in der ISR ab, bevor du das Event auswertest.

von Johannes M. (johnny-m)


Lesenswert?

Jörg Wunsch wrote:
> (Klingt nach AVR)
Denke ich auch.

> Du kannst ihn im CTC-Modus betreiben und OCR0 auf 250 setzen,
Naja, genaugenommen auf 249...

von lightninglord (Gast)


Lesenswert?


von Oliver D. (smasher)


Lesenswert?

Ja, es geht um einen Mega8.


CTC gibts aber doch nicht für Timer 0, oder?

von hans (Gast)


Lesenswert?

Hallo Oliver,

mit Prescale 64 und Timernachladung TCNT0 0x06 erhältst du
genau 1 ms.
Du must ja nicht von 0 bis 255(256) zählen!

Gruß Hans

von Oliver D. (smasher)


Lesenswert?

Alles klar, danke!


Sag mal hast du das so "im kopf" gemacht oder nutzt du für soetwas ein 
programm?

von hans (Gast)


Lesenswert?

Hallo Oliver,

das war noch Kopfarbeit!

1 ms=1000 us wären 16000 Taktzyklen

16000 geht nicht also 16 in den Vorteiler bleibt 1000
1000 geht nicht also 4 in den Vorteiler bleibt 250

Test 250 geht in ein Byte 4*16=64 ist als Vorteiler im Datenblatt.

also Prescale 64 und nachladen 256-250=6

gruß Hans

von Oliver D. (smasher)


Lesenswert?

Ok, dann weiß ich ja jetzt, was anzuwenden ist um soetwas zu machen :)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Oliver D. wrote:

> Ja, es geht um einen Mega8.

> CTC gibts aber doch nicht für Timer 0, oder?

Beim ATmega8 noch nicht.  Bei allen neueren AVRs schon.  Kannst ihn
ja ggf. durch einen ATmega88 ersetzen.

Das mit dem Nachladen in der ISR hat immer den Nachteil von Jitter,
je nachdem, wie hoch die restliche Interruptbelastung noch ist.

von Andreas (Gast)


Lesenswert?

>Das mit dem Nachladen in der ISR hat immer den Nachteil von Jitter,
>je nachdem, wie hoch die restliche Interruptbelastung noch ist.

Oder, ob im Programm mit Interruptsperren gearbeitet wird!

von uCWorld (Gast)


Lesenswert?

Jitter?


Sorry, aber bin noch nicht so lange im Geschäft ;)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

uCWorld wrote:
> Jitter?

http://de.wikipedia.org/wiki/Jitter

von uCWorld (Gast)


Lesenswert?

Aaaaah 1!

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.