Hallo Leute. Mir ist neulich etwas aufgefallen und ich wollte nun fragen, ob einer von euch das schon mal hatte bzw. weiß was hilft. Es geht um folgendes: Auf einem AT90CAN128 soll im Timer3 ein PWM-Signal für eine Servoansteuerung erzeugt werden. Nebenbei laufen noch 2 weitere Timer für andere Anwendungen. Das PWM-Signal wird auch erzeugt und prizipiell ist auch alles ok. Bis mir dann aufgefallen ist, dass das Signal an 2 Stellen springt und somit auch das Servo. Ich habe dann allerlei Sachen probiert, was nichts brachte. Irgendwann habe ich nach und nach alle Timer und Interrupts (außer Timer3) deaktiviert. Das brachte dann abhilfe. Allerdings brauche ich die anderen Timer. Kann mir jemand sagen warum andere Timer und Interrupts den Timer3 so beieinflussen können? Wie kann man das verhindern? Wäre cool, wenn mir einer von euch helfen kann. Gruß Moo.
Die PWM ohne ISR machen und statt dessen als Hardware-PWM. Gibt dieser AVR das her? Könnte man die PWM auf einen Timer legen der das kann? Wenn ISR-Routinen benutzt werden, diese kürzer machen. Dann sollte es seltener (!) vorkommen, dass eine ISR alle anderen Interrupts blockiert. Vermutlich hilft es auch, wenn die Timer so eingestellt sind, dass sie nicht zeitgleich auftreten können. D.h. sie könnten mit gleicher Frequenz (oder Vielfachen einer Frequenz) laufen aber mit unterschiedlichem Startzeitpunkt. Das kann aber schwer werden, wenn du außer dem Duty-Cycle auch die PWM-Frequenz ändern willst.
Hallo und danke für die Antwort. Ich benutze für das PWM-Servosignal bereits einen Hardwaretimer, wenn ich die Definition richtig verstanden habe. Es wird also ein PWM-Ausgang des Controllers genutzt. Die ISR-Routinen sind bereits sehr kurz, es gibt max. 2 Anweisungen, die bei diesem Timer ausgeführt werden. Ich kann noch schauen, ob ich die Abläufe in den anderen Timern verkürzen kann, ansich steht da aber nix unnötiges drin.. Dein dritter Vorschlag könnte sich tatsächlich als schwierig gestalten, muss ich nochmal drüber nach denken. Moo.
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.