Hi Willa
Zitat Zitat von Willa
Die Loop wartet auf eine Antwort auf dem I2C-Bus, richtig? Kommt da nix, bleibt das Programm dort hängen und wartet.
Nein, der Hauptcontroller schickt seine Werte einfach los und überprüft nicht ob die abgefragt werden. Er wird also nicht langsamer.
Veto!
Ich ziehe den Stecker des Kabels zwischen TriGUIDE und dem I2C-Eingang am Konverter ab und das Geblinke der LEDs hört auf, das leise Ticken des Servo verstummt. Alles geht weiter, wenn ich den Stecker wieder drauf stecke.

I2C ist ein Protokoll mit Acknowledge, ich vermute das Handshake zwischen Master und Slave wird in der Library transparent (=unsichtbar) für den Anwender abgewickelt.

Unter diesem Aspekt wird die Verarbeitung sehr wahrscheinlich doch gebremst.

Wenn du in den Konvertern die Bearbeitung des I2C-Bus Interrupt gesteuert abwickelst, trifft das aber möglicher Weise doch nicht zu, da dann die Bearbeitung der Kommunikation mit dem Hauptcontroller immer sofort erfolgt (solange die Interrupts nicht wegen irgend was anderem gerade gesperrt sind).

Edit:
Ich habe gerade die Erleuchtung gehabt und muss demütig einen Rückzieher machen
Der abgezogene Stecker bei meinem Test war der zwischen ESC und Konverter (nicht der zwischen TriGUIDE und Konverter, wie ich oben behauptete), in Folge war der betreffende Konverter stromlos und hat offenbar den Bus gestört, was die Blockade des Hauptcontrollers bewirkte.
Ich habe nicht gemessen, was auf dem Bus exakt passiert, aber auf jeden Fall läuft der Hauptcontroller weiter, wie Willa das angegeben hat, wenn ein Konverter nicht antwortet. Sorry.