moin,
ich brauche mal hilfe bei einem Problem:
Ich habe ein Programm geschrieben, dass ein PWM-Signal zum Steuern eines
Servos ausgeben soll. Allerdings funktioniert das nicht. Zum überprüfen
habe ich den Ausgang mal an einen schallwandler angeschlossen. Dadurch
kann ich höhren, ob es sich verändert.
Ich habe das Gefühl, dass der Befehl "TCNT0 = 209" nicht funktioniert.
Egal, wie ich ihn verändere bleibt das ausgegebene Signal gleich.
Ich habe das gleiche Programm auch in Assembler programmiert, mit dem es
komischerweise geht.
Es wäre toll, wenn mir jemand helfen könnte.
Hier der Code:
> Ich habe das gleiche Programm auch in Assembler programmiert, mit dem es> komischerweise geht.
ASM- und C-Code sind keinesfalls gleich. Im ASM-Code wird TCNT0 bei
jedem Überlauf mit 209 vorgeladen, beim C-Code nur bei jedem
zweihundersten.
Mach eine Servoansteuerung lieber über den Outputcompare-Interrupt, da
du so eine feste Frequenz hast und nur das Puls-Pausen-Verhältnis über
das OCR-REgister veränderst.
PS.: Falls du beim Overflow-Interrupt den Timer wieder mit einem Wert
vorladen willst, sollte das ganz am Anfang des Interrupts geschehen, da
sonst die unterschiedlichen Laufzeiten des Interrupts zu Problemen
führen können.
Eine eigene Frage?
Dieser Thread ist über 16 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.