Timer2 solle alle 5ms überlaufen

Gast #4219657
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
Angehängte Dateien:
Gast #4219695
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...
Gast #4219712
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 ?
Gast #4219733
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).

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.