AVR m32 hängt sich sporadisch auf

Gast #3938071
Lesenswert?

Hallo und frohe Festtage an alle.

Ich habe hier ein Problem für das mir der Lösungsansatz fehlt, ich hoffe 
dass jemand den Umstand kennt und mir eventuell einen Tipp geben kann wo 
ich ansetzen muss.

Und zwar habe ich hier eine Selbstgebaute Kesselsteuerung für meinen 
Heizkessel gebaut. Das ganze Konstrukt besteht aus:
Atmega 32 (DIP), 16MHz Quarz (Abblockkondensatoren 2*100nF)
4*DS18B20
2*16 Zeichen LCD Display
Drehgeber
2-fach Relaisplatine (Relaistreiber befinden sich auf der separaten 
Platine)

Das ganze lief mehrere Wochen fehlerfrei, nun habe ich das Problem dass 
sich der Atmega aufhängt - Displayanzeige bleibt betehen, auf Eingaben 
mittels Drehgeber folgt keine Reaktion, Messen und schalten funktioniert 
ebenfalls nicht.

Was noch erwähnenswert wäre ist dass der Watchdog aktiv ist (mit 2s 
Timeout) dieser jedoch scheinbar ebenfalls ohne Funktion ist.

Wenn ich die Spannungsversorgung kurz unterbreche läuft das ganze dann 
wieder Problemlos weiter (für mehrere Tage). Die Spannungsversorgung 
besteht im übrigen aus einem Hutschienennetzteil mit Stabilen 5V 
(gemessen 5,09V) 2A.


Kennt jemand solch ein Verhalten? Mich wundert sehr dass sogar der 
Watchdog hängt, der hat ja meines Wissens nach sogar eine eigene 
Taktquelle.
Ich hoffe auf sachdienliche Hinweise.

MfG
Gast #3938080
Lesenswert?

Das hört sich nach einem EMV Problem an. Brenner, Pumpen und der Kram 
erzeugen Spitzen und Felder. Das kann den kleinen Käfer richtig 
durcheinander bringen. Du solltest ein paar Entstörmaßnahmen vornehmen.

Damit überhaupt richtige Helfer aktiv werden können, wird der Schaltplan 
und die Einbindung in die Heizungsanlage benötigt.
Gast #3938142
Lesenswert?

Erstmal vielen Dank für eure Antworten.

Die Taktquelle hatte ich auch vermutet, jedoch hat der Atmega 32 laut 
Datenblatt eine separate Taktquelle für den Watchdog. Sollte das nicht 
bedeuten dass dieser eigenständig läuft? Oder verstehe ich hier etwas 
falsch?

EMV wäre natürlich eine Möglichkeit, jedoch hängt der AVR unabhängig vom 
Betriebszustand der Heizung also auch wenn weder Brenner noch Pumpe 
eingeschalten sind.

Ich werde wohl bei nächster Gelegenheit mal das Oszi nehmen und 
versuchen mir die Quarzfrequenz anzuschauen. Nur das mit dem Watchdog 
macht mich stutzig...
#3938162
Lesenswert?

Ein wenig invasiver Test wäre, den AVR mit internen 8MHz laufen zu 
lassen, statt mit Quarz. Komplizierter als Fuses umstellen und dem 
Programm die geänderte Frequenz mitzuteilen sollte das nicht sein. Der 
obigen Beschreibung nach sollte das auch ausreichen.

Den Takt per Oszi zu kontrollieren ist problematisch, denn eine normale 
Probe am Quarz verändert die Situation signifikant. Ausserdem geht es 
hier um das Langzeitverhalten.
Gast #3938171
Lesenswert?

Wohl wahr, der Test mit der internen Taktquelle ist jedenfalls ein prima 
Ansatz. Das werde ich, sobald die Speicher voll sind, gleich einmal 
machen.

Also zu dem Watchdog - wie gesagt - steht im Datenblatt folgendes:

The Watchdog Timer is clocked from a separate On-chip Oscillator which 
runs at 1MHz.

Das finde ich nach wie vor merkwürdig, allerdings steht da eben nicht ob 
zusätzlich ein externer Takt nötig ist. Wäre ja möglich dass der 
Watchdog dauerhaft im Reset hängt wenn der AVR nicht läuft...
Gast #3938172
Lesenswert?

Hi,

naja ich kenne die Atmels nicht so sonderlich gut, aber andere uC's..... 
Also es kann schon sein das der WDT über einen separaten Taktversorgt 
wird, aber das muss man doch konfigurieren! Also wenn man ein Projekt 
auf den uC bringt sollte man seine Takte und deren Quelle schon halbwegs 
kennen.

Wie auch immer wenn du den Quarz im Verdacht hast würde ich mal einen 
margin Test durchführen. Da bekommst du dann auch die richtigen Last C's 
für deinen Quarz......hier mal eine Anleitung....

http://www.murata.com/ensg/products/timingdevice/crystalu/basic/margin

Ansonsten würde ich die Pufferung deiner Versorgungspins prüfen und ggf. 
etwas verbessern.....100nF sind zwar der Klassiker aber nicht immer 
optimal. Probier mal kleinere C's parallel zu schalten die decken dann 
einen anderen Frequenzbereich ab.

Mit freundlichen Grüßen
Marcel
Gast #3938292
Lesenswert?

Hallo,

normaler Weise beschaltet man den Quarz mit 2C's an jedem "Bein" gegen 
GNDQ. Diese sind im algemeinen 10pF groß bzw. dies wird als Startwert 
für die Optimierung genommen. Genau wie 1k Reihen und 1M Parallel R.

Wenn nach einem RST der Takt immer noch nicht da ist liegt da was im 
argen..... sprich das ding schwingt nicht mehr an. Also Quarzbeschaltung 
ansehen und ext. Pufferung optimieren.

Gruß
Marcel
#3938308
Lesenswert?

johnny schrieb:
> Das finde ich nach wie vor merkwürdig, allerdings steht da eben nicht ob
> zusätzlich ein externer Takt nötig ist. Wäre ja möglich dass der
> Watchdog dauerhaft im Reset hängt wenn der AVR nicht läuft...

Der Watchdog läuft auch ohne Quarz. Aber wenn der nur CPU und I/O 
resettet, aber den Quarzoszillator nicht anfasst, dann steckt die CPU 
unverändert in der Klemme.

Rudi schrieb:
> Also es kann schon sein das der WDT über einen separaten Taktversorgt
> wird, aber das muss man doch konfigurieren!

Die Taktversorgung des Watchdogs ist hardwired. Nicht der Timeout, aber 
der Takt aus dem sich der Timeout ableitet. Ein interner, ziemlich 
unpräziser und separater R/C-Oszillator.
Gast #3951939
Lesenswert?

So, ein gesundes neues noch an alle.

Erst einmal vielen Dank für eure Antworten, ich war über den 
Jahreswechsel einige Tage verreist, daher die späte Rückmeldung.

Ein glücklicher Nebeneffekt hat sich durch meine Abwesenheit allerdings 
ergeben - die Fehlerursache ist gefunden.

Und zwar verfügt der Kessel über eine externe Brenneranforderung 
(derzeit bestehend aus einer Steckbrücke), über diese wurde der Kessel 
bis zur Ergänzung der Steuerung ein- und ausgeschalten.

Da ich nicht da war und die Steuerung erneut den Fehler zeigte mussten 
meine Eltern die Steuerung rücksetzen, da ihnen aber nur der o.g. 
Stecker bekannt war steckten sie eben diesen ein und aus. Und siehe da - 
es führte zu einem Reset.

Der Fehler lässt sich nun teilweise auch reproduzieren, es handelt sich 
um ca. 80cm (2x40cm) Steuerleitung welche von der Klemmleiste zum 
Stecker und dann auf den Relaiseingang gelegt ist.

Nun werde ich das ganze etwas entstören und bin guter Dinge dass es dann 
stabil läuft.

MfG

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