Forum: Mikrocontroller und Digitale Elektronik Atmega16 Software Reset


von Rene M. (Firma: RWTH Aachen) (rene_m)


Lesenswert?

Ich würde gerne nach 10 Sekunden gedrückt halten einer Taste einen Reset 
durchführen.
Nun wollte ich dies banal über Watchdog lösen: while(1);
Funktioniert aber leider nicht.

Wie kann ich ohne auf den reset Pin von außen zugreifen zumüssen oder 
über die Ausgänge auf den Reset Pin anzusteuern (zu Unsicher) dies 
lösen?

Gibt es einen einfachen Reset Befehl?

von Karl H. (kbuchegg)


Lesenswert?

Rene Müller schrieb:
> Ich würde gerne nach 10 Sekunden gedrückt halten einer Taste einen Reset
> durchführen.
> Nun wollte ich dies banal über Watchdog lösen: while(1);
> Funktioniert aber leider nicht.

Die Frage ist eigentlich: warum?
Denn: Wenn ein µC tatsächlich hängt, dann hängt er und dann kannst du 
ihn auch nicht per Programm in einen Reset treiben (ausser mit dem 
Watchdog, in dem das Programm den nicht mehr zurückpfeift). Aber im 
Regelfall hängt ein µC nicht. Und wenn doch, dann muss man diesem 
Problem auf den Grund gehen und den Fehler im Programm suchen bzw. die 
Hardware verbessern.

Wenn es nur darum geht, dass ein Programm sich neu initialisieren soll, 
dann programmiert man genau das: Dass der Initialisierungsteil des 
Programms erneut abgespult wird. Das ist dann aber ein ganz normaler 
Teil des Programms und hat mit einem Reset eigentlich nicht wirklich was 
zu tun.

> Gibt es einen einfachen Reset Befehl?

Nein.
Du kannst maximal einen Sprung an die Adresse 0 machen. Aber auch das 
entspricht nicht dem, was bei einem Reset alles abläuft. Denn der ganze 
Reset-Teil, den die Hardware autonom erledigt, wird dabei nicht 
durchgeführt.

> Wie kann ich ohne auf den reset Pin von außen zugreifen
> zumüssen oder über die Ausgänge auf den Reset Pin anzusteuern
> (zu Unsicher) dies lösen?

Indem du so sauber programmierst bzw. die Hardware so sauber aufbaust, 
dass sich die Fragestellung des 'wie resette ich absichtlich einen µc' 
gar nicht stellt, weil die Funktion überhaupt nicht gebraucht wird.

von Oliver S. (oliverso)


Lesenswert?

Rene Müller schrieb:
> Nun wollte ich dies banal über Watchdog lösen: while(1);
> Funktioniert aber leider nicht.

Je nun, der uralte Mega16 hat leider keinen Watchdog-Reset.

Da bleibt dann doch nur noch ein Zugriff auf den Reset-Pin, oder eine 
Unterbrechung von VCC. Oder du nimmst einen moderneren pinkompatiblen 
AtMega mit Watchdog-Reset.

Oliver

von Daniel V. (danvet)


Lesenswert?

Beim RL78 gibt es ein Invalid Opcode 0xFF. Wenn man den ausführt, macht 
der µC ein Reset. Keine Ahnung ob der Atmel sowas hat.

von Rene M. (Firma: RWTH Aachen) (rene_m)


Lesenswert?

Ist wohl zu alt -.-.
Danke :). Topic closed.

von Kai B. (kaib) Benutzerseite


Lesenswert?

Oliver S. schrieb:
> Je nun, der uralte Mega16 hat leider keinen Watchdog-Reset.

Ähm der Mega16 hat sehr wohl einen Watchdog-Reset Siehe Seite 42 Im 
Datenblatt.

Vorraussetzung dafür ist natürlich das der Auch an ist.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.