Pages: [1]   Go Down
Author Topic: Software reset  (Read 756 times)
0 Members and 1 Guest are viewing this topic.
Germany
Offline Offline
Sr. Member
****
Karma: 1
Posts: 309
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ?
Logged

*greatz*

 CeTax

www dot blinkmann dot de


Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21860
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Edison Member
*
Karma: 21
Posts: 1419
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Germany
Offline Offline
Sr. Member
****
Karma: 1
Posts: 309
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ?
Logged

*greatz*

 CeTax

www dot blinkmann dot de


Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21860
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
 
Logged

Offline Offline
Edison Member
*
Karma: 21
Posts: 1419
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley

... 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  smiley-lol smiley-lol smiley-lol
Das ist ja mal ein cooler, freudscher Vertipper :-)

Mario.
Logged

Pages: [1]   Go Up
Jump to: