folgendes Szenario: ein MC (Mega8) hängt über GPRS an der "langen Leine", soll auf Anforderung Messwerte übermitteln. Diese Bereitschaft muss so gut möglich gewährleistet sein (da kann nicht mal eben einer hingehen und einen resetknopf drücken). Watchdog, Spannungsüberwachung etc. ist alles drin. Die Anforderung kommt über die UART, zeitlich völlig unbestimmt. Wäre nun durch einen wie auch immer gearteten Fehler z.B. der receiver disabled oder die Baudrate verstellt oder das I-Flag gelöscht oder oder oder, bekäme ich die Anforderung nicht mehr mit, auch der watchdog hilf mir da nicht, Programm läuft ja. Langer Rede, kurzer Sinn: hat jemand Erfahrungen damit? Können durch äussere elektrische Störungen einzelne Bits gekippt werden? Hab schon überlegt, in der main die ganzen Einstellungen zu überprüfen und ggf. zu korrigieren oder einmal pro Stunde das Teil in den watchdog-reset schicke (eine Stunde Ausfall kann toleriert werden).
Du kannst für die Variablen und Konstanten verschiedene Speicher wählen, bei Mega8 Flash, inbt. EEPROM und evtl. ein serielles EEPROM via I2C anhängen. Die Majorität der Abfragen entscheidet über die Gültigkeit. Auch Watchdog einsetzen. Und evtl. Datenstrom auf Plausibilität prüfen. Michael
Hi Grundsätzlich: Passieren kann alles. Die erste Gegenmaßnahme ist ein gutes Layout und eine störsichere Auslegung der Schaltung. Im Speziellen: Hast du nicht die Möglichkeit mit dem GPRS-Modul hin und wieder kurz Kontakt aufzunehmen? So eine Art: "Klopf Klopf Noch jemand zu Hause"? Wenn der Kontakt nicht bis $Timeout zustande kommt -> Systemreset auslösen (z.B. Watchdog überlaufen lassen oder per Portleitung eine Monoflop triggern) Auch weitere Peripherie kann man so von Zeit zu Zeit abfragen ob noch alles in Ordnung ist. Matthias
Bei gutem Design sollte es extrem selten passieren. Aber alles, was wichtig ist, sollte man z.B. über Checksummen absichern und regelmäßig prüfen. Wie betriebssicher gut designte Schaltungen und Software funktionieren, zeigt mir mein Linux-Server. Der läuft manchmal über ein Jahr durchweg und dann unterbreche ich das Ganze nur, weil ich wg. irgendwas mal neu booten muss, nicht weil der abgestürzt wäre. Und ein PC ist nunmal noch viel komplexer als ein kleiner Microcontroller mit ein wenig Pheripherie.
Hallo, wenn das GPRS Modem über AT Befehle angesteuert wird dann wirklich zwischendurch mal gucken ob es noch da ist. Vor allem kann man so auch gleich noch mitprüfen ob noch das GSM Netz vorhanden ist (nicht das das einer die Antenne gezogen hat). Martin
Besten Dank erst mal für die Ideen. Direkt mit dem Modem kann ich nicht babbeln, dazwischen hängt noch ein BECK IPC SC12 mit TCP/IP, und dessen Software mache ich nicht. Ich habe die Hardware und die MC-Software. Werde mal mit dem Softwarefritzen vom SC12 reden, dass der auf eine Anfrage vom meinem MC auch was antwortet. Oder alternativ, dass der SC12 beim AVR einen Hardwarereset auslöst, wenn der sich tot stellt. Dann bin ich den Kram komplett los :-), auf die höhere Ebene delegiert, ich glaube, dass gefällt mit am besten.
Was auch ganz mächtig in die Hose gehen kann sind "malloc Orgien". Wenn Dein heap Fragmentiert wird und das Speichermanagement das gar nicht oder nicht in geeigneter Weise abfängt, "hängt" Dein Programm irgendwann fest. Das bezieht sich natürlich in erster Linie auf C-Programme. Also -- Vorsicht mit malloc, und niemals ein free vergessen :-)
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.