Forum: Mikrocontroller und Digitale Elektronik Timer2 solle alle 5ms überlaufen


von Wolfgang (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich habe eine frage zu einer Aufgabe bei der ich ein Gedanken fehler 
habe.
Undzwar solle der Timer2 jede 5ms einen Interrupt auslösen.

Wir haben eine Frequenz von 48Mhz.

So in den Timer kommt Fosc/4 rein, also 12 Mhz.
Nehmen wir einen Prescaler von 16, so haben wir nur noch eine Frequenz 
von 12Mhz / 16 = 750000 Hz.
Einen Zählschritt braucht dann 1/750000 Hz = 1,3333333 *10^(-6) sekunden
Da wir 5ms haben wollen:
5ms/ 1,333333 *10^(-6) s  = 3750 Zählschritte. gerundet.

So aber unser Timer2 hat ja nur 8 bit und kann somit nur bis 255 Zählen.
Wir haben noch unseren Postscaler, aber der steht hinter dem Compare 
Bauteil.

Darf ich denn jetzt meine 3750 Zählschritte durch einen Postscaler von 
16 teilen? Dann bekomme ich als maximaler Zähler 234.

Ich finde es halt komisch dass mein Postscaler hinter dem eigendlichen 
Zähler steht, und ich den somit in meinen Gedanken vom Zähler 
abschneide, aber das darf ich wohl nicht ?

lG

von Wolfgang (Gast)


Lesenswert?

Verrate doch mal, wie der Käfer heißt, in dem dein Timer2 sein Zuhause 
hat. Manchmal finden sich im Datenblatt wertvolle Tips zur Funktion der 
HW-Baugruppen.

von PIC (Gast)


Lesenswert?

Wird wohl ein PIC sein ...

von PIC (Gast)


Lesenswert?

Wolfgang schrieb:
> Wir haben eine Frequenz von 48Mhz.

PIC18F?

von STK500-Besitzer (Gast)


Lesenswert?

48MHz * 5ms = 240000 Timerticks 240e3
Teilt man die durch 250 sind es 960 Ticks am Postscaler
Die kann man dann wiederum durch 16 teilen und bekommt 60 heraus.
Das ist die Anzahl der Events (IF/ISR-Auslösungen), die man dann noch 
zählen muss.
Dazu ist es natürlich nötig, den Comparator auf 250 (oder 249) setzen zu 
können. Und keine Rundungsfehler...

von Wolfgang (Gast)


Lesenswert?

STK500-Besitzer schrieb:
> 48MHz * 5ms = 240000 Timerticks 240e3
> Teilt man die durch 250 sind es 960 Ticks am Postscaler
> Die kann man dann wiederum durch 16 teilen und bekommt 60 heraus.
> Das ist die Anzahl der Events (IF/ISR-Auslösungen), die man dann noch
> zählen muss.
> Dazu ist es natürlich nötig, den Comparator auf 250 (oder 249) setzen zu
> können. Und keine Rundungsfehler...


Das ist natürlich auch ne schöne Lösung! Danke hierfür!
ABER meine ist auch richtig oder ?

von Wolfgang (Gast)


Lesenswert?

Ja PIC18

von STK500-Besitzer (Gast)


Lesenswert?

Wolfgang schrieb:
> Das ist natürlich auch ne schöne Lösung! Danke hierfür!
> ABER meine ist auch richtig oder ?

mit dem Rundungsfehler ist das ja nichts anderes.
So ungern ich PICs mag, der Counter-Aufbau ist schick.
Wenn der Counter gar keine 48MHz bekommt (hatte ich überlesen), dann 
sollte "mein" Weg ja noch einfacher sein (einen der Scaler um 4 
verringern).

von Johannes R. (oa625)


Angehängte Dateien:

Lesenswert?

Hallo Wolfgang!

Von MikroElektronika (www.mikroe.com) gibt es ein schönes Tool zur 
Timerauslegung, den Timer Calculator. Verwendbar stand-alone oder als 
Plugin der mikroe-Compiler.
Erzeugt Code wahlweise in MikroC, MikroPascal und natürlich auch in 
MikroBASIC.

Gruß
Johannes

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.