Hallo Leute, ich habe hier einen Code, der meiner Meinung nach eine LED mit 10Hz toggeln sollte. Das ganze soll mit Timer2 am Mega32 passieren. Auf http://rn-wissen.de/wiki/index.php/Timer/Counter_%28Avr%29 habe ich eine gutes Beispiel gefunden, welches ich gern so verwenden würde. (Der erste Code im Abschnitt CTC) Nach dem ich den Code komplett kopiert habe, stellte ich schnell fest das er sich nich kompilieren lässt. Der Grund dafür war schnell gefunden: Die Initialisierungsbefehle standen in keiner Funktion und deshalb kamen 7 Fehler. Das habe ich geändert und der Code lief. Dann habe ich die die Vorlade-Werte an meinen interen 8Mhz RC Oszillator angepasst. Code überspielt und siehe da, die LED an Portd.6 blinkt. Allerdings nicht mit 10Hz, sondern mit 1,59Hz (Gemessen mit DSO). Die Frage ist nun, warum? Ich habe zur Berechnung der Vorlade-Werte das Programm KAVRCalc verwenden. Das sagt mir, dass ich als OCR Wert 0x4F und als TCNT0 Wert 0xB0 nehmen soll. Hab das alles ins Programm eingetragen, aber ich komme nicht auf die 10Hz. Wo könnte mein Fehler sein? Viele Grüße Jan
10Hz schrieb: > Auf > http://rn-wissen.de/wiki/index.php/Timer/Counter_%28Avr%29 > habe ich eine gutes Beispiel gefunden, welches ich gern so verwenden > würde. > (Der erste Code im Abschnitt CTC) Das ist Müll. Das macht im Resultat nichts anderes als ein delay_ms(XXX). Dazu braucht man keinen Timer. Arbeite die Tutorials hier im Forum zu Timern durch. Da lernst du was Vernünftiges. mfg.
10Hz schrieb: > Das sagt mir, dass ich als OCR Wert 0x4F und als TCNT0 Wert 0xB0 nehmen > Wo könnte mein Fehler sein? In deinem Programm initialisierst du Timer2, setzt aber TCNT0 auf 0xB0. Müßte TCNT2 sein. Rest hab ich nicht überprüft. (Warum Voraldewert im CTC Modus ...)
Außerdem läuft hier nicht der CTC-Modus, was man erheblich leichter bemerken würde, wenn man nicht so:
1 | TCCR2 = 0b00100001; // Prescaler von 1 | CTC-Modus (siehe unten für Beschreibung) |
sondern so:
1 | TCCR2 = (1<<COM21) | (1<<CS20); |
arbeitet. Das ist das, was du oben geschrieben aber sicher nicht beabsichtigt hast.
Es ist möglich, dass Dir die Sicherung "Div8" einen Streich spielt. Ein schönes Beispiel dafür, dass der Spruch: "Kopieren geht über Studieren" doch den einen oder anderen Haken hat.
Amateur schrieb: > Es ist möglich, dass Dir die Sicherung "Div8" einen Streich spielt. > > Ein schönes Beispiel dafür, dass der Spruch: > "Kopieren geht über Studieren" > doch den einen oder anderen Haken hat. Wie wahr, wie wahr mit dem "Div8" am Mega32.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.