Anekdote aus der µC-Welt

Begonnen von picass, 08.04.2021, 12:44:41 CEST

⏪ vorheriges - nächstes ⏩

picass

08.04.2021, 12:44:41 CEST Letzte Bearbeitung: 08.04.2021, 12:49:16 CEST von picass
Stichworte: Assembler, Interrupt
Nett, wie leicht man sich selbst erst eine Grube graben und dann kurz vor deren Erreichen auch noch ein Bein stellen kann: In meinem Testprog sollte der PIC quasi als Erstes in den Sleep-Modus abdackeln. Was aber nicht klappte, der wollte sofort an die Arbeit gehen.
Die Grube: in dem Gewusel diverser Testprogramm-Schnipsel und dem Wechseln dieser Schnipsel und dem Ausprobieren ging eine Info verloren: die Ports mussten für den angestrebten Zweck von analog auf digital umgestellt werden.
Das Bein: Nachdem das memoriert war, wurde der entsprechende Befehl nachträglich an den Initialisierung-Code angehängt, also an dessen Ende gestellt. Dort war bislang der Code für das Freischalten des IRQs angesiedelt.

Alles gut, aber so ganz doch nicht: wenn der Simulator und der spätere PIC an genau diesem Punkt des digitalen Einstielens angekommen waren, dann interpretierten sie den Anlog-to-Digital-Wechsel als Port-Änderung und -schwups- : schon war der erste IRQ generiert, obwohl am realen Pin noch gar nichts passiert war!
Reihenfolge ändern und das Erhoffte wurde wahr. Gehört zu den vielen Stolpersteinen, die man in der Wiedereingewöhnungsphase durchstolpern muss.
Grüße, picass