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
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.
Da es ja lange gut lief denke ich eher ans Netzteil. Was hat sich seit dem verändert? Läuft die Heizung erst jetzt unter Last? Vielleicht kannst du ja mal ein anderes Netzteil anschließen. Alle Lötstellen gucken ... Kondensatoren, ect. ... Ich kenne eher dieses Verhalten vom Steckbrett (sprich, schlechte Verbindungen).
:
Bearbeitet durch User
Der effektivste Weg, einen AVR trotz Watchdog und/oder sauberer Stromversorgung lahmzulegen, dürfte in der Taktversorgung liegen. Manche µCs haben eine Art Watchdog für die Taktversorgung, die ggf. auf einen Not-Takt umschaltet. AVRs nicht.
:
Bearbeitet durch User
A. K. schrieb: > dürfte in der Taktversorgung liegen. ... wollte ich noch gerade ergänzen. Das siehst du besonders schön auf dem Steckbrett, wenn der Quarz nicht richtig Kontakt hat. Etwas am Quarz wackeln und er läuft wieder.
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...
johnny schrieb: > Sollte das nicht > bedeuten dass dieser eigenständig läuft? Also vom ATmega 32 weiß ich das nicht, aber bei anderen Atmel ist der trotzdem abhängig vom Systemtakt. Da lies doch noch mal selbst das Datenblatt an entsprechenden Stellen.
:
Bearbeitet durch User
Der Watchdog ist zwar unabhängig vom CPU-Takt, aber wenn der CPU-Takt nicht läuft nützt das nichts.
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.
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...
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
Hi, Was für Lastkapazitäten hat der Quartz? Der WD resettet den uC, aber wahrscheinlich nicht den Taktgenerator. Wenn der Takt ausfällt ist er nach einem Reset immer noch nicht da. Bei Unterbrechung der Versorgung läuft er wieder mit an. Temperatur im Raum hat sich geändert um ein paar Grad? Gruß Marvin
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
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.
:
Bearbeitet durch User
johnny schrieb: > The Watchdog Timer is clocked from a separate On-chip Oscillator which > runs at 1MHz. Leider weiß ich nicht mehr wo ich den Zusammenhang las, aber da gibt es einen.
So, nun habe ich das doc2551 wieder gefunden. Der Abschnitt 2.5 ist da schon sehr interessant. Vielleicht liest du das ja mal und entdeckst dann evtl. einen Programmfehler, wenn es nicht an der Hardware lag. http://www.atmel.com/Images/doc2551.pdf
Einen Tipp von mir wegen den DS1830: Während der 1Wire-Abfrage keine Interrupts verwenden! Dann hängen die Sensoren (was aber den Watchdog auslösen würde)
Ist der Brown-out Detector eingeschaltet? Ohne könnte sich der Prozessor bei kleinen Spannungseinbrüchen aufhängen - zumindest theoretisch... Gruß Dietrich
In der überwältigenden Mehrzahl versteckt sich hinter so einem Fehlerbild ein Softwarefehler. Es soll sogar Leute geben, die den Watchdog in einem Timerinterrupt quittieren...
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.