Prescalar AVR ATMEGA162

Gast #5487415
Lesenswert?

Hallo,

je nach Timer gibt es Nebenbedingungen, z.B. den max. Zählwert.
Z.B. 2^8 = 256 oder 2^16 = 65536

Dann gibt es unterschiedliche Prescaler (Vorteiler), z.B. Elemete aus 
dieser Menge: {0,1,8,64,256,1024}

Die Auswahlbedingung kann man in eine Formel schreiben:
1
F_CPU/ Prescaler/ DEST_FREQUENCY <= MAX_TIMER_COUNTER

Z.B.: es sei gegen:
MAX_TIMER_COUNTER = 2⁸ ; ist Abhängig vom Timer und Timermodus!
F_CPU = 1*10⁶ Hz
DEST_FREQUENCY = 2*10³ Hz
Prescaler = 8

Dann fragt man sich, gilt:
1
(1*10 Hz/ 8/ 2*10³ Hz <= 2) <==>
2
(500/ 8 <= 2)
Und berechnet noch den Fehler aus, wir rechnen hier mit Ganzenzahlen aus 
|N.

Der Bruch 500/ 8 = 62,5 und kann also 62 oder 63 als Prescaler wählen.

Also teste man noch andere Prescaler auf geringe Fehler aus.

Mit Prescaler = 256 folgt:
1
(1*10 Hz/ 256/ 2*10³ Hz <= 2) <==>
2
(500/ 256 <= 2)
Der Bruch 500/ 256 ~ 1,9531
Mit (Auf-)Runden (long)(1.0* 500/ 256 +0.5) = 2 kommt man zu einem 
besseren Ergebnis.
Gast #5487520
Lesenswert?

Einen Prescaler benötigt man, wenn das gewünschte Teilerverhältnis 
größer ist als es der Timer alleine schafft.
  Hier gilt 1 MHz / 2 kHz = 500, ein 16-bit-Timer erreicht bis zu 2^16 = 
65536, also ist kein Prescaler nötig, bzw. er wird auf 1 gesetzt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren