Ungenutzte Bits in einem Programmzähler sollten eigentlich Null sein. In der Praxis sind sie das jedoch manchmal nicht. Da diese Bits ungenutzt sind, spielt ihr Wert eigentlich keine Rolle – solange niemand von außen, etwa ein Debugger, sie ausliest. Können solche Bits bei AVR Mikrocontrollern zu Problemen führen?
Weiter lesenKategorie: Einsichten
Irgendwas interessantes Neues
Wie man mysteriöse, stille Fehler im Arduino Sketch vermeidet: Schiebe PROGMEM ans andere Ende
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 lesen
Stop-and-Go
Eine typische Debugging-Aktivität ist das Setzen von Haltepunkten (engl. Breakpoints) und das anschließende Durchlaufen des Programms von Haltepunkt zu Haltepunkt, wobei der interne Zustand des Programms an jedem Haltepunkt überprüft wird. Das hört sich zwar einfach an, ist in der Umsetzung dann aber doch komplizierter als man glaubt. In diesem Blogbeitrag werden wir einen Blick in den Maschinenraum eines Debuggers werfen.
Weiter lesen
Per Einzelschritt die Orientierung verlieren
Beim Embedded Debugging passiert es oft, dass man beim zeilenweisen Single-Stepping plötzlich in der Interrupt-Vektor-Tabelle landet. Ein weiteres Problem ist, dass einzelne Schritte manchmal Ewigkeiten dauern können. In diesem Blogbeitrag gehe ich auf beide Probleme ein, und zeige, welche Maßnahmen in einem Gdbserver diese Probleme verhindern können. Alles natürlich im Kontext von AVR MCUs.
Weiter lesen
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?
Arduino IDE 2 trifft auf dw-link
Das Debuggen von klassischen AVRs in der Arduino IDE 2 ist endlich Realität geworden! Es hat eine Weile gedauert, diese Funktion zu implementieren, aber jetzt ist es nur noch ein Kinderspiel, das Debugging zu aktivieren und den Debugger zu benutzen.
Weiter lesen
Die neuen ATtinys
Microchip hat eine neue Generation von ATtinys auf den Markt gebracht. Lohnt es sich, sie für dein nächstes DIY-Projekt in Betracht zu ziehen?
Weiter lesen
Spontane MCU-Neustarts: Warum passieren sie?
AVR MCUs scheinen manchmal neu zu starten, ohne dass du den RESET-Knopf gedrückt hast. Ist das ein Zeichen von Unverwüstlichkeit oder von drohender Gefahr? Und wie findet man die Ursache?
Weiter lesen
Im Fluss der Zeit treiben
Was passiert, wenn man ein Dutzend Uhren nimmt und sie in den Fluss der Zeit wirft?
Weiter lesen
ATmega328P: Original oder Fälschung?
Vor kurzem habe ich einige ATmega328P-PU (DIP-Gehäuse) Chips in China gekauft und war besorgt, dass es sich um Fälschungen handeln könnte. Immerhin waren vor drei Jahren einige ATmega328P-Klone auf Pro Mini-Boards aufgetaucht, die keine Nano-Power unterstützten. Ein erster Test schien auf eine Fälschung hinzudeuten, aber anscheinend sind es doch die Originale. aber die Chips verhielten sich ansonsten unauffällig.