Ich möchte meinem PWM Modul die Möglichkeit des Togglens spendieren, d.h. das ich mit einem Funktionsaufruf die Generierung des PWM Signals deaktivieren kann, um es später ggf. wieder zu aktivieren. Prinzipiell gibt es ja hier zwei Möglichkeiten. Zum Einen kann ich das Generieren des Outputs mittels der COMx2:1 Bits deaktiveren. Zum Anderen kann ich auch das Data Direction Register ändern. Was ist hier zu bevorzugen bzw. wie handhabt ihr das? Beim Deaktivieren der COMx2:1 Bits besteht ja prinzipiell die Möglichkeit, dass man das Ergebnis nicht vorhersagen kann, oder übersehe ich hier etwas? Ich würde dann nämlihc die DDR Variante "bevorzugen".
PWM schrieb: > Prinzipiell gibt es ja hier zwei Möglichkeiten. Zum Einen kann ich das > Generieren des Outputs mittels der COMx2:1 Bits deaktiveren. Zum Anderen > kann ich auch das Data Direction Register ändern. Und was bringt dir letzteres? Anstatt den Ausgangstreiber ständig High/Low zu schalten, schaltest du dann eben ständig den Pullup-Widerstand zu bzw. weg. > Was ist hier zu bevorzugen bzw. wie handhabt ihr das? Beim Deaktivieren > der COMx2:1 Bits besteht ja prinzipiell die Möglichkeit, dass man das > Ergebnis nicht vorhersagen kann Schon. Aber nachdem der Timer mittels COM Bits von den Ausgängen abgekoppelt wurde, hast du sie wieder unter Kontrolle. Eine kurze Ausgabe über das Port Register bereinigt die Situation des 'Ich weiß ja nicht wie der Ausgangspin gerade steht'
Register nur bei Compare match oder Overflow ändern (im IRQ Handler je nach modi ) dann sollte es keine Glitches geben.
Uwe schrieb: > Register nur bei Compare match oder Overflow ändern (im IRQ Handler je > nach modi ) Ich habe aber keinen IRQ Handler. Modus: Fast PWM. Karl Heinz Buchegger schrieb: > Und was bringt dir letzteres? > Anstatt den Ausgangstreiber ständig High/Low zu schalten, schaltest du > dann eben ständig den Pullup-Widerstand zu bzw. weg. Ok, das ist natürlich Blödsinn. Karl Heinz Buchegger schrieb: > Aber nachdem der Timer mittels COM Bits von den Ausgängen abgekoppelt > wurde, hast du sie wieder unter Kontrolle. Eine kurze Ausgabe über das > Port Register bereinigt die Situation des 'Ich weiß ja nicht wie der > Ausgangspin gerade steht' Ich habe mir eben die Wordclock Sources angeschaut. Dort wird es exakt anders herum gemacht - erst wird der Port auf Low gepullt, dann wird per COM Bits die Ausgabe bzw. Generierung deaktiviert. Ist das nicht falsch herum und kann (wenn es "unglücklich" läuft) zu unerwünschen Effekten führen?
PWM schrieb: > Ich habe mir eben die Wordclock Sources angeschaut. Dort wird es exakt > anders herum gemacht - erst wird der Port auf Low gepullt, dann wird per > COM Bits die Ausgabe bzw. Generierung deaktiviert. Ist das nicht falsch > herum und kann (wenn es "unglücklich" läuft) zu unerwünschen Effekten > führen? Ich bin jetzt nicht sicher, wie da die exakte Innenveraschaltung des AVR ist. Ob der Timer auf das Port-Register einwirkt oder ob beide auf den Ausgangstreiber gehen. Ich schätze aber mal, dass es da tatsächlich ein Problem geben könnte, das nur deswegen noch keinem aufgefallen ist, weil es schon sehr unwahrscheinlich ist. Denn immerhin muss der Timer exakt just in dem Moment den Pin auf High schalten (also seinen 0-Durchgang haben), in dem zwar das Port Register schon auf Low-geschaltet wurde aber die COM-Bits noch nicht geändert wurden.
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.