Der obige xkcd-Comic mit dem Titel Debugger spielt auf das Problem an, dass man bei der Anwendung einer bestimmten Methode auf sich selbst möglicherweise nicht das bekommt, wonach man gefragt hat. Turings Halteproblem ist ein bekanntes Beispiel dafür: Man kann algorithmisch nicht entscheiden, ob ein Algorithmus auf einer gegebenen Eingabe terminiert. Haben wir dieses Problem auch bei Debuggern? Insbesondere habe ich mich gefragt, ob es sinnvoll ist, den Hardware-Debugger, den ich entwickle, mit sich selbst zu debuggen.
Weiter lesenSchlagwort: Logikanalysator
Eine einzige Verbindung
Eine neue Arduino-Bibliothek hat das Licht der Welt erblickt: SingleWireSerial. Sie unterstützt einadrige asynchrone serielle Halbduplex-Kommunikation. Durch die Verwendung der Eingangserfassungsfunktion der AVR-MCUs ist sie extrem genau und unterstützt Bitraten von bis zu 250 kbps. Und konträr zum Titel kann man sie auch für Zweidraht-Verbindungen verwenden.
Asynchron kommunizieren
Die serielle asynchrone Kommunikation ist eine der häufigsten Formen der Kommunikation zwischen zwei elektronischen Geräten. Wir wollen uns in diesem Beitrag anschauen, welche Arduino-Bibliotheken es gibt und checken, wie gut diese funktionieren.
Weiter lesen
Sind Eingaben verfügbar?
Die SoftwareSerial-Klasse verfügt genauso wie die Serial-Klasse über die available()-Methode, die die Anzahl der Zeichen zurückgibt, die bereits empfangen, aber noch nicht gelesen wurden. Es gibt jedoch einen interessanten Unterschied. Ein Aufruf von SoftwareSerial.available() ist deutlich langsamer als ein Aufruf von Serial.available(). Wir werden nach dem tieferen Grund für dieses seltsame Verhalten suchen und ich werde drei Möglichkeiten aufzeigen, um das Problem zu beheben.
EDIT: In der Arduino Version 1.8.17 wurde das Problem beseitigt.
Weiter lesen
Wie viel Zeit braucht der Zeitnehmer?
Wie hoch ist der Overhead, der durch den millis()- Interrupt entsteht? Und können wir den vermeiden?
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
Logisch!
Wenn Dinge schiefgehen, obwohl die Programmlogik korrekt zu sein scheint, ist es an der Zeit, die Signale zu untersuchen, die in die MCU reingehen und aus der MCU herauskommen. Das beste Werkzeug dafür ist ein Logikanalysator.
Weiter lesen