Hallo, will dass bei einem Fehler das Programm komplett beendet wird.
Habe mir folgendes überlegt:
void Programm_stop();
(
Timer1.detach(Funktion);; // Eine Funktion deaktivieren. Hatte in meinem Program eine Funktion void (Funktion) gehabt,
// die mehrere Sachen macht und die ich mit Timer1.attachInterrupt(Funktion) aufgerufen hatte.
)
diese Funktion, will ich mit dem Befehl goto aufrufen.
Ist so was unsetzbar überhaupt?
Ja, aber hatte in void setup() eine Funktion definiert, die die Temperatur misst und auf SD-Karte schreibt. Mit while(1) hat Funktion trotzdem auf die SD-Karte geschrieben.
Habe es mit exit(0) versucht. Scheint zu klappen, auf SD-Karte wird auch nicht mehr weiter geschrieben. Allerdings wenn man den seriellen Monitor aufruft, startet das Programm neu. Kann man das abstellen?
User_ino:
Allerdings wenn man den seriellen Monitor aufruft, startet das Programm neu. Kann man das abstellen?
Dieses Feature der Arduino-Boards nennt sich "Auto-Reset" und führt durch eine Hardwareschaltung zu einem automatischen Reset des Controllers, wenn am angeschlossenen PC die serielle Schnittstellenverbindung geöffnet wird.
Dieses Verhalten kannst Du hardwaremäßig abschalten, indem Du entweder
einen Kondensator von 1 Mikrofarad oder mehr zwischen GND und Reset Pin schaltest
oder (alternativ)
einen Widerstand von 120 Ohm zwischen 5V und Reset Pin schaltest
Nach Abschaltung von "Auto-Reset" ist aber damit gleichzeitig auch das automatische Uploaden von Sketchen deaktivert. D.h. zum Uploaden von Sketchen mußt Du entweder das Bauteil wieder entfernen, das den Auto-Reset verhindert, oder Du mußt immer mit manuellem Reset über den Reset-Button auf dem Board neue Sketche hochladen.
Beim Leonardo/MicroPro ist das soweit ich es mitbekommen habe nicht mehr notwendig. Dort kann ich während des laufenden Programmes mit Serial auch draufschaun ohne das er resettet.