Pages: [1] 2 3   Go Down
Author Topic: Arduino aus Programm reseten?  (Read 4162 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 5
Posts: 193
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,
ich habe noch eine Frage:
Kann man den Arduino aus einem Programm reseten?
Sollte doche eigntlich gehen wenn man einen Pin mit
dem Reset-Pin verbindet und denn dann den Pin unter Strom setzt.
Würd dies gehen oder könnte davon der Controller schaden
nehmen?

Addi
Logged

  / \    _|  _| o
 /--\ (_| (_| |

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

Das geht nicht so einfach. Der Resetimpuls muß eine minimale Länge haben und wenn Du das über einen Ausgang machst ist das nicht sicher.
Mußt Du nur den Arduino resettieren oder auch andere Elektronik?

Ansonsten über Software, falls nur der ATmega resetiert werden soll:
Code:
void software_Reset()
{
  asm volatile ("  jmp 0");
}

Grüße Uwe
« Last Edit: October 24, 2012, 07:02:30 am by uwefed » Logged

Offline Offline
Full Member
***
Karma: 5
Posts: 193
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nur den Arduino. Dass hängt mit meiner
anderen Frage zusammen: Wird der Arduino zu heiß soll er sich reseten.
Und am Anfang muss ma einen Taster dücken damit der Rest des Programmes
im Arduino startet.
Logged

  / \    _|  _| o
 /--\ (_| (_| |

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

Verstehe zwar nicht zu was ein reset gut sein soll, wenn der Kontroller zu heiß ist.
Bitte erklär mir das besser.

Ein Reset wird auch automatisch nach dem Anlegen der Versorgungspannung durchgeführt. Es braucht keinen manuellen Reset.
Grüße Uwe
Logged

Offline Offline
Full Member
***
Karma: 5
Posts: 193
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das reseten soll de Controller in eine Art Ruhe-Pause versetzen.
Der Controller soll rund um die Uhr verschiedene Daten messen,
verabeiten und Protokollieren. Und wenn er wegen der vielen Berehnungen zu heiß wird
versetzte ich ihn in diesen Ruhezustand, bevor ich nur einen verbranten Arduino habe.
Am Anfang wird der Arduino erst starten, wenn ein Button gedrückt wird. Also etwa so:
Code:
int buttonPin = 2;   
int buttonState = 0;
int resetpin = 3;//Pin, welcher an Reset angeschloßen ist
bool start = false;

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(resetpin,OUTPUT);
  digitalWrite(resetpin,LOW); //Vorsichtshalbr Pin abschalten   
}

void loop() {
  buttonState = digitalRead(buttonPin);
    if (buttonState == HIGH) {     
    bool start = true;

    if(start) {
     // Hier wird der code ausgeführt
     if(avaragetemp() >= 50) {
       digitalWrite(resetpin,HIGH); // Reset wird ausgelöst wenn Temperatur über 50°C ist.
       }
}


Sollte theoretisch so funktioieren, oder?
Logged

  / \    _|  _| o
 /--\ (_| (_| |

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

Wenn der Arduino zu heiß wird, dann hast Du einen Fehler in der Bemessung der Zusatzelektronik gemacht.
Der Reset dauer unter 5 Sekunden. Da kühlt gar nichts aus.
Du brauchst das nicht.
Grüße Uwe
Logged

AREA COLOGNE
Offline Offline
Edison Member
*
Karma: 21
Posts: 1148
I am 1 of 10 who understands binary
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wenn die Umgebungstemperatur nicht zu hoch ist wird der Controller niemals warmzu heiß. Die Struktur der Atmega  ist so aufgebaut das diese Controller immer 100% ausglastet sind egal wie groß das Programm ist.Von der Größe des Programm ist nicht die Auslastung abhängig sondern die Zykluszeit. Womit dann der "Überlastungsschutz" also in meinen Augen keinen Sinn macht.
Gruß
Der Dani

Edith
« Last Edit: October 24, 2012, 07:35:45 am by volvodani » Logged

So ist das Leben:
Manchmal bis du das Denkmal, manchmal die Taube!

Germany
Offline Offline
Edison Member
*
Karma: 48
Posts: 2342
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich denke auch, dass sich der Mikrocontroller nicht durch simples Zahlenjonlieren signifikant aufheizt, sondern höchstens durch angeschlossene Komponenten, die in ihrer Summe zuviel schlucken.
Noch ein kurzer Gedankengang zur Programmierung: Wenn du am Start das einmalige Drücken eines Starttasters erwartest, warum legst du das nicht einfach mit in die setup-Routine?
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Full Member
***
Karma: 5
Posts: 193
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich denke auch, dass sich der Mikrocontroller nicht durch simples Zahlenjonlieren signifikant aufheizt, sondern höchstens durch angeschlossene Komponenten, die in ihrer Summe zuviel schlucken.
Noch ein kurzer Gedankengang zur Programmierung: Wenn du am Start das einmalige Drücken eines Starttasters erwartest, warum legst du das nicht einfach mit in die setup-Routine?
Da die Setup-Routine nur einmal läuft muss man während diesem Ablauf den Taster drücken. In
der Loop-Schleife kan ich jederzeit den Taster drücken und spare mir das Drücken im richtigen Moment des
Setups.
Logged

  / \    _|  _| o
 /--\ (_| (_| |

Germany
Offline Offline
Edison Member
*
Karma: 48
Posts: 2342
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich dachte an eine andere Herangehensweise:
Code:
void setup(){
  pinMode (taster, INPUT_PULLUP);
  while (digitalRead(taster)==HIGH) {
    // hier zum Beispiel die Anweisungen zum Blinken einer Status-LED oder ähnliches
  }
}
Das hält die loop schön übersichtlich, ist aber auch nur eine Möglichkeit. Deine geht selbstverständlich auch.
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

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

Da die Setup-Routine nur einmal läuft muss man während diesem Ablauf den Taster drücken. In
der Loop-Schleife kan ich jederzeit den Taster drücken und spare mir das Drücken im richtigen Moment des
Setups.
Verstehe ich nicht. Uwe
Logged

Offline Offline
Full Member
***
Karma: 5
Posts: 193
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich dachte an eine andere Herangehensweise:
Code:
void setup(){
  pinMode (taster, INPUT_PULLUP);
  while (digitalRead(taster)==HIGH) {
    // hier zum Beispiel die Anweisungen zum Blinken einer Status-LED oder ähnliches
  }
}
Das hält die loop schön übersichtlich, ist aber auch nur eine Möglichkeit. Deine geht selbstverständlich auch.

Allerdings soll das Progamm auf meinem Arduino auch ohne mich weiterlaufen. Durch drücken im
Loop soll das Programm nach einem Reste weiterlaufen, der Taster muss nur einmal gedrückt werden um
das Programm nach einem Reset weiterlaufen zu lassen.
Logged

  / \    _|  _| o
 /--\ (_| (_| |

Germany
Offline Offline
Edison Member
*
Karma: 48
Posts: 2342
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Durch drücken im Loop soll das Programm nach einem Reste weiterlaufen, der Taster muss nur einmal gedrückt werden um
das Programm nach einem Reset weiterlaufen zu lassen.
Wo siehst du den Unterschied zu meinem Codeschnipsel? Ich meine, es ist nur eine Variantion mit dem gleichen Ziel.
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

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

Addi, Dir ist schon bewußt, daß ein Reset den ganzen Arduino zurücksetzt und dieser alle gespeicherten Variablen verliert? Da geht nichts mehr mit dort weitermachen wo er vorher aufgehört hat.

Grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Also der 328 läuft bis 85° lt. Datasheet. Ich halte es nicht für möglich diese Temperatur im normalen Betrieb zu erreichen.

Wenn du allerdings auf Nummer sicher gehen möchtest, dann kannst du am besten (automatisch) die Spannungsversorgung vom Board trennen. Dies würde dann dafür sorgen, dass das Board aus geht und abkühlen kann. Wenn du ganz Vorsichtig sein möchtest, kannst du über eine galvanische Trennung zwischen Board und externer Schaltung nach denken. Wobei sich mir für beides kein Sinn ergibt.
Logged

Pages: [1] 2 3   Go Up
Jump to: