Hallo Leute,
habe ein Problem. Ich versuche ein Rechtecksignal am OC2 zu erzeugen.
Die Frequenz will ich verändern können von 1 bis 100 Hz. Muss alles
nicht so besonders genau sein! Problem ich weiß nicht wie man den MAX
value verstellt. Beim Timer 1 mit OC1A und OC1B kein Problem. Aber wie
mache ich es beim Timer2?
Das habe ich:
.
.
.
void init(void)
{
TCCR2 = (1<<WGM20) | (1<<COM21) | (1<<CS22) | (1<<CS21);
}
.
.
.
OCR2=variable;
die Variable kann ich ohne Problem verändern um einen beliebigen
Tastgrad einzustellen. Ich habe mit dem TCNT2 Register herumprobiert.
Komme aber auch nicht darauf für was dieses Register ist.
Hoffe mir kann jemand helfen.
Im Datenblatt habe ich natürlich nachgeschaut! Ich kann aber nichts über
den Max value finden. Beim Timer1 habe ich das über OCR1A und B gelöst.
Welche alternative gibt es beim Timer2?
Peter schrieb:> Im Datenblatt habe ich natürlich nachgeschaut! Ich kann aber> nichts über> den Max value finden. Beim Timer1 habe ich das über OCR1A und B gelöst.> Welche alternative gibt es beim Timer2?
hängt vom verwenden Timer Modus ab, dafür steht im DB eine Formel und
diese kann man einfach umstellen.
Werde also bitte etwas genauer.
Ja genau Tastgrad und Frequenz.
Befinde mich im Mode 1: PWM, Phase Correct
Bei Timer 1 funktioniert das so. Bei Timer 2 weiß ich es nicht. Über den
CTC Mode könnte es eventuell gehen jedoch bekomme ich den nicht zum
laufen.
Peter schrieb:> Ja genau Tastgrad und Frequenz.
Öh ... Aha.
> [...]> Über den> CTC Mode könnte es eventuell gehen jedoch bekomme ich den nicht zum> laufen.
Ach soooo. Ja, das ist doch kein Wunder. Wir haben Halbmond, Mensch.
Genaue Datenblattlektüre, Problemanalyse, etcpp. helfen erst wieder bei
Vollmond. Aber Vorsicht: Immer ein Blättchen Waldmeister dabei haben.
Sonst gibts Schorf.
Peter schrieb:> Bei Timer 2 weiß ich es nicht. Über den> CTC Mode könnte es eventuell gehen
Was ist an dieser Tabelle nicht zu verstehen?
Mode 2, CTC, Zählumfang (Periode, Kehrwert der Frequenz) in OCR2.
Tastgrad gibt es nicht, da Timer2 nur ein OCR-Register hat. Pech gehabt,
falscher Controller. Du kannst nur das benutzen, was Du auch gekauft
hast. Mit dem Nachfolger ATmega324 sollte das gehen, der hat zwei
Compare-Einheiten an Timer2.
...
Dann will ich wenigstens die veränderbare Frequenz im CTC hinbekommen.
Wenn ich im CTC Mode die compare interrupt Einheit zulassen will also:
TIMSK |= (1<<OCIE2);
Stürtzt immer genau an dem Punkt mein LCD ab. Woran kann das liegen?
Meinst du nicht das es sehr schwer ist dir zu helfen wenn du deine Code
hier nicht postest ?
Die Kristallkugel ist leider derzeit defekt.
Und ohne den Code ist immer Zeile 42 schuld, ist halt so.
Gruß JackFrost
Peter schrieb:> Die Frequenz will ich verändern können von 1 bis 100 Hz.
Das sollte man eigentlich ganz gut in Software hinbekommen. Also
(zeitmäßig gesehen) kleinstes gemeinsames Vielfaches mit Timer erzeugen
und Periodendauer und Tastgrad daraus abzählen.
Tau Ceti Mu schrieb:> DU DEPP!
Sowas sagt man nicht, da muss jeder Betroffene selbst drauf kommen...
;-)
...
Hannes L. schrieb:
[...]
> Tau Ceti Mu schrieb:>> DU DEPP!>> Sowas sagt man nicht, da muss jeder Betroffene selbst drauf kommen...> ;-)
Bin ich doch! Darauf gekommen, meine ich.
Tau Ceti Mu schrieb:> Bin ich doch! Darauf gekommen, meine ich.
Achso, aber woher sollte ich wissen, dass Du das "DU" in der ersten
Person gemeint hast... ;-)
...
Hannes L. schrieb:> Tau Ceti Mu schrieb:>> Bin ich doch! Darauf gekommen, meine ich.>> Achso, aber woher sollte ich wissen, dass Du das "DU" in der ersten> Person gemeint hast... ;-)
Nun, das konntest Du so verstehen und doch konnte und kann Dir, von
jedem Verständigen, alle nötige und tunliche Sorgfalt beim lesen und
erfassen des Geschriebenen nachgesagt und bescheinigt werden.
Die Sprache jedoch, ist ein trügerisches Ding, die das, was uns klar
scheint, verbergen und was uns verborgen scheint, klar erscheinen lassen
kann.
Ein wenig zusätzliche Beleuchtung schien mir angebracht.
Peter schrieb:> Hast Reecht! Hier der Code. Habe alles relevante drinne denk ich. Wollte> nicht alles reinmachen der ist lang...
Wenn der Code recht lang ist dann häng einfach die C/CPP Datei + Header
an den post dran. Leider ist der Fehler oft in dem Teil der nicht
gepostet ist.
Gruß JackFrost