Forum: Mikrocontroller und Digitale Elektronik Quarz Frequenz Vorzähler Interrupt... Fehler?


von Martin (Gast)


Lesenswert?

Hallo!

Ich glaube, ich habe einen Fehler in einem Tutorial auf
dieser Domain gefunden.

Seite:
http://www.mikrocontroller.net/articles/c/Uebung_9.htm

Text:
---------------------------------------------------------
Ich habe einen Quarz mit einer Frequenz von 386400 Hz eingesetzt. wenn
nun der Timer 1 mit dem Vorzähler 1 gestartet wird so läuft dieser jede
Minute genau 3375 mal durch. Wir brauchen also lediglich eine
Interruptroutine in den Timer 1 Overflow einzubinden und bei jedem
Aufruf einen Zähler zu inkrementieren. Erreicht dieser Zähler den Wert
3375 so ist eine Minute verstrichen.
---------------------------------------------------------


Der Quarz hat die Frequenz 386400 Hz. Da der Vorzähler 1 ist,
wird der Timer bei jedem Takt um 1 erhöht. Ich gehe davon
aus, dass es ein 8-Bit-Timer ist. Also löst er einen Interrupt
aus, wenn er 256 erreicht hat. Er löst also in einer Sekunde
386400/256 (ungefähr)= 1509 Interrupts aus. In 60 Sekunden,
also in einer Minute löst er also 386400*60/256 = 90562
Interrupts aus und NICHT 3375.
Hab ich da etwas nicht verstanden oder ist das tatsächlich ein
Fehler auf dieser Seite?

Martin

von crazy horse (Gast)


Lesenswert?

ohne jetzt genauer zu schauen:
ist bestimmt ein 3,6864MHz-Quarz gemeint, der ist gängig und wird gern
und oft benutzt (UART!). Entweder Tippfehler oder Lesefehler von dir.

von Martin (Gast)


Lesenswert?

Es war kein Lesefehler. Ich habe es gerade nochmal überprüft und
Diese MHz-Zahl kommt im Tutorial öfter vor, auch in dem
Beispielprogramm.

Mit 3,6864 MHz käme ich aber auch nicht auf den Wert 3375 pro Sekunde:
3686400*60/256 = 864000 (sogar viel größer als 3375)

Martin

von crazy horse (Gast)


Lesenswert?

ok, geschaut.
Warum gehst du davon aus, dass ein 8bit-Timer benutzt wird?
Das Programm läuft mit dem Timer1, der ist 16bit.
Aber recht hast du insofern, dassdie Quarzfrequenz nicht korrekt
angegeben ist, im Programm steht es richtig. Wie schon vermutet,
3,6864MHz.

von Martin (Gast)


Lesenswert?

Achso g

Dann hab ich mich im Programm wohl verlesen. Im Tutorial
sind leider einige Fehler. Ich hab dazu schon was im
Verbesserungsforum geschrieben. Die Idee, das ins
Wiki zu stellen, ist echt gut. Die hatte dort jemand.

Jetzt komme ich endlich auf den richtigen Wert von 3375!
Danke!

Martin

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.