Atmel megaAT power on oder reset unterscheiden, wie?

OP #3976237
Lesenswert?
• ▲
▼
Peter Dannegger schrieb:
> 10.9.1 MCUSR – MCU Status Register

danke Peter,

• Bit 2 – BORF: Brown-out Reset Flag
This bit is set if a Brown-out Reset occurs.
The bit is reset by a Power-on Reset, or by writing a logic zero
to the flag.

• Bit 1 – EXTRF: External Reset Flag
This bit is set if an External Reset occurs. The bit is reset by a 
Power-on Reset, or by writing a logic zero to the flag.

• Bit 0 – PORF: Power-on Reset Flag
This bit is set if a Power-on Reset occurs. The bit is reset only by 
writing a logic zero to the flag.


kann man also (wenn Brown-out programmiert ist) bit 2 und bit 0 hier 
gleichwertig verwenden?

Bit 1 nur wenn der Reset Taster gedrückt wurde?

g457 schrieb:
> Rechtzeitig sichern und löschen nicht vergessen.

was meinst du damit?

ich möchte ja nur feststellen wenn der MC startet ob es power on war 
oder ein Reset
Gast #3976251
Lesenswert?
• ▲
▼
> was meinst du damit?
>
> ich möchte ja nur feststellen wenn der MC startet ob es power on war
> oder ein Reset

Die Bits können sich aufkumulieren. Wenn Du erst einen POR machst, dann 
einen externen Reset, vielleicht spuckt Dir dann einer in den Brown-Out 
und womöglich beisst auch noch der Watchdog zu, dann sind alle jene Bits 
gesetzt. Also zwischendrin zurücksetzen.
OP #4368510
Lesenswert?
• ▲
▼
Peter D. schrieb:
> siehe Datenblatt:
> 10.9.1 MCUSR – MCU Status Register

so nun bin ich endlich zum probieren gekommen,

im Arduino nano 328p klappt es prima
1
  Serial.begin(19200);
2
  delay(200);
3
  Serial.println();
4
  Serial.println();
5
  Serial.println();
6
  if(MCUSR&(1<<PORF))
7
  { MCUSR&=~(1<<PORF);
8
    Serial.println(F("Erststart pow"));
9
  }
10
  if(MCUSR&(1<< EXTRF))
11
  { MCUSR&=~(1<< EXTRF);
12
    Serial.println(F("RESET        "));
13
  }

dito im Arduino mighty atmega1284p leider nicht!
Die Register und Bits haben lt. Datenblatt dieselben Namen, der Code 
wird nicht ausgeführt, es wird

weder
1
    Serial.println(F("Erststart pow"));

noch
1
    Serial.println(F("RESET        "));

"geprintet"

alles andere davor und danach aber wird "geprintet"

also vor und nach den "if"

hat jemand eine Idee?
Es gibt auch keine Fehlermeldungen von der IDE, wird anstandslos 
übersetzt und "gebrannt".

EDIT ich printe das natürlich ohne angeschlossenen USB auch auf das LCD 
weil in der Arduino IDE immer RESET nach power ON kommt, kann es also 
nur am Steckernetzeil erkennen
OP #4368593
Lesenswert?
• ▲
▼
so den Code auf nano328p und 1284p portiert

am PC in der Arduino IDE
auf nano328p Ausgabe der MCUSR dez 6
auf mighty1284p Ausgabe der MCUSR dez 0

am Steckernetzteil powerON
auf nano328p Ausgabe der MCUSR dez 5
auf mighty1284p Ausgabe der MCUSR dez 0

am Steckernetzteil resetTASTER
auf nano328p Ausgabe der MCUSR dez 7
auf mighty1284p Ausgabe der MCUSR dez 0

sieht für den nano plausibel aus, für den mighty immer noch nicht!
Gast #4368630
Lesenswert?
• ▲
▼
> sieht für den nano plausibel aus, für den mighty immer noch nicht!

Dann schau Dir die Register doch mal etwas früher an, z.B. in der .init1 
oder .init3. Siehe hierzu auch meine Beiträge vom 21.01.2015 und die 
zugehörige Doku.

HTH

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren