-         

Ergebnis 1 bis 7 von 7

Thema: Mega32 mit Software reseten

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.07.2004
    Ort
    bei Stuttgart
    Alter
    35
    Beiträge
    760

    Mega32 mit Software reseten

    Anzeige

    Hi,
    ich habe ein Problem, und zwar möchte ich meine Mega32 nachdem ein Interrupt aufgetreten ist resete. Allerdings kann ich nicht den Watchdog verwenden, da ich den zur Programmüberwachung verwende, oder ist es möglich die Zeit für den Reset durch den Watchdog im Programm zu ändern. Er ist nämlich auf 2s eingestellt, nachdem Interrupt sollen amer höchstens einige ms bis zum Reset vergehen.
    Hat jemand eine Idee, wie das funktzioniren könnte? Ich habe überlegt einen Pin, der als Ausgang funktioniert mit dem Resetpin zu verbinden und dann den Pin auf 0 zu ziehen, aber irgendwie funktioniert das nicht.
    MfG Jeffrey

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.07.2004
    Ort
    bei Stuttgart
    Alter
    35
    Beiträge
    760
    hat sich erledigt, es funktioniert mit dem anderen pin, das kabel war kaputt. allerdins funktioniert jetzt mein restknopf nicht mehr, da der pin ja sonst 5v ausgibt. gibt es einemöglichkeit den pin anstatt auf 5v einfach hochohmig zu machen, sodass mein restknopf trotzdem noch geht.
    mfg jeffrey

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,
    reicht es nicht, einfach wieder an Adresse $0 zu Springen ?
    Das wäre der Reset-Vector, hier gehts auch los, wenn man Reset zB. gedrückt hatte.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Nein, das dürfte nicht wirklich reichen ...

    Begründung:

    Sämtliche Controllereinstellungen werden bei einem Hardware Reset zurückgesetzt .. also auch z.B.:

    - Sämtliche Register der integrierten Schnittstellen
    - Sämtliche Register der integrierten Timer
    - Sämtliche Register der integrierten Ports
    - die Interupts werden Global deaktiviert

    etc ...

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Zitat Zitat von jeffrey
    gibt es einemöglichkeit den pin anstatt auf 5v einfach hochohmig zu machen, sodass mein restknopf trotzdem noch geht.
    mfg jeffrey
    ja, einfach als Eingang schalten und Pullup aus...

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    30
    Beiträge
    674
    Man kann doch auch die Zeit für einen Watchdogreset ändern. Im "Watchdog Timer Control Register - WDTCR" kann man diese Zeit einstellen.
    Wenn es sich schon um einen Softwarereset handelt, wäre das doch die eleganteste Lösung.

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801

    Re: Mega32 mit Software reseten

    Zitat Zitat von jeffrey
    Allerdings kann ich nicht den Watchdog verwenden, da ich den zur Programmüberwachung verwende, oder ist es möglich die Zeit für den Reset durch den Watchdog im Programm zu ändern.
    Die Zeit kann man wie gasagt ändern. Das Minimum liegt AFAIK bei 15ms.

    Zitat Zitat von linux_80
    Hallo,
    reicht es nicht, einfach wieder an Adresse $0 zu Springen ?
    Das wäre der Reset-Vector, hier gehts auch los, wenn man Reset zB. gedrückt hatte.
    Das ist keine gute Idee, weil dadurch die Hardware NICHT resettet wird! Es wird dann nur der Software-Teil der Applikation zurückgesetzt (Variablen, Stack, etc.) IdR befindet sich das System dann aber nicht in einem legalen Zustand -- eben weil die Hardware nicht resettet wurde.


    ------

    Übrigens kann man auch die Reset-Ursache rausfinden. Früh im Programm liest man MCUSCR, setzt es auf 0 und wertet es aus. Zudem kannst du die Informationen über einen Watchdog-Reset hinaus merken, indem du sie in einen Bereich legst, der vom StartUp-Code nicht initialisiert wird. Bei GCC ist das die Section ".noinit".
    Disclaimer: none. Sue me.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •