Arduino abgestürzt

Hi,

kam heut nach Hause und habe mich gewundert, warum meine LED Lampe immer noch hell war, eigetnlich soll die abends ausdimmen.
HAbe dann gesehen, dass das LCD Display den Modus nicht mehr gewechselt hat.
Demnach ist mein Arduino Mega wohl abgeschmiert, kurz die Software wieder hochgeladen und dann gings.

Jetzt frag ich mich allerdings, wie zuverlässig so ein MC ist? Ist das eher ein Hardware Problem (wobei ich ihn ja nicht resetten musste sondern lediglich die Software neu aufspielen) oder kann es sein, dass er mal an der Software abkackt.
Habt ihr ähnliche Erfahrungen? Wenn ich mal im Urlaub bin, sollte das Ding eigentlich zuverlässig laufen, nem Kumpel zu erklären wie er ggfs die Software wieder aufspielt (und auch Parameter der Tageszeit anpasst) halte ich eher für schlecht.

Wie sind eure Erfahrungen wenn der im Dauerbetrieb ist?

Dabei fällt mir ein: Die Batterie des RTC - was ist wenn die alle ist? Greift der RTC auf den Stromdes Boards zurück?

Gruß

also meiner erfahrung nach stürzt ein Arduino nur ab wenn ein hardware oder software fehler vorliegt , aber dann meist auch schon nach wenigen sekunden

currymuetze - wenn Du Software auf Deinen Mega hochlädst, wird automatisch ein Reset durchgeführt. Du hast den Mega also resettet, als Du die Software neu aufgespielt hast.

So ein ATMEL-Chip ist eigentlich sehr zuverlässig - allerdings kann man aus Deiner Beschreibung nicht wirklich ableiten, was passiert ist. Könnte sein, dass das Problem in der Hardware liegt - vielleicht ein Wackelkontakt, ein nicht ganz so stabiles Netzteil? Die Software kann natürlich auch der Übeltäter sein - wenn z.B. durch rekursive Funktionsaufrufe der Speicherplatz verbraucht wird, welcher dem Arduino Mega zur Verfügung steht. Sowas wird nämlich bei den "Kleinen" nicht während der Laufzeit überprüft (im Gegensatz zum PC, etwa). Man kann auch locker zu große Arrays anlegen - wenn die dann irgendwann langsam gefüllt werden, kracht es, irgendwann....

(Es gibt auch noch weitere Möglichkeiten, einem Arduino Mega ein Bein zu stellen - viel Spaß beim Suchen!)

Die normalen RTCs haben Batterien, die jahrelang halten. Es dürfte sehr unwahrscheinlich sein, dass eine solche Batterie leer wird. Außerdem wird die Batterie bei den RTC-Chips nur dann verwendet, wenn die externe Versorgungsspannung nicht anliegt. Also eigentlich nur dann, wenn bei der übrigen Schaltung der Netzstecker gezogen ist.

  • cpixip

Hauptproblem ist bei solchen Dingen fast immer die Software. Die Bugs in den Controllern sind wenige und treten nur in eher exotischen Fällen auf. Die Hardware kann auch Probleme machen. Insbesondere wenn die Spannung nicht sauber ist. So wie Du fragst würde ich aber fast drauf wetten, daß Dein Problem in Deiner Software liegt.

Ansonsten kann man auch über einen Watchdog nachdenken. Es ist aber im Zweifelsfall besser die Fehler zu suchen und zu entfernen.

Hallo Udo,

ich denke auch es liegt an der Software, aber wie finde ich die Fehler?? Gibts Tipps zur Fehlersuche?
Ich arbeite auch mit Arrays, können die vollaufen? Oder kann es daran liegen, dass eine Variable mal über das Limit läuft (zB ne long zu groß wird?)

Gruß
Thorsten

currymuetze:
Gibts Tipps zur Fehlersuche?

Generelle Tipps hast du ja jetzt schon welche bekommen (arrays nachpruefen, variablen checks usw., indizes, ueberlauf, signed unsigned probleme). Am besten den Kode von der ersten bis zur letzten Zeile nochmal in aller Ruhe lesen, und sich die Frage stellen, ob jede Zeile wirklich das tut was es im Gedanken tun soll.
Einige typische Fehler die zu (zunaechst) unerklaerlichen Fehlfunktionen fuehren sind zum Beispiel: arrays von 0..N und nicht 0..N-1, if abfragen mit zuweisung (= ist nicht ==). 'for' loops mit 'unueblichen konditionen'. Shift priority (<<a+b). overflow: int auf arduino ist 16 bit und nicht 32. Bei interrupts nicht gut durchgedachte zugriffe auf variable/ports. Schreibfehler mit char (9 != '9').

Am besten einfach mal ein wenig Sourcecode hier posten (mit den [ code ] tags) . Die meisten C/C++ - Programmierer hier lesen sowas zum Fruehstueck! :wink: