Forum: Mikrocontroller und Digitale Elektronik ATmega328 reset aus unerklärlichen Gründen


von Hannes Feurer (Gast)


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

von Jens G. (jensig)


Lesenswert?

>1000ms Delay drin ist, daher ist auch eine Fehlfunktion der Software
>ausgeschlossen.

Na dann ist ja alles bestens mit der SW ...

von Flippi (Gast)


Lesenswert?

Stützcaps hinzufügen. EMV verbessern. RESET eingang mit niederohmigem 
Pull-Up versehen.

von Flippi (Gast)


Lesenswert?

> auch liefert das Netzteil genügend Strom.

Und die Spannung am Chip? Es reicht ein Einbruch von Mikrosekunden um 
den Chip zu resetten. Bitte mit Oszi die Qualität der Versorgung prüfen.

von A-Freak (Gast)


Lesenswert?

Sind genug Stützkondensatoren an der Versorgungsspannung?

von Stefan F. (Gast)


Lesenswert?

Zeige mal den Schaltplan und ein Foto vom Aufbau. Die Ursache sind immer 
wieder die gleichen, anhand der Bilder wählen wir die für dich 
relevanten aus.

von Dirk B. (Gast)


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?

von Harry L. (mysth)


Lesenswert?

Stack/Heap-Überlauf?

....wird immer wieder gern genommen, und geht bei den kleinen µC ganz, 
ganz schnell.

Die Symptome sind meist ganz ähnlich...

von Dunno.. (Gast)


Lesenswert?

Lustig sind auch nicht initialisierte isr-vectoren.... :)

von Dunno.. (Gast)


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..

von Hannes Feurer (Gast)


Angehängte Dateien:

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

von Stefan F. (Gast)


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?

von M. K. (sylaina)


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.

von Peter D. (peda)


Lesenswert?

Hannes Feurer schrieb:
> Nach ca. 24h
> Betrieb startet der CPU aus unerklärlichen Gründen neu (vieleicht
> external Reset)

Die Resetquelle läßt sich leicht herausfinden (MCUSR), man muß es nur 
tun.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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...

von Hannes Feurer (Gast)


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.

von Florian (Gast)


Lesenswert?

Poste Schaltplan und sourcecodes. Alles andere ist Prosa und sollte 
sanktioniert werden!

von Stefan F. (Gast)


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.

von Maxim B. (max182)


Lesenswert?

Hannes Feurer schrieb:
> 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.

Hallo,
solange du diesen Fehler nicht beseitigst, hat es wenig Sinn, weiter zu 
suchen.

Am besten liest du in Büchern, was ist LED, wie schaltet man LED und 
warum so und nicht anders.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.