Moin allerseits, ich möchte eine Phasenanschnittsteuerung mit dem Timer 2 eines Atmega88 bewerkstelligen, dazu starte ich im Nulldurchgang den Timer 2 im CTC Mode und möchte OCR2B bei erreichen des entsprechenden Zündwinkels beispielsweise auf High setzen. Wenn der Wert von OCR2A dann erreicht wird mopse ich den Zähltakt und setze das Zählregister zurück. So weit so gut. ....aber wie zum Teufel bekomme ich das von OCR2B gesteuerte OutputPin PD3 wieder auf Low? Ich kann mit COM2B0 und COM2B1 setzen oder Rücksetzen einstellen, der Pegel bleibt dann wo er ist. Wenn ich das auf Toggeln einstelle toggelt das Pin auch, das klappt. Wenn ich aber High oder Low eisntelle bleiben die Pegel im "scharfen" Zustand... Wie geht das? Gruß, Holm
Holm T. schrieb: > wieder auf Low? Ich kann mit COM2B0 und COM2B1 setzen oder Rücksetzen > einstellen, der Pegel bleibt dann wo er ist. Wenn ich das auf Toggeln > einstelle toggelt das Pin auch, das klappt. Wenn ich aber High oder Low > eisntelle bleiben die Pegel im "scharfen" Zustand... Wenn du dem Timer mittels der COM Bits die Kontrolle über das Port Register gegeben hast, dann hat der auch die Kontrolle drüber. Wenn du die Kontrolle wiederhaben willst, weil du selbst an den Pins fuhrwerken willst, dann musst du ihm mittels COM Bits die Kontrolle wieder entziehen.
Karl H. schrieb: > Holm T. schrieb: > >> wieder auf Low? Ich kann mit COM2B0 und COM2B1 setzen oder Rücksetzen >> einstellen, der Pegel bleibt dann wo er ist. Wenn ich das auf Toggeln >> einstelle toggelt das Pin auch, das klappt. Wenn ich aber High oder Low >> eisntelle bleiben die Pegel im "scharfen" Zustand... > > Wenn du dem Timer mittels der COM Bits die Kontrolle über das Port > Register gegeben hast, dann hat der auch die Kontrolle drüber. Wenn du > die Kontrolle wiederhaben willst, weil du selbst an den Pins fuhrwerken > willst, dann musst du ihm mittels COM Bits die Kontrolle wieder > entziehen. Soweit schick, so schlau war ich auch... nur will ich das gar nicht. Ich hatte erwartet das der Timer nach dem Stoppen und rücksetzen des TCNT2 Registers das Ding selbst wieder abdreht, macht er aber nicht. Ich habe auch in der Doku nichts gefunden (außer offensichtlicher (copy&paste) Fehler im PDF..). Gruß, Holm
@ Karl Heinz (kbuchegg) (Moderator) >die Kontrolle wiederhaben willst, weil du selbst an den Pins fuhrwerken >willst, dann musst du ihm mittels COM Bits die Kontrolle wieder >entziehen. Nein, es geht auch bei angekoppeltem OCRx. Dazu muss man die COM2A1/COM2A0 Bits passend setzen, z.B. 10 für Clear. Dann löst man ein OCRx Ereignis per Software aus, indem man das FOC2A Bit setzt. Damit wird das Ausgangsbit gelöscht! Setzen und Togglen geht ebenso.
Danke Falk, so einen Mist hatte ich geahnt...was für ein Müll. Ich klemme das Pin ab und schalte in der ISR.. Gruß, Holm
Nachtrag. Man MUSS es sogar so machen, denn wenn man das Pin vom OCRx abkoppelt (COM2A1/0 auf 00) und meinetwegen wieder normal per Software auf LOW schaltet und dann wieder ANkoppelt, ist es immer noch HIGH. Denn diese beiden Informationen werden in getrennten FlipFlops gespeichert. Siehe Anhang.
@ Holm Tiffe (holm) >Danke Falk, so einen Mist hatte ich geahnt...was für ein Müll. Wo ist das Problem? Sind halt 2 Schreibzugriffe statt einem. So what! >Ich klemme das Pin ab und schalte in der ISR.. Würde ich nicht machen, damit hebelst du ja die Vorteile von Putput COmpare aus.
Falk B. schrieb: > @ Karl Heinz (kbuchegg) (Moderator) > >>die Kontrolle wiederhaben willst, weil du selbst an den Pins fuhrwerken >>willst, dann musst du ihm mittels COM Bits die Kontrolle wieder >>entziehen. > > Nein, es geht auch bei angekoppeltem OCRx. Dazu muss man die > COM2A1/COM2A0 Bits passend setzen, z.B. 10 für Clear. Dann löst man ein > OCRx Ereignis per Software aus, indem man das FOC2A Bit setzt. Damit > wird das Ausgangsbit gelöscht! Setzen und Togglen geht ebenso. Den einzigen Vorteil, den ich hier sehe ist * Toggeln * ich muss den exakten Pin in der Software nicht kennen. Obwohl. Den muss ich sowieso kennen, weil ich das DDR Register besetzten muss. Ansonsten sind das auch nicht weniger Schritte. Aber vom Prinzip her hast du recht. So würde es auch gehen.
Falk B. schrieb: > Siehe Anhang. Ach du Mist. Das hab ich noch gar nie bemerkt. Mea culpa, mea maxima culpa. Wieder was gelernt. Danke.
Falk B. schrieb: > @ Holm Tiffe (holm) > >>Danke Falk, so einen Mist hatte ich geahnt...was für ein Müll. > > Wo ist das Problem? Sind halt 2 Schreibzugriffe statt einem. So what! > >>Ich klemme das Pin ab und schalte in der ISR.. > > Würde ich nicht machen, damit hebelst du ja die Vorteile von Putput > COmpare aus. Das Problem ist das ich den Ganzen Kram dann wieder beim nächsten scharf machen des Timers zurück kurbeln muß, das ist ein Haufen Salat für so gut wie keinen Vorteil (ich habe "endlos" Zeit das in Software zu machen). Einen Vorteil hat das nur wenn ich wirklich exakt die Zeit halten muß, für die Ansteuerung der Luftpumpe einer Lötstation ist das aber eher Käse. Gruß, Holm
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.