Hallo zusammen,
in einem früheren Projekt (Nachtflugmodell) verwendete ich 2 Attinys85 für die Nachbrenner und einen Atmega8 für die Modellbeleuchtung. Nun wollte ich alles zusammen auf einen einzigen Arduino Nano Clon (ATmega328P, 2KB SRAM) bringen. Der Nano Clone wird über USB (Bootloader) programmiert. Zunächst sah alles ganz gut aus, doch beim Testen gabs dann kuriose Überraschungen.
Wenn Nachbrenner 1 Feuer spuckt, flackert Nachbrenner 2 immer etwas mit. Dabei spielt es keine Rolle, ob Nachbrenner 2 eigentlich an oder aus sein sollte. Umgekehrt funktioniert es wie es soll: Wenn Nachbrenner 2 brennt (Feuer), macht Nachbrenner 1 genau das, was man ihm sagt.
Nach langer Fehlersuche konnte ich feststellen, das sich der Wert der Variable Rc_value_ab(2) beim erstgenannten Fall immer wieder unbeabsichtigt ändert. Diese Variable bestimmt, ob der Nachbrenner 2 aus ist, an ist oder Feuer brennt. Im Normalfall wird diese Variable durch ein Pulsein beschrieben, zu Testzwecken habe ich ihr aber einen festen Wert zugewiesen, der auch zu keiner Zeit beabsichtigt geändert wird. Und denoch passiert genau das.
Noch kurioser wird es, wenn ich im Code nach dem
den Speicherplatz für eine weitere Variable mit
reserviere.
Dann ändert Rc_value_ab(2) seinen Wert nicht mehr unbeabsichtigt. Füge ich das Dim Testvariable As Word allerdings VOR Dim Rc_value_ab(2) As Word im Code ein, schwankt der Wert von Rc_value_ab(2) wieder.
Da sich dieser reproduzierbare Fehler auch auf einem weiteren Arduino Nano Clon zeigt, glaube ich weniger an ein defektes Board, sondern eher an ein Software- bzw Speicherproblem. Offensichtlich wird der Speicherplatz der Variable immer wieder überschrieben.
Ich habe auch mit den Stackwerten gespielt (hoch bis 300), aber ohne Erfolg.
Beim Versuch, das Programm für die Fehlersuche zu kürzen, verschwindet der Fehler leider. Daher muss ich hier das noch "unaufgeräumte" Programm posten.
Ich weiß einfach nicht, wie ich den Fehler noch weiter eingrenzen könnte.
Nette Grüße
Robert
Terminal 1.jpg Terminal 2.jpg
in einem früheren Projekt (Nachtflugmodell) verwendete ich 2 Attinys85 für die Nachbrenner und einen Atmega8 für die Modellbeleuchtung. Nun wollte ich alles zusammen auf einen einzigen Arduino Nano Clon (ATmega328P, 2KB SRAM) bringen. Der Nano Clone wird über USB (Bootloader) programmiert. Zunächst sah alles ganz gut aus, doch beim Testen gabs dann kuriose Überraschungen.
Wenn Nachbrenner 1 Feuer spuckt, flackert Nachbrenner 2 immer etwas mit. Dabei spielt es keine Rolle, ob Nachbrenner 2 eigentlich an oder aus sein sollte. Umgekehrt funktioniert es wie es soll: Wenn Nachbrenner 2 brennt (Feuer), macht Nachbrenner 1 genau das, was man ihm sagt.
Nach langer Fehlersuche konnte ich feststellen, das sich der Wert der Variable Rc_value_ab(2) beim erstgenannten Fall immer wieder unbeabsichtigt ändert. Diese Variable bestimmt, ob der Nachbrenner 2 aus ist, an ist oder Feuer brennt. Im Normalfall wird diese Variable durch ein Pulsein beschrieben, zu Testzwecken habe ich ihr aber einen festen Wert zugewiesen, der auch zu keiner Zeit beabsichtigt geändert wird. Und denoch passiert genau das.
Noch kurioser wird es, wenn ich im Code nach dem
den Speicherplatz für eine weitere Variable mit
reserviere.
Dann ändert Rc_value_ab(2) seinen Wert nicht mehr unbeabsichtigt. Füge ich das Dim Testvariable As Word allerdings VOR Dim Rc_value_ab(2) As Word im Code ein, schwankt der Wert von Rc_value_ab(2) wieder.
Da sich dieser reproduzierbare Fehler auch auf einem weiteren Arduino Nano Clon zeigt, glaube ich weniger an ein defektes Board, sondern eher an ein Software- bzw Speicherproblem. Offensichtlich wird der Speicherplatz der Variable immer wieder überschrieben.
Ich habe auch mit den Stackwerten gespielt (hoch bis 300), aber ohne Erfolg.
Beim Versuch, das Programm für die Fehlersuche zu kürzen, verschwindet der Fehler leider. Daher muss ich hier das noch "unaufgeräumte" Programm posten.
Ich weiß einfach nicht, wie ich den Fehler noch weiter eingrenzen könnte.
Nette Grüße
Robert
Terminal 1.jpg Terminal 2.jpg