Hallo, da mein Projekt (Datalogger mit SD-Karte) so nach ca. 6 Stunden abstürzt wollte ich mal fragen, ob es notwendig oder sinnvoll ist, 100 Ohm Widerstände in die Signalwege einzubauen. Kondensatoren habe ich IMHO genug spendiert, es findet auch kein Reset statt, sondern der µC bleibt einfach "hängen". Ich habe die SD-Karte z.B. direkt mit dem SPI verbunden, SD_Karte hat 100nF bekommen. Viele Grüße, Pete
Kannst du denn einen Software-Fehler ausschliessen? Wird der Watchdog benutzt? Ist die Versorgungsspannung sauber? (-> Schaltplan)
Spannung ist sauber, Watchdog wird nicht benutzt. Und Softwarefehler ... ich glaube, die kann man nie ausschließen. Ist nur komisch, dass das ganze erst nach 6 Stunden (mal mehr, mal weniger) ausfällt. D.h. 6 Stunden lang funktioniert die Software einwandfrei. Flash vom M32 ist zu 60% gefüllt, Ram zu 80% (sagt AVR-Studio). Aktuellen Schaltplan habe ich nicht, da ich von 5V auf 3,3V umgestiegen bin und die SD-Karte per 5cm Litze an den ISP-Stecker angelötet habe.
Tja, kann schon sein das du unter manchen Betriebsbedingungen mehr Stack brauchst als unter anderen und der dann irgendwann zufällig voll ist. Bei 80% Ram-Bedarf ist dann nicht mehr viel Platz auf dem Stack für z.B. große lokale Variablen oder rekursiv aufgerufene Funktionen. Gibt es denn einen Prozess, der nach 6h zum ersten mal aufgerufen wird? Möglichkeiten gibt es da viele.... Achja, wieso verwendest du keinen Watchdog? Dann läuft deine Anwendung zwar nicht stabiler, aber sie fängt sich zumindest schnell wieder anstatt auf ewig fest zu hängen. ;)
Ich kenne mich mit Watchdog nicht aus, bzw. habe so etwas noch nicht verwendet. Es gibt auch keinen Prozeß, der nach 6 Stunden das erste Mal aufgerufen wird. Es werden alle 3 Sekunden Meßwerte (40 Bytes) auf die Karte (32MB) geschrieben.
Der Watchdog ist ein Timer, der den Controller vollständig resetet, wenn er Null erreicht. Deshalb muss deine Anwendung ihn regelmässig auf einen bestimmten Wert setzen um zu verhindern das er abläuft. "Frisst" sich deine Anwendung nun irgendwo fest, sorgt der Watchdog für einen sauberen Reboot. siehe auch http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Der_Watchdog Was genau wird den gemessen?
>Was genau wird den gemessen?
Ist doch eigentlich Wurst ;)
Interessanter wäre welcher uC, und SD Karte
mit FAT oder nicht? Falls FAT wird das Dateisystem
im Kartenleser nach dem Crash noch erkannt?
Fragen über Fragen...
Wenn ein uC mit 1k RAM verwendet wurde könnte
man mal versuchen einen pingleichen mit 2k RAM
einzusetzen (wenns einen gibt).
Gemessen wird die Temperatur mit ein paar DS1820. Den Watchdog werde ich mal implementieren. Klingt gar nicht so schlecht :-)
Hmm... wrote: > Achja, wieso verwendest du keinen Watchdog? Weil das die völlig falsche Methode wäre, einen Fehler zu finden. Ein Watchdog behebt den Fehler nicht, sondern kaschiert ihn. Er wird in jedem Fall eine Fehlfunktion bewirken, wenn er auslöst. Z.B. der Datenlogger wird Records verlieren oder ungültige Records abspeichern oder im Worst-case sogar das Filesystem zerstören. Solange die Software auf dem Entwicklertisch liegt, gehört ein Watchdog immer ausgeschaltet! Erst nach Abschluß der Entwicklung wird der Watchdog eingebaut und getestet. Den Fehler muß man also mit Überlegung suchen. Z.B. sollte man erstmal feststellen wie weit der MC hängen bleibt. Man kann in einem Timerinterrupt ein LED blinken lassen. Blinkt diese beim Hängenbleiben, dann ist irgendwo in der Mainloop ne falsche Bedingung (z.B. fehlender Default-Zweig) drin. Dann kann man in dem Blinkinterrupt einen Taster abfragen, um nen RAM-Dump ausgeben zu lassen und den Stackpointer. Damit weiß man, wo der MC hängt. Bei nem Watchdogreset werden dagegen Stack und PC resettet und man weiß garnichts. Peter
Hallo Pete Nuzt du C? Oder ASM? Bei ASM: Ich hab mir als ich neu eingestiegen bin die "lustigsten" Fehler dadurch eingefangen, das ich das SREG im Interrupt nicht gesichert habe.
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.