mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Resetabfrage beim Tiny26, MCUSR-Register


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich bin auf eine Ungereimtheit im Datenblatt des Tiny26 gestoßen. Dort
steht auf Seite 33:
"BORF: Brown-out Reset Flag
This bit is set if a Brown-out Reset occurs. The bit is reset by a
Power-on Reset..."

Wenn ich mir aber das Register MCUSR nach dem Einschalten anschaue,
dann sind die Bits 2 (BORF) und 1 (Power-on Reset) gesetzt????
Wie kann das sein? Das BORF soll doch bei einem Power-on Reset gelöscht
werden...

Hat sich Atmel da vertippt?

Gruß,
Michael

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch wenn das Thema schon sehr alt ist. Mich quält gerade das gleiche 
Problem mit einem Tiny24. In 50% der Einschaltversuche wird die BORF 
gesetzt? Die Versorgungsspannung habe ich gemessen, diese steigt 
innerhalb von 50µs auf 4V. Brown Out ist auf 2,7V gestellt.
Kennt jemand dieses Problem und weis es zu lösen?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas wrote:
> Kennt jemand dieses Problem und weis es zu lösen?

Was für ein Problem ergibt sich denn dadurch für Dich?
Wenn das Poweron-Bit gesetzt ist, ignoriere das Brownout-Bit einfach.

Die Poweron Schwelle ist kleiner als das Brownout, daher ist es früher 
beendet und das Brownout kann zuschlagen.


Es sollte allerdings egal sein, ob der Reset durch längeres Ausschalten 
oder nen kurzen Spannungseinbruch erfolgt, Du kannst den Daten im SRAM 
nicht mehr trauen.
Daher wüßte ich nicht, warum man überhaupt zwischen Poweron und Brownout 
unterscheiden können sollte.


Peter

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

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger wrote:

> Daher wüßte ich nicht, warum man überhaupt zwischen Poweron und Brownout
> unterscheiden können sollte.

Vielleicht willst du ja beim Poweron irgendeine Benutzer-Interaktion
durchführen zum Start der Applikation, während du nach einem Brownout
möglichst nahtlos weitermachst.

Die Daten der Benutzer-Interaktion kann man sich ja im EEPROM ablegen,
damit man sie nach dem Brownout nicht neu eingeben muss.

Ansonsten aber Zustimmung: wenn PORF gesetzt ist, dann war es halt
ein Power-on, und man kann alle anderen Reset-Bits getrost löschen und
ignorieren.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Initialisierung aller Register und des RAMs muss ich natürlich nach 
enem Brown Out erneut durchführen. Nur soll möglichst der Benutzer 
nichts von diesem Malheur merken.
Die Abfrage der PORF funktioniert porblemlos. Den Sinn und Zweck der 
BORF erkenne ich aber nicht. Mal ist sie gesetzt, mal wieder nicht. 
Absolut für nichts zu gebrauchen dieses Bit.

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

Bewertung
0 lesenswert
nicht lesenswert
Thomas wrote:

> Absolut für nichts zu gebrauchen dieses Bit.

Doch: bei einem reinen brown-out reset ist es natürlich gesetzt.
Nur beim power-on sind die Verhältnisse (vermutlich je nach
Spannungsanstiegsgeschwindigkeit, Anlaufverhalten des Taktgenerators,
eingestellter SUT-Fuse etc.) nicht klar.

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das PORF muß man selber löschen.

Wenn PORF und BORF gesetzt sind war das PORF wohl nicht zurückgesetzt.
Das BORF wurde dann zusätzlich gesetzt.
Also nach dem Start MCUSR auswerten und dann löschen!

gruß hans

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

Bewertung
0 lesenswert
nicht lesenswert
hans wrote:
> Das PORF muß man selber löschen.

Alle Reset-Flags muss man selbst löschen.

Bei den aktuellen AVRs ist es bei Benutzung des Watchdog-Resets
völlig unumgänglich, dass man sich auch um das WDRF-Flag kümmert,
ansonsten hat man 15 ms später einen neuen Watchdog-Reset...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas wrote:
> Die Initialisierung aller Register und des RAMs muss ich natürlich nach
> enem Brown Out erneut durchführen. Nur soll möglichst der Benutzer
> nichts von diesem Malheur merken.

Was fürn Maleur?
Wenn die Spannung weg ist, isse weg.

Und dann ist es eigentlich egal, ob sie nur wenige Sekunden weg ist (nur 
BORF gesetzt) oder länger (PORF gesetzt, BORF egal). Die CPU bleibt 
stehen und setzt alle Ausgänge tristate, das merkt der Benutzer in jedem 
Fall.

Das PORF kommt, wenn die Spannung bis unter 1V absinkt, ansonsten nur 
das BORF.

Das PORF ist vergleichbar mit der Super-Billig-Resetschaltung (RC-Glied) 
in älteren Geräten, wo dann immer in der BDA steht: "Ziehen Sie den 
Netzstecker für >30s, um das Gerät zu resetten".
Kurze Einbrüche erkennt es nicht, dafür reichen diese, um die CPU 
abstürzen zu lassen.

> Den Sinn und Zweck der
> BORF erkenne ich aber nicht. Mal ist sie gesetzt, mal wieder nicht.
> Absolut für nichts zu gebrauchen dieses Bit.

Na klar doch. Du weißt, das ein Spannungseinbruch den Reset ausgelöst 
hat und nicht ein wildgewordener Programmcounter an den Resetvektor 
gesprungen ist.


Nochmal ganz kurz:
BORF gesetzt: Spannungseinbruch
PORF gesetzt: tiefer Spannungseinbruch
Man muß daher nur wissen, daß eines gesetzt ist, welches, das ist 
wurscht.


Peter

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich würde eher sagen:
WDRF gesetzt: Watchdog reset
EXRF gesetzt: externes Reset
PORF gesetzt: Power On Reset
WDRF nicht gesetzt, EXRF nicht gesetzt, PORF nicht gesetzt: Brown Out 
Reset

Aber das BORF ist zum Feststellen des Resetgrundes ungeeignet.

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Thomas

Dein System läuft mit 5 V, dein AVR arbeitet aber noch bis 2,7 V.
Ein angeschlossenes Display ist jedoch empfindlich und hört bei
4 V auf bzw. macht Ärger.
BO wird auf 4 V (oder 4,2 o.ä.) gesetzt.

Nach einem Spannungseinbruch auf 3,5 V erkennst du im MCUSR
das es ein BO war aber kein PO. Daher weist du, daß dein System
zwar noch läuft, aber dein Display wahrscheinlich nichtmehr.

Jetzt reicht ein Displayreset mit Initalisierung.

gruß hans

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gutes Beispiel. Aber wenn ich die BORF abfrage wird sie ja auch im Falle 
eines Power-On gesetzt. Die BORF ist also kein sicheres Zeichen für ein 
Brown-Out Reset. Um ein Brown-Out festzustellen muss ich wie ober 
geschrieben vorgehen.

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach Atmel dürfte nur ein Bit gesetzt sein, wenn man nach
einem Reset/der Auswertung das MCUSR gelöscht hat.
To make use of the Reset Flags to identify a reset condition, the user should read and then reset
the MCUCSR as early as possible in the program. If the register is cleared before another reset
occurs, the source of the reset can be found by examining the Reset Flags.

Bei einem PO kann je nach Spannungsferlauf auch BO als zweiter
Auslöser auftreten obwohl der µC noch nicht gestartet hat.
Dadurch ist PORF noch gesetzt und BORF wird gesetzt.

Wenn also nach dem Start MCUSR gelöscht war und beide Flags
sind gesetzt -> PO hat recht

gruß hans

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hans wrote:
> Nach einem Spannungseinbruch auf 3,5 V erkennst du im MCUSR
> das es ein BO war aber kein PO. Daher weist du, daß dein System
> zwar noch läuft, aber dein Display wahrscheinlich nichtmehr.

Das ist Quatsch, Dein System läuft nicht nach einem Brownout-Reset, Du 
mußt alle Register neu initialisieren.
Das ginge nur mit nem Brownout-Interrupt, z.B. über den 
Analog-Komparator.


Poweronreset und Brownoutreset machen genau das gleiche, bloß die 
Schwelle ist unterschiedlich.
Beim Brownout ist die Schwelle so hoch, daß die CPU einwandfrei arbeiten 
kann, wenn sie aus dem Reset raus ist.

Beim Poweron ist die Schwelle zu niedrig und die CPU kann spinnen.
Das ist weniger ein Problem beim Einschalten (da schneller Anstieg), 
sondern beim Ausschalten. Dann sinkt die VCC durch den Ladeelko im 
Netzteil ganz langsam ab und die CPU kann Unfug machen. Deshalb wird oft 
die EEPROM-Zelle gelöscht, auf die das Adreßregister als letztes zeigt 
(wenn man den EEPROM ohne Brownout benutzt).



Wenn man zuverlässige Geräte haben will, muß das Brownout immmer 
eingeschaltet sein. Wenn die höhere Stromaufnahme stört, muß man einen 
externen Brownout-IC verwenden.
Im Prinzip ist das Poweron-Reset daher überflüssig.


Peter

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas wrote:

> Aber das BORF ist zum Feststellen des Resetgrundes ungeeignet.

Träum schön weiter.

Gib mal unter AVR-GCC nen Interrupt frei, der keinen Handler hat und Du 
wirst Deine sogenannten "Brownoutresets" am laufenden Band erhalten.

Das BORF ist sehr wichtig, wenn man ordentlich programmieren will, um 
eigene Softwarefehler von Spannungseinbrüchen zu unterscheiden.


Peter

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

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger wrote:

> Wenn die höhere Stromaufnahme stört, muß man einen
> externen Brownout-IC verwenden.

Ach, die arbeiten mit der Umgebungsluft?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg Wunsch wrote:
>> Wenn die höhere Stromaufnahme stört, muß man einen
>> externen Brownout-IC verwenden.
>
> Ach, die arbeiten mit der Umgebungsluft?

Ja.

TI hat welche mit 0,22µA, die interne Bandgap braucht dagegen 10µA.


Peter

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.