Hast du schon mal einen Arduino Mega 2560 (oder ein ähnliches Board) benutzt und irgendwann im Entwicklungsprozess festgestellt, dass die LED auf mysteriöse Weise aufhört zu blinken, dass der Text verstümmelt gedruckt wird oder dass komische Artefakte auf den Bildern erscheinen? Und das alles ohne ersichtlichen Grund oder eine Fehler- oder Warnmeldung? Wenn du wissen willst, was dahinter steckt und wie du dieses Problem lösen kannst, lies weiter.
Weiter lesenKategorie: Programmierung
Alles über Programmierung
Volatilität, Race-Conditions und Heisenbugs
Was ist der Zweck des C++-Qualifizierers volatile, was hat er mit Race-Conditions zu tun und was sind Heisenbugs?
Ein Software-I2C-Multiplexer
Wie kann man mehrere I2C-Geräte mit der gleichen Geräteadresse an eine MCU anschließen? Meistens wird empfohlen, Hardware-Lösungen zu verwenden. Hier werden wir uns ansehen, wie man das Problem mit der FlexWire-Bibliothek per Software lösen kann.
Weiter lesen
Ein projektbezogener Ersatz für die Wire-Bibliothek
Die Wire-Bibliothek verbindet deinen Arduino mit Sensoren und Aktoren, die über das I2C-Protokoll kommunizieren. Leider hat diese Bibliothek viele Unzulänglichkeiten, und oft möchtest du sie durch eine andere I2C-Bibliothek ersetzen. Die Wire-Bibliothek projektbezogen (also nur für einen Sketch) zu ersetzen, erweist sich als komplizierter, als man erwarten würde. In diesem Blogbeitrag beschreibe ich eine einfache Methode, um das zu erreichen.
Weiter lesen
Link-Zeit-Optimierung und das Debuggen von Objekt-orientierten Programmen auf AVR MCUs
Link-Zeit-Optimierung (LTO) ist eine sehr leistungsfähige Compiler-Optimierungstechnik. Wie ich feststellen musste, ist LTO nicht verträglich mit dem Debuggen objektorientierter Programme unter GCC, zumindest für AVR-MCUs. Ich bemerkte das im Zusammenhang mit dem Debuggen eines Arduino-Programms und es dauerte eine ganze Weile, bis feststellte, dass LTO hier der Schuldige ist.
Weiter lesen
Echte Programmierer schreiben Assembler-Code
Obwohl der typische Arduino-Nutzer vermutlich kein Interesse an Assembler-Programmierung hat, kann man in einigen Situationen nicht darauf verzichten. Werfen wir einen Blick auf diese Situationen und schauen, was man tun kann.
Weiter lesen