Gast
#4490462
Moin, ich nutze den Atxmega128A4U. Ich benutze einen Hardwaretimer um eine PWM zu erzeugen. Ich möchte jetzt, dass immer wenn die PWM auf LOW ist, ein anderer Ausgang freigegeben wird. Zum Testen einfach invertiert zur PWM schalten. Als Test prüfe ich derzeit, ob die PWM den Schwellwert überschritten hat. In dem Fall wird der Ausgang auf HIGH gesetzt, andernfalls auf LOW. Damit sollte ich eigentlich per Software eine (invertierte) Kopie der PWM bekommen. In der Theorie. In der Praxis sieht diese Software PWM sehr schlecht und unregelmäßig aus. Ich überprüfe die PWM mit folgendem Code:
1 | |
2 | |
3 | |
Ich könnte ein Hardware UND Gatter auf die Leiterkarte machen. Ich denke das muss aber auch in Software gehen. Die Ausgänge vom Atxmega kann ich intern meines Wissens nach nicht verunden. Ich habe zur Zeit bei 2Mhz eine Zykluszeit von wenigen mS (weil ich eine I²C Operation nicht als Interrupt laufen lasse). Das heißt bei 1kHz PWM ist diese bereits schneller als meine Zykluszeit und kann nicht sauber erfasst werden. Auch wenn ich einen Timer Compare benutze - das Ergebnis muss ja verarbeitet werden. Kann mir jemand mit Ideen helfen? Die einzige Idee, die ich habe, ist das ganze mit einer höheren CPU Takt zu probieren. Nils