Ja das wird das beste sein. Ohne dass man die Signale wirklich sieht, kann man da nur spekulieren.
Falls irgendwann noch Vergleichsdaten von Uno, Due oder Teensy benötigt werden sollten, klinke ich mich hier noch mal ein. Erstmal wünsche ich viel Erfolg bei der Suche.
gelesen, dass man mit der MegaServo-Lib bis zu 48 Servos ansteuern kann. Timer 0 und Timer 2 sind wohl für andere Dinge reserviert. Also stehen mir 4 HW-Timer (1, 3, 4 und 5) zur Verfügung. Hatte ich erwähnt, dass ich einen MEGA2560 verwende? D.h.
KUCKY:
Aber was bedeutet „not pins xxxxx“ oder „losing PWM on Pin xxx“ bzw. was ist damit gemeint?
Die betreffenden Timer werden dann von der Servolib verwendet. Sie würden alternativ gebraucht, um an diesen Pins die PWM zu erzeugen. Dafür stehen sie dann halt nicht mehr zur Verfügung.
Das bedeutet nicht, dass die Servolib normale Arduino PWM macht. Sie schaltet die Pins mit digitalWrite, wie man im Quelltext sieht.
Hallo Willi,
das ist nach wie vor eine Library, die die Pulse per Interrupts erzeugt, und nicht direkt von der Timer-HW. Nur dadurch kann man überhaupt so viele Servos ansteuern. Für das Timing werden zwar die HW-Timer genutzt, aber die eigentlichen Impulse werden dann in Interrupts erzeugt, die von den Timern ausgelöst werden. Die PWM-Pinzuordnung der TImer ist daher irrelevant. Da die Timer für die Interrupterzeugung genutzt werden, funktioniert der HW-PWM (analogWrite() ) dann nicht mehr.
Timer0 und Timer2 werden nicht verwendet, da das nur 8-Bit Timer sind, und für Servos die Auflösung da nicht reicht. Ausserdem wird Timer 0 bereits vom Arduino für millis() und micros() genutzt.
Grundsätzlich ist es schon möglich die Impulse direkt von der TimerHW ( ohne Interrupts ) erzeugen zu lassen. Das ist dann im Prinzip so wie das analogWrite() und dementsprechend auch an bestimmte Pins gebunden. Allerdings nutzt analogWrite leider nicht die mögliche höhere Auflösung der 16-Bit Timer ( Timer 1,3,4,5 beim Mega ) und ist deshalb für eine Servo-Ansteuerung ungeeignet ( auch wegen der falschen Wiederholfrequenz). Man müsste dazu also diese Timer direkt entsprechend konfigurieren.
Hier noch ein paar Fundstücke, vielleicht hilft das weiter:
PWMServo is much more tolerant of interrupt latency that Servo. Libraries which disable interrupts are incompatible with Servo, but these can be used with PWMServo.
Vielen Dank für Eure Hilfe.
Wir haben nun die einzelnen PWM´s mit einen 4 Kanal Ozzi geprüft. Keine Auffälligkeiten oder nennenswerte Abweichungen. Dann Muss es wohl an der Hardware legen. Die PWM Ausgänge auf meiner PCB habe ich auch mal vertauscht. Da hier alles beim Alten blieb, gehe ich davon aus, dass mein Code stimmt.
Ich habe die Propeller und die Motoren getauscht, keine Verbesserung. Das letzte sind nun die ESC´s. Versuche ich heute.
Habe wohl den Fehler gefunden. So wie sich jetzt darstellt ist ein ESC "anders". Werde jetzt mal versuchen den ESC zu testen. Das müsste doch mit der SimonK Software gehen, oder?
Die wird angesteuert wie ein Servo. Ich glaube aber, die frisst höhere Frequenzen. Du musst also nicht die 20ms (50Hz) einhalten. einige wenige us LOW reichen und dann den 1-2ms Impuls.