Blog

Neue Firmwares

Es gibt neue Firmware Versionen (1.1.X) für alle Bricks und Bricklets. Alle Bricks und Bricklets die nach dem 24. Februar verschickt wurden sind bereits mit den neuesten Firmwares geflasht. Bricks mit alten Firmwares (1.0.X) sind kompatible zu Bricklets mit neuen Firmwares. Bricks mit neuen Firmwares sind _nicht_ kompatibel zu Bricklets mit alten Firmwares. Die Chibi Extension funktioniert nur mit Bricks und Bricklets mit neuen Firmwares. Das bedeutet: Wenn ihr bereits Bricklets habt und neue Bricks kauft, wenn diese wieder verfügbar sind, müsst ihr zumindest alle vorhandenen Bricklets updaten.

Die IMUs welche wir schon verschickt haben, haben bereits die neue Firmware und sie benötigen zusätzlich die neueste Brick Viewer Version, welche wir heute das letzte mal geupdatet haben! Die alten Brick Viewer Versionen hatten leider auch schon ein IMU plugin, dieses war allerdings zum testen für frühe IMU Prototypen und es funktioniert nicht vernünftig mit den jetzt verschickten IMUs.

Die neueste Brick Viewer Version und die neuesten Firmwares können hier gefunden werden: https://www.tinkerforge.com/de/doc/Downloads.html

Warum die ganzen neuen Firmwares?

Eine der Gründe warum wir so lange gebraucht haben die Software für die Chibi Extension fertig zu bekommen war ein kleiner Designfehler beim behandeln von Daten. Wir hatten eine Hauptschleife die alle Verarbeitungsfunktionen einmal pro ms angestoßen hat. Diese haben Daten ausgelesen (z.B. Analog Werte), Berechnungen durchgeführt und wenn nötig Callback Nachrichten verschickt (z.B. wenn ein threshold erreicht wurde). Dies funktionierte mit einer USB Verbindung wunderbar.

Bei einer Funkverbindung wie Chibi sieht es allerdings anderes aus. Selbst wenn zwei Stapel (verbunden über Chibi) direkt nebeneinander stehen gibt es Störungen und lange Latenzen. Diese führen zu Verzögerungen beim senden von Callbacks. Da Berechnungen in der gleichen Schleife stattgefunden haben wurden auch alle Berechnungen verzögert und alle Funktionen die abhängig von Timings waren funktionierten nicht mehr richtig. Zum Beispiel die Be- und Entschleunigung des Servo Bricks war auf einmal nicht mehr sanft.

Eine Lösung des Problems ist einfach. Wir haben jetzt zwei Schleifen, eine zum Berechnen von Daten, die immer innerhalb von einer ms durchrennt und eine zum senden von Daten, die soviele Daten verschickt wie möglich. Leider musste dafür etwas an der Schnittstelle zwischen Bricks und Brickelt Plugins geändert werden, was zu den oben beschriebenen Inkompatibilitäten führte.