Zitat Zitat von R2D2 Bastler Beitrag anzeigen
Ich habe auch versucht, immer nur einen der drei Interrupts zuzulassen (z.B. mit "disable INT0" in der entsprechenden ISR) und die RC Signale hintereinander einzulesen, führte aber zu keiner Verbesserung.
Hallo Robert,
wenn die RC Signale wie üblich nacheinander ankommen, dann kannst du das ganze doch mit dem Timer1 alleine hinkriegen. Erst die drei Kanäle einlesen, dann die beiden Potis auswerten und schließlich alles nacheinander an die Servos ausgeben.
3 x RC dauert max 6ms, Potis einlesen < 1ms und die Ausgabe an 4 Servos dauert maximal 8ms, also zusammen keine 15ms. Wenn dem so ist, wäre dies definitiv mein Weg, wie ich vorgehen würde. Und wenn du dann noch alle 3 RC Kanäle auf einen Eingang - vorzugsweise den ICP (PA.7) - legen kannst, ist das Einlesen auch eine saubere, weil in Hardware realisierte Lösung.
Alles würde dann synchronisiert durch den ersten RC Eingang. Genauer bekommst du die Intervalle sonst auf keinen Fall realisiert und du hättest wieder 1000 Schritte bei den Servos und nicht wie jetzt nur 125.
Solange du nicht synchron arbeitest, wird es dir immer wieder passieren, dass gerade eine ISR abgearbeitet wird, wenn ein RC Signal beginnt oder endet.
Und wenn du die Arbeit auf zwei Controller verteilst, müssen die eingelesenen Werte übertragen werden, was dann zu ähnlichen Problemen führt.