Forum: Mikrocontroller und Digitale Elektronik AVR stürzt unregelmäßig ab


von Gregor B. (Gast)


Lesenswert?

Hallo,
ich habe eine Schaltung aufgebaut, die läuft wochenlang bei Versorgung 
übers ISP-Kabel vom STK500 durch (I-Aufnahme unter 100mA). Sobald ich 
das Ganze aber ans externe Netzteil hänge (mit 10.000uF & 78S12 15mV 
Rauschen vorstabilisiert, auf der Platine selbst nochmal mit 7805, 
1.000uF), läuft das Programm nicht mehr durch, irgendwo zwischen gar 
nicht los und weniger als  10 Stunden. Ich habe mal das Phänomen 
beobachten können, das auf dem LCD Zeichen aufblitzen, die eigentlich 
per uart_puts() raus gehen sollten. Wenn ich das Kabel zwischen Rx, Tx, 
GND mit dem STK500 verbinde, läuft es wieder stabil.

Gibt es Besonderheiten, wenn über uart etwas ausgegeben werden soll, 
aber nix angeschlossen ist? Stichwort Bufferoverflow? Aber es 
funktioniert ja manchmal ne Weile... Benutzt P.Fleury's 
uart-Implementierung Handshaking? Ich weiß langsam nicht mehr wo ich im 
Stroh stochern soll.

Danke für eure Hilfe!
Grüße, Gregor

von Volker (Gast)


Lesenswert?

Benutzt du einen externen Quarz > 8MHz?
Wenn ja, CKOPT setzen.

Gruß, Volker

von Gregor B. (Gast)


Lesenswert?

16Mhz. Fuse hab ich soeben gesetzt. Da wäre ich wohl tatsächlich im 
Leben nicht drauf gekommen, danke! Werde das Verhalten mal bis morgen 
beobachten.

von Roland Praml (Gast)


Lesenswert?

Evtl floatet auch dein Reset-Pin...

von Gregor B. (Gast)


Lesenswert?

Der Reset-Pin hat nen 100k Pullup. Sollte es also nicht sein.
Bisher läuft die Schaltung seit 3 Stunden durch. Sieht also gar nicht so 
übel aus. freu

von Magnus Müller (Gast)


Lesenswert?

> Der Reset-Pin hat nen 100k Pullup. Sollte es also nicht sein.

NUR einen 100k Pullup? Kein Kondensator? Damit lädst du dir die 
nächstbeste kapazitive Einstreuung als Resetpuls ein.

von Simon K. (simon) Benutzerseite


Lesenswert?

Ich habe die Erfahrung gemacht, dass der interne Pullup meistens nicht 
ausreicht und selbst der hat 30-60kOhm laut Datenblatt.

Daher meine Empfehlung: 3,3k - 10k oder sowas sollte besser 
funktionieren.

Ich hoffe, dass ich jetzt hier nichts falsches gesagt habe ;)

von Uwe .. (uwegw)


Lesenswert?

Wird denn wirklich ein Reset ausgelöst, oder verrent sich nur die 
Software irgendwo? In MCUSR wird gespeichert, wer den letzten Reset 
ausgelöst hat.

von Benedikt K. (benedikt)


Lesenswert?

Ich hänge meist 100nF zwischen Reset und GND, dann reicht auch der 
interen 100k Widerstand. Das bringt mehr als nur 10k ohne Kondensator.

von HildeK (Gast)


Lesenswert?

Für Reset ist eine externe RC-Beschaltung immer sinnvoll. Je nach 
'Anstiegszeit' der Versorgungsspannung können vereinfachte Varianten 
schon mal Probleme bereiten.

von Gregor B. (Gast)


Lesenswert?

Also allein durch das Setzen des Full Rail-to-Rail Modus (CKOPT-Fuse) 
läuft das Programm jetzt seit 27,5h Fehlerfrei durch. Vorher kam es zu 
abstürzen / resets und die SW begann von vorn, bzw. zu komischen Sachen 
beim Anlegen der Betriebsspannung (uart_puts(inhalte) kamen aufs LCD). 
Zumindest mein Problem scheint erfolgreich gelöst worden zu sein! Danke 
Volker! Im nächsten Design kann ich ja einen Tiefpass berücksichtigen.

Grüße, Gregor

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.