Go Down

Topic: Software reset (Read 794 times) previous topic - next topic

Cetax

Hallo,
gibt es eine möglichkeit, den Arduino Uno per Softwarebefehl Neu zu starten ?

Ich bräuchte sowas in meinem "void setup()" , wenn er etwas nicht findet.

Habe da was bei google gefunden ( softReset(); )  aber wie benutzt man das ?
*greatz*

 CeTax

www dot blinkmann dot de

uwefed

Einen Reset durchzuführen wenn etwas nicht gefunden wird, ist keine gute Problemlösung und ich rate Dir davon ab.
Beschreibe bitte genau Dein Problem. Vieleicht finden wir eine bessere Lösung.

Grüße Uwe

mkl0815

Wenn es um Deinen Gaszähler geht, würde ich das auch nicht so machen.

Im setup() einmal nach dem Wert aus der DB zu schauen ist ok. Sollte das nicht klappen, kann man sich ein Flag setzen (update_from_DB = 1) und trotzdem in der loop() die aktuellen Zählimpulse erfassen und aufsummieren. Bei jedem Versuch die Daten an die DB zu schicken wird dann das Flag geprüft, wenn == 1, dann immer erst versuchen die Daten aus der DB zu bekommen und dann den Wert dazu addieren. Falls das Lesen aus der DB wieder nicht klappt, wirst Du auch kaum was in die DB schreiben können, also einfach später wieder probieren.

Mario.

P.S. Falls es nicht Dein Gaszähler ist, dann dürfte sich ein vergleichbares Problem sicher auch so ähnlich lösen lassen.

Cetax

Hallo Uwe, Hallo Mario,
Ok, wenn das nicht so gut ist und Ihr davon ab ratet, willich kurz erläutern,
warum ich an sowas gedacht habe. (ja es geht um mein Gaszähler-Projekt).

Im void setup() wird der Zählerstand aus der DB gelesen und soll dann,
wenn er gefunden wird, benutzt werden. Ich hatte gedacht, das es, wenn es nicht klappt,
der Reset ausgelöst wird und es einfach nochmal versucht wird.


...
Sollte das nicht klappen, kann man sich ein Flag setzen (update_from_DB = 1) und trotzdem in der loop() die aktuellen Zählimpulse erfassen und aufsummieren. Bei jedem Versuch die Daten an die DB zu schicken wird dann das Flag geprüft, wenn == 1, dann immer erst versuchen die Daten aus der DB zu bekommen und dann den Wert dazu addieren. Falls das Lesen aus der DB wieder nicht klappt, wirst Du auch kaum was in die DB schreiben können, also einfach später wieder probieren.


Ok, hört sich gut an, versuche das mal umzusetzten. Danke Dir !

@uwefed: Aber damit ich das auch verstehe, warum ist das nicht gut mit einem Softreset zu arbeiten ?
Ist das was anderes als den Reset-Knopf drücken ?
*greatz*

 CeTax

www dot blinkmann dot de

uwefed

Quote
Aber damit ich das auch verstehe, warum ist das nicht gut mit einem Softreset zu arbeiten ?
Ist das was anderes als den Reset-Knopf drücken ?

Ein Softreset ist nichts anderes als ein Hardwarereset. In beiden Fällen wird der Resetvektor angesprungen und im Falle des Arduino der Bootloader abgearbeitet.

Es ist kein Hardware Problem sondern ein Software Problem bzw ein falsches Konzept.
Du löst keine SW Fehlersituation mit einem Reset. Einen Fehler mußt Du mit dem Programm abfangen.
Die einzigen beiden Situationen wo ein Reset sinnvoll ist, ist wenn der Mikrokontroller sich blockiert und den Sketch nicht mehr abarbeitet (zB mittels Watchdog) und bei Unterspannung (automatischer burnout-reset).

Grüße Uwe

mkl0815


Ein Softreset ist nichts anderes als ein Hardwarereset. In beiden Fällen wird der Resetvektor angesprungen und im Falle des Arduino der Bootloader abgearbeitet.

Es ist kein Hardware Problem sondern ein Software Problem bzw ein falsches Konzept.
Du löst keine SW Fehlersituation mit einem Reset. Einen Fehler mußt Du mit dem Programm abfangen.

Naja es gibt Leute die machen das mit Ihrem PC auch so  :)


... und bei Unterspannung (automatischer burnout-reset).

Ähm .. BROWNOUT, oder???
Bei manchem Sketch glaube ich aber auch, das der arme Arduino unter "burnout" Syndromen leider *lol*
Sorry Uwe, aber you made my evening  XD XD XD
Das ist ja mal ein cooler, freudscher Vertipper :-)

Mario.

Go Up