mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Watchdog Resetgrund herausfinden: MCUCSR und WDRF


Autor: [int] (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Huhu,
als ich wollte eigentlich am anfang meines programmes verzweigen je
nachdem ob ein Power-Up vorrausgegangen ist oder ein Watschdog-Reset.

also hab ich mir gedacht (ASM auf einem AtmelMega16):

  sbis     MCUCSR, WDRF
  rjmp    kein_reset

oder

  sbis     MCUCSR, 3
  rjmp    kein_reset


Avr-Studio meint dazu nur: Operand 1 out of range: 0x34

Bin ich jetzt knägge?

Autor: plitzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, aber das MCUCSR liegt ausserhalb des Bereiches, der mit
sbis/sbic-Befehlen erreichbar ist (IO-Adresse $34, sbis/sbic geht nur
bis 31dez).

Also bleibt nur das Einlsesen in ein Register und das Auswerten der
einzelnen Bits dort.

Jörg

Autor: AxelR. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, hallo zusammen
in register einlesen und dann
sbrs statt sbis
//FatsAVR//
...
If mcucsr.wdrf=1 Then
  mcucsr.wdrf=0
  Print "WDGR"
  End If
...

//ASSEMBLER (generiert von FastAVR)//
...
;-Line--1570----If mcucsr.wdrf=1 Then--
    in  r24,MCUCSR
    sbrs  r24,WDRF
    rjmp  L0371
L0372:
;-Line--1571----mcucsr.wdrf=0--
    in  zl,MCUCSR
    cbr  zl,0x08
    out  mcucsr,zl

;-Line--1572----Print "WDGR"--
    ldi  zl,Low(S13*2)
    ldi  zh,high(S13*2)
    call  _PSc
    call  _PCL
;-Line--1585----End If--
L0371:
...

Das "WDGR" für'n PRINT-Befehl liegt hinten als tabelle S13 im
Flash.

wie oben bereits gesagt, etwder sbrs statt sbis und/oder über weiteres
Register einlesen.

gruß
AR.

Autor: [int] (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
JO! TNX
so hab ichs dann gemacht:

  in    temp,    MCUCSR
  sbrs     temp,     3
  rjmp    kein_reset

GreetX, [int]

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe ich es richtig aus dem Datenblatt gelesen, dass das
POWER-ON-RESET-FLAG
nur manuell gesetzt und zurückgesetzt werden kann?

Man könnte es nuzen, um abzufragen, ob das Register MCUCSR per Software
schon gelöscht wurde?

Autor: mmerten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein, die RESET_FLAGS im MCUCSR werden bei einem Reset von der
auslösenden Quelle entsprechenden aktualisiert. Das MCUSR kann nach dem
Programmstart ausgelesen und die Reset-Quelle ausgewertet werden. Ein
setzten und löschen dieser Bits während des Programmablaufs ist auch
jederzeit möglich.

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@mmerten

>die RESET_FLAGS im MCUCSR werden bei einem Reset von der
>auslösenden Quelle entsprechenden aktualisiert

Das stimmt, doch wie sieht es konkret mit dem "POWER-ON-RESET-FLAG"
(Bit0) im MCUCSR aus?

Autor: mmerten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man die Einschränkungen im Datenblatt beachtet (einige ältere AT90S
Typen hatten da etwas Probleme) und auch beim Mega128 gibt es einige
Besonderheiten, funktioniert die korrekte Erkennung der RESET-Quelle
recht sicher. Ebenso muß man auf die passende Dimensionierung der
externen Reset-Beschaltung und Fuse-Bits (Start-Delay) achten. Sonst
wird nach einem POR evtl. noch ein normaler RESET oder Brown-Out-Reset
detektiert. Ebenso sollte man den Hinweis für das Lesen und Löschen des
MCUCSR im Datenblatt beachten.

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

mich würde mal interessieren welche Besonderheiten des Mega128 der 
vorhergehende Beitrag wohl meint und von welchem Hinweis fürs Lesen
und Löschen des MCUCSR dessen Autor spricht ???

Beim JTAG-Debuggen meines Mega128 Systems (Olimex/Studio4.11SP2) ist mir 
nämlich aufgefallen daß nach einem Break regelmässig nicht die letzte 
Resetquelle sondern merkwürdigerweise stets die davor angezeigt wird-
und daß obwohl die Resetbits zwischenzeitlich zurückgesetzt wurden!
Im normalen Betrieb dagegen funktioniert alles erwartungsgemäss...

Rainer

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.