mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Software-Reset


Autor: Tarkan D. (gruetzwurschd)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich hab die Suche schon ausprobiert und nichts Sinnvolles zu meiner 
Frage zu Tage befördert.

Es geht darum, dass ich mir einen Software-Reset auslösen will.

Hintergrund ist: Ich habe am µC ein Gerät hängen. Sobald sich das Gerät 
Resettet, wird eine Spannung von High nah low gezogen.
Diese Spannung möchte ich überprüfen und bei Bedarf meinen µC resetten.

Meine Idee war, dass ich mir einfach die Spannung auf den INT0 Pin lege 
und sobald das Gerät neu gestartet wird, löst es bei mir einen Interrupt 
aus. Das funktioniert auch soweit.

Anschließend wollte ich im MCUCSR - Register das EXTRF flag setzen. Das 
funktioniert nicht. Auch nicht wenn ich das Flag lösche.

Nun ist meine Frage: gibt es eine möglichkeit einen richtigen 
Software-Reset auszulösen, ohne den Watchdog dafür zu verwenden.

Wie zuverlässig funktioniert folgende Methode: Den INT0 zwar zu 
initialisieren, aber Garkeine ISR dazu zu schreiben. Weil das löst auch 
einen Reset aus. Nur stellt sich die Frage: Funktioniert das immer? Kann 
mir dabei der µC kaputt gehen? Gibt es dadurch andere Probleme?


Grüße Tarkan

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tarkan D. schrieb:
> ohne den Watchdog dafür zu verwenden.

Warum das?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tarkan D. schrieb:
> Hallo Leute,
>
> ich hab die Suche schon ausprobiert und nichts Sinnvolles zu meiner
> Frage zu Tage befördert.
>
> Es geht darum, dass ich mir einen Software-Reset auslösen will.

Gut.
Du wirst schon wissen, warum deine Software auch einen Reset machen muss 
und warum es nicht reicht, einfach die Init Sequenz erneut zu 
durchlaufen.


> Hintergrund ist: Ich habe am µC ein Gerät hängen. Sobald sich das Gerät
> Resettet, wird eine Spannung von High nah low gezogen.

Passt doch perfekt.
Ab an den Reset Pin damit und dein µC wird ebenfalls resettet.

Autor: Tarkan D. (gruetzwurschd)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Passt doch perfekt.
> Ab an den Reset Pin damit und dein µC wird ebenfalls resettet.

Stimmt, nur die Software wird momentan auf einem STK500 Board 
entwickelt. Da kann ich nicht mal schnell die Hardware umstricken(ich 
weiß dass das die Perfekte lösung wäre) :)

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tarkan D. schrieb:
> Wie zuverlässig funktioniert folgende Methode: Den INT0 zwar zu
> initialisieren, aber Garkeine ISR dazu zu schreiben. Weil das löst auch
> einen Reset aus.

Falsch. Das löst keinen RESET aus sondern springt auf die RESET-Marke 
(oder halt auf die in dem Vektor angegebene Adresse). Die einzig 
sinnvolle und echte Auslösung eines RESET ist es, den Watchdog zu 
benutzen. Nur so werden alle I/O-Register korrekt von der Hardware 
initialisiert.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Solange das Programm weiß, was es tut, besteht überhaupt kein Grund, ein 
Reset zu machen. Man kann jeden beliebigen Zustand erreichen ohne ein 
Reset.
Erst wenn ein Programm Amok läuft, weil der Programmierer einen Fehler 
gemacht hat, muß man ein Reset machen.

Deinen PC startest Du ja auch nicht ohne Not neu, z.B. wenn eine E-Mail 
eintrifft.
Solange die PC-Software ordnungsgemäß läuft, kannst Du alle gewünschten 
Anwendungen ausführen und wieder beenden ohne ein Reset.


Peter

Autor: teta (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger schrieb:
> Solange das Programm weiß, was es tut, besteht überhaupt kein Grund, ein
> Reset zu machen. Man kann jeden beliebigen Zustand erreichen ohne ein
> Reset.
> Erst wenn ein Programm Amok läuft, weil der Programmierer einen Fehler
> gemacht hat, muß man ein Reset machen.

Nur als Vervollständigung: Es gibt auch diverse Controller die 
Hardwarefehler aufweisen. Eher die Ausnahme aber ist alles schon 
vorgekommen. Hier könnten Resets tatsächlich interessant werden. 
Allerdings gehören die AVRs eher nicht zu dieser Sorte da sie sehr 
ausgereift sind.

Autor: Andy H. (vinculum) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger schrieb:
> Solange das Programm weiß, was es tut, besteht überhaupt kein Grund, ein
> Reset zu machen. Man kann jeden beliebigen Zustand erreichen ohne ein
> Reset

Ich brauche einen Reset z.B. nach Programmierung mittels eines 
Bootloaders! Springe ich nach 0000 kommt da nur murks bei raus,

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Bootloader schon alles zerkonfiguriert ? Wenn ein Watchdog nicht 
drinliegt, wuerd ich die relevanten Register vor Ende des Bootloaders 
neu beschreiben.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich brauche einen Reset z.B. nach Programmierung mittels eines
>Bootloaders! Springe ich nach 0000 kommt da nur murks bei raus,

Ein Sprung nach 0000 ist aber nun mal kein echter Reset.
Hast du die Interruptvektoren für den Bootloader umgebogen?
Dann musst du die zu Fuß auch wieder geradebiegen. Sauber
ist es per Watchdog oder du nimmst einen Pin der aus dem
Bootloader raus den Resetpin runterzieht.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andy H. schrieb:
> Ich brauche einen Reset z.B. nach Programmierung mittels eines
> Bootloaders! Springe ich nach 0000 kommt da nur murks bei raus,

Interessant.
Ich komme mit einem Reset nie aus dem Bootloader raus.
Das Reset ist ja dauerhaft zum Bootresetvektor umgeleitet.
Ich muß nach 0x0000 springen, um die Applikation zu starten.

Ich benutze daher das Reset, um in den Bootloader zu gelangen.
Ein Softwareupdate ist aber auch keine normale Betriebsart der 
Applikation, das erfordert auch beim PC oftmals ein Reset.


Peter

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger schrieb:
> Interessant.
> Ich komme mit einem Reset nie aus dem Bootloader raus.
> Das Reset ist ja dauerhaft zum Bootresetvektor umgeleitet.
> Ich muß nach 0x0000 springen, um die Applikation zu starten.

Ich brauche da auch kein Reset für. Die eigentliche Applikation sollte 
nicht davon ausgehen, aus einem Controller zu starten, der alles 
initialisiert hat. Die Applikation sollte daher alle benutzte Peripherie 
und den RAM vor der Main erstmal sauber einrichten.

Peter Dannegger schrieb:
> Ich benutze daher das Reset, um in den Bootloader zu gelangen.

Ich auch.

Peter Dannegger schrieb:
> Ein Softwareupdate ist aber auch keine normale Betriebsart der
> Applikation, das erfordert auch beim PC oftmals ein Reset.

Najaaa, wenn alles sauber programmiert ist, braucht man den Reset 
wirklich nur, um den Bootloader aufzurufen. Dies kann man dann auch aus 
der Applikation heraus per Watchdog machen, wenn ein Programmupdate zur 
Laufzeit gewünscht wird.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.