mikrocontroller.net

Forum: Compiler & IDEs SW Reset ???


Autor: BuZ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte an einer bestimmten Stelle im Code einen Reset ausführen.
Muss ich dazu einen WatchDog aufziehen oder kann ich einen Reset per
SW-Befehl durchführen? Ich verwende einen ATMega 128 mit GCC als
Entwicklungsumgebung.

Gruß BuZ

Autor: Kai Klenovsek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine richtigen Reset wo auch alle I/O Ports initialisiert werden kannst
Du nur per Watchdog herbei führen.

Ansonsten einfach im Programm selber per Funktionspointer an 0x000000
springen.

Gruss,
Kai

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einen I/O auf den Reset zu legen sollte doch auch klappen. Wenn das
Programm ihn auf Masse zieht wird ein Reset ausgelöst, nach dem
Anlaufen sind die Pins wieder hochohmig.

Bin mir aber nicht sicher, habe es noch nicht probiert ...

Autor: BuZ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, doch leider ist die HW schon fertig und fädeln will ich ich auch
nicht. Ich glaube ich komme am WatchDog nicht vorbei.

Danke für die schnelle Hilfe,

Gruß BuZ

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Eine richtigen Reset wo auch alle I/O Ports initialisiert werden
> kannst Du nur per Watchdog herbei führen.

Naja, man kann auch ein Pin auf den Reset-Eingang routen. ;-)

Autor: Bolle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aus welchem Grund sollte es denn nötig sein, während der Ausführung
eines Programms einen Reset durchzuführen?  Was ist das für eine
"bestimmte Stelle im Code", die Du erwähntest?

Autor: Kai Klenovsek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Eine richtigen Reset wo auch alle I/O Ports initialisiert werden
>> kannst Du nur per Watchdog herbei führen.

> Naja, man kann auch ein Pin auf den Reset-Eingang routen. ;-)

Für so banale Sachen verschwende ich keinen heiligen I/O Port :-).

Autor: Kai Klenovsek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Aus welchem Grund sollte es denn nötig sein, während der Ausführung
>eines Programms einen Reset durchzuführen?  Was ist das für eine
>"bestimmte Stelle im Code", die Du erwähntest?

z.B aus einem Bootloader heraus.

Autor: Bolle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> z.B aus einem Bootloader heraus.

OK, daran habe ich nicht gedacht (hatte bisher mit Bootloadern noch
nichts zu tun, werde mich bei Gelegenheit aber mal darüber
informieren).

Danke für Deine Antwort.

Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beim MSP430 rufe ich für einen schnellen Reset die NMI-ISR direkt auf,
über ein Makro:

#   define mc_RESET (*(void(**)(void))(0xfffe))()

Den Hardware-Reset macht man über eine passende Aktion wie diese (sieh
Handbuch):

#define mc_HARDWARE_RESET { WDTCTL = 0xDEAD }

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.