ATmega328 reset aus unerklärlichen Gründen

Gast #5596667
Lesenswert?

Hallo Zusammen,
ich verzweife an einem Phänomen, welches ich mir nicht erklären kann.

Ich habe einen ATmega328 welchen ich mit 3.3V speise und über SPI einen 
Lora-RFM95 Funkchip ansteuere. Das ganze funktioniert mit 10 Geräten 
einwandfrei, auch liefert das Netzteil genügend Strom. Nach ca. 24h 
Betrieb startet der CPU aus unerklärlichen Gründen neu (vieleicht 
external Reset), danach resettet er sich endlos in einem 300ms Loop und 
das Gerät kann nicht mehr starten. Wenn ich nun die Software über ISP 
programmiere, kommt der CPU aus dem 300ms Loop nicht mehr raus. Wenn ich 
aber die Speisung aus und wieder einschalte, funktioniert alles 
einwandfrei. Auch habe ich herausgefunden, dass wenn ich eine andere 
Software programmiere, diese einwandfrei läuft und wenn ich danach 
wieder die originale Software lade, dann ist der Loop weg.

Möchte auch noch sagen, dass bei einem Gerätestart die Software in einem 
1000ms Delay drin ist, daher ist auch eine Fehlfunktion der Software 
ausgeschlossen.

Kann mir hier jemand helfen?

Vielen Dank und Grüsse
Hannes
Gast #5596713
Lesenswert?

Hannes Feurer schrieb:
> Möchte auch noch sagen, dass bei einem Gerätestart die Software in einem
> 1000ms Delay drin ist, daher ist auch eine Fehlfunktion der Software
> ausgeschlossen.
ist auch eine Deaktivierung des Watchdogs vor dem Delay drin, um eine 
Fehlfunktion der 1000ms ohne W-Reset auszuschließen?
Gast #5596783
Lesenswert?

Dirk B. schrieb:
> Hannes Feurer schrieb:
> Möchte auch noch sagen, dass bei einem Gerätestart die Software in einem
> 1000ms Delay drin ist, daher ist auch eine Fehlfunktion der Software
> ausgeschlossen.
>
> ist auch eine Deaktivierung des Watchdogs vor dem Delay drin, um eine
> Fehlfunktion der 1000ms ohne W-Reset auszuschließen?

Das wird es wohl sein.

Wenn der watchdog zuschlägt, tut er es bis er zurückgesetzt wird, oder 
ein kompletter powercycle kommt. Externer Reset (zb durch ISP) tangiert 
ihn nicht.

Check das mcusr, lies die beschreibung zum watchdog.

Und finde raus, warum er an ist..
Gast #5596989
Lesenswert?

Hallo zusammen,
vielen Dank für die schnelle Antwort. Super! Im Anhang das Schema.

Der Watchdog ist per Fuse Bits deaktiviert und wird in der Software auch 
nicht verwendet.. Ich kläre aber noch das MCUSR ab. War aber damals bei 
der Störung "External Reset"
Stack überlauf muss ich prüfen, glaube aber nicht, dass hier ein Problem 
besteht.

Interessant ist auch, dass dieses Problem erst mit der neuen Charge der 
MCU's auftritt.

@Flippi: Alles schon versucht, 4k7 mit Kapazität hat nichts gebracht. 
Oszi zeigt keine Einbrüche.

Thanks
Angehängte Dateien:
Gast #5597007
Lesenswert?

Der interne Pull-Up, ist für I²C viel, zu hochohmig. Verwende dort mal 
besser 2,2k Ohm.

Dieses ASM13 Dings, ist das etwa eine RGB LED ohne Vorwiderstand?

Hast du die Mindestlast für das Netzteil eingehalten?
#5597136
Lesenswert?

Was mir so spontan auch noch auffällt: Varistor sowie TVS ist nicht sehr 
glücklich bemessen. Mit ihren Min-Werten und bei Netz + 10% (damit darf 
man rechnen, ich hab schon 240 VAC an ner Steckdose gemessen) dürften 
die immer ordentlich zuschlagen, der Varistor kann mit seinem Min-Wert 
sogar schon bei Netz-Nennspannung zuschlagen.
Moderator (Firma: Titel) Persönliche Seite #5597194
Lesenswert?

Hannes Feurer schrieb:
> Super! Im Anhang das Schema.
Der Schaltplan sieht doch recht gut aus. Wenn jetzt das Layout nicht 
völlig vermurkst ist, dann würde ich den Fehler in der Software suchen.
Denn eines ist selbst unter Softwerkern klar: es gibt keine fehlerfreie 
Software. Die letzten drei "Hardwarefehler", die ich mit dem LA gesucht 
habe, waren letztlich Softwareprobleme. Wobei man fairerweise einen der 
Fehler als schwarzen Peter immer zwischen Prozessorentwickler, 
Compilerbauer und Programmierer hin- und herschieben könnte...
Gast #5597307
Lesenswert?

Hallo Zusammen,
vielen Dank für die Hilfe.
@Stefanus: Ja, das ASM ist eine RGB LED, jedoch ohne Vorwiderstand. 
Sollte aber mit 3.3V möglich sein, da im Datenblatt die Breite von 2.7 - 
3.8V angegeben ist. Minimalast von 30mA ist eingehalten. Die neuen RACOM 
Netzteile haben neu 0% minimale Last drin.


@m.k.: Ja, die haben wir auch nach der EMV Messung erhöht, da diese 
Durchgeschlagen haben.

Im MCUSR wird der External Reset angezeigt. Wenn ich aber mit dem Oszi 
messe, sehe ich da keine Einbrüche. Habe auch eine Kapazität und mit 
niederohmigen Widerständen versucht. Wenn ich auch die Speisung 
ausschalte und wieder einschalte, ist der Fehler ja weg....

Ich habe nun eine Software geschrieben, die weniger Ram (30% usage 
anstatt 52%) und Flash (30% anstatt 55% usage) braucht. Könnte ein 
Ramfehler einen Reset verursachen?
Einen Softwarefehler kann ich ausschliessen, denn beim Start geht die 
Software in einen 1000ms Delay, in welchem er ja abstürzt.
Gast #5597405
Lesenswert?

LEDs betreibt man immer mit Vorwiderstand.

Deine Angabe von 2,7 - 3,8V kann bedeuten, dass du bei 3,3V einen satten 
Kurzschluss erzeugst. Der wiederum könnte erklären, warum dein 
Mikrocontroller resetted.

Abgesehen davon ist die Betriebsspannung von der Farbe abhängig. Rote 
LEDs haben normalerweise 1,7 - 2,1V.

LEDs sind keine Glühlampen! Wenn bei einer Glühlampe im Datenblatt 
steht, dass sie für 10-14V geeignet seien, dann kannst du sie mit 10-14V 
betrieben.

Bei LEDs ist das anders. Sie werden mit einem bestimmten Strom bei einer 
bestimmten Umgebungstemperatur betrieben, und nur dann ergibt sich eine 
Spannung im genannten Bereich. Wenn du nur 0,1V mehr anlegst, verändert 
sich der Strom erheblich. Damit verändert sich auch die Temperatur. Und 
jetzt kommt der Teufel im Detail: Wenn die Temperatur eine LED steigt, 
sinkt ihre Betriebsspannung. Du zwingst ihr aber eine konstante 
Betriebsspannung auf, daher steigt der Strom und sie wird noch wärmer - 
ein Teufelskreis dem nur die steigende Konvektion entgegen wirkt. Am 
Ende verliert die LED, sie wird frühzeitig kaputt gehen.

Wenn du mir nicht glaubst: Miss den Strom durch die drei LEDs und die 
Spannung, die an ihnen anliegt.

Du wirst sehen, dass die Ströme und Spannungen sehr unterschiedlich 
ausfallen. Du wrist sehen, dass der Strom allmählich ansteigt, bis die 
LED eine gewisse (schädliche) Temperatur erreicht hat. Und du wirst 
sehen, dass am Mikrocontroller eine gewisse Spannung abfällt, da sein 
Ausgang kein idealer Schalter ist. Mach das mit allen Ausgängen 
gleichzeitig, und dein Mikrocontroller wird schmelzen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren