Programm beenden

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?

User_ino:
Ist so was unsetzbar überhaupt?

Ein Programm "beenden" kannst Du auf einem Controller eigentlich nur durch Entfernen der Stromversorgung.

Du könntest einen Controller auch in einen Schlafmodus versetzen und dafür sorgen, dass er nicht wieder aufwacht.

Aber Du kannst ein Programm leicht jederzeit an beliebiger Stelle in eine Endlosschleife schicken mit:

while(1);

Dann "hängt" das Programm in dieser while-Schleife fest und führt nachfolgenden Code nicht mehr aus.

Aber Du kannst ein Programm leicht jederzeit an beliebiger Stelle in eine Endlosschleife schicken mit:

while(1);

Aber auch ein
for(;;){}
ist eine Endlosschleife.
Grüße Uwe

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

  1. einen Kondensator von 1 Mikrofarad oder mehr zwischen GND und Reset Pin schaltest
    oder (alternativ)
  2. 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.