PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Arduino-Sketch plötzlich gelösch? Bootloader intakt.



Cysign
09.06.2017, 21:02
Hallo zusammen,
ich habe in einem Kundenprojekt eine eigene, arduino-kompatible Platine entworfen.

Hierbei habe ich den USB-Serial-Konverter in ein externes Gehäuse gebaut.

Soweit funktioniert das auch alles ohne Probleme.
Allerdings habe ich nun einen Fall in dem der Kunde plötzlich nur noch Kästchen am HD44780 gesehen hat.

Klar, das Display ist nicht initialisiert.

Nachdem ich nun den Speicher des Atmels ausgelesen habe, hab ich gesehen, dass lediglich ein kleiner Speicherbereich mit Hex-Werten beschrieben war:

:1000000071C0000081C000007FC000007DC0000002:100010 007BC0000079C0000077C0000075C0000000
:1000200073C0000071C000006FC000006DC0000010
:100030006BC0000069C0000067C0000065C0000020
:1000400063C0000061C000005FC000FFFFFFFFFF52
:10005000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
:10006000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
:10007000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
:10008000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
:10009000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
:1000A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
:1000B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
:1000C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
:1000D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
:1000E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
:1000F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
:10010000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
:10011000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
...usw


Ich vermute, das es sich hierbei um den Arduino-Bootloader handelt.
Dieser ist auch intakt.

Wenn der Sketch auf Grund eines technichen Problems gelöscht worden wäre, würde ich vermuten, dass auch der Bootloader (der ja im selben Speicher liegt) in Mitleidenschaft gezogen wird.

Nun habe ich den aktuellen Sketch erneut aufgespielt und die Steuerung läuft wie gehabt.
Ich wüsste nun aber dennoch gerne, ob mein Kunde aus Versehen den Upload-Button gedrückt hat oder ob es eine andere Möglichkeit gibt, diesen Fehler zu verursachen.

Hat jemand von euch vielleicht schonmal das gleiche Problem gehabt?

BMS
10.06.2017, 15:05
Hallo,

sind die Reset, Rx, Tx-Pins über längere Leitungen geführt? Gibt es Pull-Widerstände o.ä.? Werden Rx,Tx für andere Zwecke noch benötigt?
Eventuell wurde der Bootloader durch eingefangene Störungen (gerade bei hochohmigen Eingängen anfällig) auf langen Leitungen aktiviert und hat den Speicher so zurückgesetzt?
Andererseits müsste der Bootloader so etwas durch Prüfsummen der einkommenden Daten etc. verhindern.

Oder wurde das Gerät einfach nicht vollständig programmiert und getestet vor Auslieferung? :-b

Es bleibt ein Rätsel.

Viele Grüße,
Bernhard

Cysign
10.06.2017, 16:41
Die Programmierung sollte komplett sein (bisher habe ich keinen Bug gefunden) und getestet wurde auch vor Auslieferung - deswegen hat sie sich ja hingezogen ;)

Die Pins für RX/TX sind unbelegt. da kommt nur extern die Arduino-Uno-Platine dran - aber die Kabel sind lang. Rst hat den 10k-Widerstand wie alle 8bit-Atmels.

Kann ich RX/TX/RST denn weiter absichern? Die Kabel sind schon recht lang (bestimmt 15-20CM wenn der Programmieradapter nicht angeschlossen ist!).

BMS
10.06.2017, 18:52
Hallo,
wie wäre es damit: Den Rx bei Nichtbenutzung niederohmig (z.B. 100 Ohm) auf definiertes Potential legen, und den Reset-Pullup auch niederohmiger machen, gerne auch einen kleinen Kondensator (100nF ?) von Reset nach GND.
Grüße,
Bernhard

Cysign
12.06.2017, 21:07
Hmmm....das wird schwer. Die Platine ist in einem Gehäuse verbaut. Am Gehäuse hängt ein Kabel für einen Aktuator.
Wenn die Platine neu beschrieben wird, wird der Aktuator getrennt und am selben Kabel (der Stecker hat ausreichend Pins) der Arduino Uno (ohne µC) zum Programmieren angesteckt.

Es könnte also auch sein, dass das PWM-Signal des Aktuators hier reinstrahlt.
Problematisch ist der Fakt, dass ich selbst en Aktuator und den Aufbau nicht hier habe, um unter Last zu testen. Beim Anlaufen mit der Nutzlast wird ein größerer Strom fließen als wenn der Aktuator ohne Last anläuft - evtl. könnte das auch eine Rolle spielen?

Ich hatte zum Testen den Aktuator ohne Last hier, aber damals hat alles problemlos funktioniert. Das Problem trat nach einigen Tagen/Wochen Nutzung auf.

Cysign
07.07.2017, 09:17
Nachdem ich mir das Ganze unterm Oszilloskop angesehen hatte und ein deutliches Aufflackern der RST-leitung gesehen habe, hab ich mir mein Platinenlayout und den Schaltplan nochmals angesehen.
Der Kondensator am RST-pin hat nen recht großen Abstand. Ich denke, ich werde den mal näher an den AtMega ransetzen und schauen, ob das Zucken der RST-Leitung dann geringer wird.

- - - Aktualisiert - - -

Der Kondensator für den RST-Pin ist da oben doch was weit weg gerutscht. Ich hoffe, dass ich das Problem damit gefunden habe ;)
Ich werd den jetzt irgendwie da unten dranzimmern und hoffen, dass sich das Verhalten bessert.

32726

Cysign
11.07.2017, 05:16
Das Ändern der Kondensatorposition hat folgende Veränderung gebracht:

vorher:
32747


nacher:
32748


Man sieht schon einen deutlichen Unterschied. Aber ob das so ausreicht?
Da der Fehler wirklich nur sehr, sehr selten (alle paar Wochen mal) auftritt, bin ich mir nicht sicher, wie ich das nun verifizieren kann.

Weiterhin habe ich die Stromkabel im Gehäuse von der Platine zum Stecker nun verdrillt, nachdem ich gelesen habe, dass das auch etwas helfen soll (ich stell mir das ein bisschen wir diese spiralförmig umwickelten Autoantennen vor. Ohne Umwicklung: langer Initiator eines Wirbels, Mit Spirale: viele kleine Wirbel, unterdrückt das Pfeifen - übertragen auf meinen Fall: kleineres induktives Feld?).

Weiterhin überlege ich grade noch die Spule auf dem verwendeten XL6009-Modul und des Relais abzuschirmen. Hierzu plane ich ein kleines Blech auf Masse zu legen, welches in Richtung des Mikrokontrollers abschirmt (siehe Markierung):

32749


Die Schaltung basiert auf einem Arduino Mega / AtMega2560, laut Schaltplan soll ab Resetpin der Kondensator 22pF betragen (https://www.arduino.cc/en/uploads/Main/arduino-mega2560-schematic.pdf oben in der Mitte). Allein schon durch das Lötzinn komm ich schon auf um die 30pF.
Als Nächstes werde ich noch den von dir vorgeschlatenen 100nF-Kondensator zum 22pF parallel schalten. Ich hoffe, dass der AtMega sich dann noch programmieren lässt ;)

- - - Aktualisiert - - -

Mir ist nach mehrmaligem Betrachten der Videos, die ich während des Triggerns aufgenommen habe, aufgefallen, dass ich sowohl vor als auch nach dem Umbau einen zweiten Impule sehen kann:

32750



Zunächst wird durch das Relais der XL6009 mit Strom versorgt und nach einer minimalen Verzögerung wird mit einem Mosfet dann der Motor per PWM in Betrieb genommen.