Hallo Ich habe eine Schaltung mit einem Mega644 laufen die im Grund über Schieberegister div. 230V Relais ansteuert. Die Anweisungen kommen von div. Tastern und Schaltern die ausgewertet werden. Zusätzlich gibt das Programm alle 20 sec. den aktuellen Status der Verbraucher über die Serielle Schnittstelle in eine Log-Datei aus. Soweit so gut.... Das funktioniert im Grund seit Jahren. Es gibt jedoch eine Kleinigkeit die leider auch seit Jahren nicht funktioniert. Leider hatte ich nie Zeit ihr auf den Grund zu gehen. Alle paar Stunden ( unregelmäßig ) startet das Programm neu. Zu erkennen daran dass sich eine Zählervariable zurücksetzt und natürlich die zu diesem Zeitpunkt angeschalteten Verbraucher abschalten bzw. in den Ausgangszustand zurückfallen ( für jeden Verbraucher voreingestellt ) Da das auch passiert wenn keine Taster/Schalter betätigt werden bzw. kein Verbraucher an ist kann ich Rückkopplungen/ungewollte Spannungsspitzen und dergleichen ziemlich ausschließen. Die Serielle Schnittstelle läuft auch sauber. Keine undefinierbaren Zeichen im Log. Auch nach dem Reset nicht. Scheint also so zu sein dass das Reset nicht während der Übertragung auftritt. Stromausfall kann auch nicht der Grund sein da die Schaltung an einer handelsüblichen USV-Anlage hängt. ( Die gleiche mit der auch der Server versorgt wird, der nicht abstürzt ) Die Spannungsversorung selbst läuft über ein Laptopnetzteil und einem Spannungswandler mit entsprechender Kondensatorbestückung. Für mich sind keine äußeren Einflüsse erkennbar die zu diesem Neustart des Programms führen können. Da es so unregelmäßig und in großen Abständen passiert ist es auch schwer das Ganze zu beobachten. Hat jemand eine Idee wie ich an die Sache am besten herangehen könnten um die Ursache ausfindig zu machen. LG iwiki
Erstmal sehe ich da nur die Möglichkeit, dass du einen Logger dran hängst um zu schaun wie der Pin-Status vor dem Reset ist. Sowas ist immer doof rauszufinden.
Iwiki I. schrieb: > Stromausfall kann auch nicht der Grund sein da die Schaltung an einer > handelsüblichen USV-Anlage hängt. ( Die gleiche mit der auch der Server > versorgt wird, der nicht abstürzt ) Der hält normalerweise 2-3 ausgefallene Halbwellen aus. > Die Spannungsversorung selbst läuft über ein Laptopnetzteil und einem > Spannungswandler mit entsprechender Kondensatorbestückung. Da würde ich mal ein DSO ranhalten. Trigger so ca. 10% unterhalb der normalen Spannung und dann einfach laufen lassen. Weiter mögliche Falle: EMV Einstreuung in den Reset Pin.
Hi Erste Möglichkeit wäre festzustellen welcher Reset erfolgt -> Auslesen von MCUSR nach einem Reset. MfG Spess
Iwiki I. schrieb: > Hat jemand eine Idee wie ich an die Sache am besten herangehen könnten > um die Ursache ausfindig zu machen. Gleich am Anfang Register und Memory dump.
Für Ursachenforschung auf der Software-Seite: - BADISR_vect implementieren mit Log-Output - RAM-Verbrauch mit arme-Leute-Methode messen: RAM bei Start mit bekanntem Muster beschreiben, periodisch gucken, wieviel davon noch da ist. - Auf aus dem Ruder laufende Zeigervariablen/Pufferüberlauf checken
Hallo Danke für das rege Interesse und die Antworten. Ein bisschen habe ich ja schon befürchtet dass es auf Fotos und Layout hinauslaufen wird. Schätze jetzt kriege ich das erste Mal Schimpfe :-) Ich fürchte ich brauche die Lösungsvorschläge etwas laienhafter: - Logger dranhängen: ich schreibe das Programm in den Chip ( mySmartUSB light ) und stecke den Chip dann in die Schaltung. Anschließend habe ich nur noch die Serielle Schnittstelle als Verbindung. Welche Art von Logger ist hier gemeint. - Wie ihr am Programm sehen könnte arbeite ich vor allem mit globalen variablen. Wenn sich hier Speicherplätze überschreiben weil doppelt belegt müsste ich das an undefinierte Programmzuständen merken??? oder? => Konnte da bisher nicht feststellen. Software läuft korrekt.
Iwiki I. schrieb: > Schätze jetzt kriege ich das erste Mal Schimpfe Naja, bei dem Vogelnest kannst du froh sein, daß es überhaupt funktioniert. Für den Anfang würde ich Reset fest auf Vcc legen. Damit kannst du schon mal ausschließen, daß er sich den Reset von außen einfängt. Das Basic-Programm kann ich nicht beurteilen.
Oh, Basic. Dann funktionieren meine Software-Tips leider nicht. Logger: So wie Jim oben geschrieben hat: Falls vorhanden, DSO auf dem Reset-Pin anklemmen und passend triggern. Falls es einen Resetimpuls gibt, sollte der Trigger auslösen. Ansonsten tut's auch ein billiges RS-Flipflop mit einer LED am Ausgang, das bei fallender Flanke schaltet. Oder zweiten avr nehmen, INTx dieses zweiten mit Reset-Pin des ersten verbinden und auf fallende Flanke lauschen.
Hallo iwiki, mir erscheinen die Stacks und speziell der hwstack sehr knapp bemessen. Allein ein IRQ benötigt 32 Byte vom hwstack. $hwstack = 40 $swstack = 60 $framesize = 60 on_tint1: 32 Timsek = Timsek + 5 Call Timerchecken() Sub Timerchecken() 34 For T = 1 To P(3) ----- einige Befehle Call Serialstatus(x) 36 usw. Wenn weitere Calls oder Subs dazukommen oder vor dem IRQ bereits etwas auf den Stack abgelegt war, könnte es zu einem Überlauf kommen. Meine Empfehlung ist die Stacks mal probeweise zu verdoppeln oder wenigstens den hwstack deutlich zu vergrößern. Gruß Alex
Hallo :-) Ja mir ist durchaus bewußt das man das auch aufgeräumter bauen kann.... aber so ist das halt mit gewachsenen Struckturen. Gebaut habe ich das ursprünglich mal als Modeleisenbahnsteuerung.... naja was soll ich sagen..... Relais getauscht... dort ein Schalter dazu, Bewegungsmelder braucht es auch..... und ein Dämmerungsschalter wäre gut und natürlich soll das Licht angehen wenn einer die Klingel drückt....Kompressor vergess ich auch immer ausschalter.. na dann nehmen wir den doch auch mit rein. ..... Also mal schnelle ein Kabel ran und probieren ob es funktioniert......klappt also lassen wirs mal so. Aufräumen kann man später. Wenn ich mal in Pension bin mach ich das alles neu und viel besser :-) Ich werde den Tip mit Reset auf VCC mal probieren und die Stacks vergrößern. Das lässt sich leicht umsetzen. DSO habe ich leider nicht.... Das mit dem FlipFlop lass ich mir mal durch den kopf gehen wenn der Tip mit VCC nicht hilft. ... Ist einfacher umzusetzen auf die Schnelle und zielt auf das selbe ab. Vielen Dank erstmal... und noch einen schönen Abend
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.