Forum: Mikrocontroller und Digitale Elektronik Timer ATMEGA8


von Timo (Gast)


Lesenswert?

Hallo,
Habe eine Taktfrequenz von 8 MHz am ATMega 8 liegen. Ich möchte nun eine 
Funktion schreiben, der ich als Parameter einen Zeitwert ( ms) übergebe.

Ich möchte dieses mit dem Timer machen, da es eine ziemlich korrekte 
Zeit sein muss.

Ich habe nun gedacht für den Timer0:

TCCR0 |=(1<<CS00);        // Prescaler von 256

Somit habe ich ja 8 Mhz = 8000000 / 256 = 31250

D.h. ja, dass ich eigentlich nur noch bis 31250 zählen muss und dann 
einen Interrup auslösen kann ...
Gehe ich richtig vor?

von Björn R. (sushi)


Lesenswert?

Timer 0 ist ein 8-Bit Timer! Der kann nur bis 255 zählen!

von Timo (Gast)


Lesenswert?

denn nehm ich den 16 bit zähler,oder andere idee?

von Timo (Gast)


Lesenswert?

Ist denn das prinzip richtig? Will wie gesagt eine zeitfunktion haben. 
Damit ich nachher genau steuern kann, zb. displayschaltzeiten einhalten 
kann oder so

von spess53 (Gast)


Lesenswert?

Hi

Wenn du beim 8-Bit-Timer den Vorteiler 32 nimmst. bekommst du einen 
Overflow bei 1,024ms. Die 8MHz hören sich wie interner RC-Oszillator an. 
Der ist sowieso nicht so genau. Wenn du im Overflow-Interrupt eine 
Variable herunterzählst kannst du definierte Zeiten erzeugen.

MfG Spess

von Timmo H. (masterfx)


Lesenswert?

Also wenn du z.B. eine Funktion "wait_ms(int ms)" schreiben willst würde 
ich das so machen.
Wenn du 8 MHz Takt hast würde ich erstmal gucken welcher Prescaler sich 
eignet um wirklich exakt auf 1 ms zu kommen. (1*10^-3)*(8*10^6) = 8000. 
Nun guckst du mit welchen Prescaler du das ganzzahlig teile kannst. Da 
würde ein Prescaler von 64 passen (8000/64 = 125). Somit reicht ein 8 
Bit Timer aus.

von Timo (Gast)


Lesenswert?

Dann kann ich ja sogar noch us nehmen. Dann habe ich bei 8 schon ein 
interrup

von Timo (Gast)


Lesenswert?

TCCR0 |=(1<<CS00) | (1<<CS00);
OCR1  = 125;

wie scxhreib ich nun, dass bei dem vergleichswert ein interrupt 
ausgelöst wird?

von Timo (Gast)


Lesenswert?

abgesehen, dass eh bei 125 ein overflow entsteht

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.