Forum: Mikrocontroller und Digitale Elektronik Fehler bei CTC Berechnung im Wiki?


von john (Gast)


Lesenswert?

Hallo,

ich bin gerade dabei einen Timer so einzustellen, damit ich jede ms 
einen Interrupt erzeuge. Das ist ja mit dem CTC Modus der Timer ja 
eigentlich kein Problem... Nur nun habe ich eine Frage. Im Wiki hier 
steht als Formel zur Berechnung von f_oc:
http://www.mikrocontroller.net/wikifiles/math/8/d/6/8d66ee450ccc82bef1d3a7cb951c08fe.png

Nur im Datenblatt steht im Nenner noch der Faktor 2.

Was ist nun richtig? Ich denke mal das im Datenblatt oder?
Wobei mir die Berechnung im Wiki logischer erscheint...

von Sörus (Gast)


Lesenswert?

Man kann alles aus dem Zusammenhang reißen und in irgendeinem Datenblatt 
an irgendeiner Stelle wird das sicher auch anders stehen. Ich fang aber 
jetzt nicht an zu suchen.

von Stefan E. (sternst)


Lesenswert?

john schrieb:
> Was ist nun richtig? Ich denke mal das im Datenblatt oder?

Beides, je nach dem, was genau du machen willst. Du hast im Datenblatt 
nur nicht aufmerksam genug gelesen, was die Formel eigentlich 
beschreibt. Lies nochmal, vielleicht kommst du ja von alleine darauf, wo 
dort der Faktor 2 im Nenner herkommt.

von spess53 (Gast)


Lesenswert?

Hi

Mach mal einen Link zu der Stelle im Wiki. Wenn das wirklich unter CTC 
steht ist es falsch.

MfG Spess

von john (Gast)


Lesenswert?

Hallo,

wegen Datenblatt: ich habe das vom Attiny2313, vom Atmega8, Atmega1284 
usw angeschaut und verglichen.

Hier der Link zum Wiki: 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Die_Timer_und_Z%C3%A4hler_des_AVR#CTC-Betriebsart_.28Clear_Timer_on_Compare_Match.29

von Tip (Gast)


Lesenswert?

john schrieb:
> Was ist nun richtig? Ich denke mal das im Datenblatt oder?

Nimm den Simulator deiner Entwicklungsumgebung und probier's aus. 
Irgendwelche Mutmaßungen, wem man nun glauben möchte, nützen da 
überhaupt nichts.

von Klaus D. (kolisson)


Lesenswert?

Oh John,
hast du mal an den "Toggle " gedacht ?
Dann ändert sich immer erst beim 2ten Durchlauf etwas.

Gruss
K.Putt

von spess53 (Gast)


Lesenswert?

Hi

>Oh John, hast du mal an den "Toggle " gedacht ?
>Dann ändert sich immer erst beim 2ten Durchlauf etwas.

Im Wiki steht:

'Die Frequenz des Taktes am entsprechenden Ausgang ist dann:...'. Und 
das ist falsch.

MfG Spess

von Stefan E. (sternst)


Lesenswert?

spess53 schrieb:

> Im Wiki steht:
>
> 'Die Frequenz des Taktes am entsprechenden Ausgang ist dann:...'. Und
> das ist falsch.

Jap, bei der Beschreibung ist die Formel falsch.
Das führt den armen John jetzt aber noch mehr in die Irre, denn für 
seinen Zweck ist die richtige Formel die falsche. ;-)

von john (Gast)


Lesenswert?

Ok, danke, nun habe ich es denke ich verstanden ;)

Also wenn ich einen Takt von 20Mhz habe und einen Interrupt mit 400Hz 
will, dann rechne ich das so aus:
OCR1A = (f_cpu/(prescaler*f_oc))-1 = (20000000/(8*400))-1 = 6249
Das sollte nun aber passen oder?

Vielen Dank für eure Hilfe

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.