Guten Tag allerseits Komme gerade von einem Kunden, dem ich zum zweiten Mal das Geraet austausche. Das erstere habe ich an einen anderen Kunden verkauft, wo es seit 2 Wochen einwandfrei laeuft. Alles in allem sind rund 40 Geraete im Umlauf. Und noch kein einziger Aussetzer: ausser in diesem Fall. Es handelt es sich um eine Schaltung mit einem Atmega8. Der Watchdog Aufruf erfolgt einzig im Main-Loop. BODEN und BODLEVEL sind beide aktiviert. Die gemeldeten Fehler: 1. Wenn der Nachtwaechter morgens den Hauptschalter einschaltet, haengt mein Geraet. Ein Aus- und erneutes Einschalten bringt ihn wieder zu sich. 2. Wenn mein Geraet eine Sirene aktiviert (via Relais, die wiederum ein zweites Relais anzieht) dann haengt er sich (manchmal) auf. Ein Aus- und erneutes Einschalten bringt ihn wieder zu sich. 3. Zufaelliges Haengen des Geraets, ohne irgendeinen Grund. Ich gehe davon aus, dass irgendwelche Netzstörungen die Ursache dieses Verhalten ist. Aber warum in alles Welt springt der Watchdog nicht ein?
Poste mal eine Schaltung; Verdacht: ungesiebte Spannungsversorgung und / oder EMV Einstreuung.
Mehr Möglichkeiten zur Diagnose hast Du nicht? Zuerst mal würde ich aus eigener Erfahrung heraus auf ein EMV-Problem tippen. Dazu gehören natürlich auch Störungen der Versorgungsspannung. Ein entsprechendes Layout kann da schon viel herausreißen. Nächstes Problem: Es könnte auch ein Softwarefehler sein. Wenn irgendwelche Bits im RAM gekippt werden, könnte es sein, dass Parameter nicht mehr vorgesehene Werte haben und dadurch das Programm nicht mehr so reagiert, wie vorgesehen. Da ist es durchaus möglich, dass der Main-Loop noch munter den Watchdog-Timer zurücksetzt aber Subroutinen oder Interrrupts nicht mehr sauber ausgelöst werden. Heißt also: Im Main-Loop regelmäßig die Timer und Interrupt-Flags überprüfen. Letzteres wäre nur an den Symptomen herumgebastelt, besser ist es natürlich, die Ursache zu eliminieren.
@thkais Danke für den Tip mit dem Main-Loop. Im Program ist alles auf den Timer0 aufsetzt. Wenn der Timer0 nicht mitmacht, dann laeuft gar nichts.
Hallo Mehmet, wie sind die Fuse-Bits gesetzt? Könntest Du uns mal bitte Deine Schaltung und den Code zur Verfügung stellen? Bernhard
@thkais Ich habe jetzt WDR() vom MainLoop() in die Task_1sec() verlegt. Diese Funktion kann nur dann aufgerufen werden, wenn Timer0 seinen Dienst einwandfrei erledigt. Wenn ich nun die Spannungsversung mit Spikes verseuche, dann haengt das Geraet mit der alten Version. Das Geraet mit der neueren Version resetet sich. Nochmals herzlichen Dank.
@Mehmet wir hatten hier im Forum letztens ein ähnliche Diskussion, ein µC stürzte permanent durch elektrostatische Aufladungen ab. Benedikt hatte eine sehr gute und einfache Lösung, die uns allen in blankes Erstaunen versetzte. Deshalb die Frage zu den Fuse-Bits? Bernhard
@Bernhard Schulz Der Schaltplan besteht aus 3 A4 Seiten und der Code aus rund 3200 Zeilen. Ich glaube nicht, dass irgeneiner Lust haette, dies zu analysieren.
@Mehmet In der Beilage die FuseBits .... müsste auf intern 2MHz RC-Generator eingestellt sein, wenn ich es jetzt richtig gedeutet habe? Bernhard
@Mehmet, bei internen RC-Generator kann durch die Fuse-Bits auch nichts verbessern. Bernhard
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.