Forum: Mikrocontroller und Digitale Elektronik Atmega32 Grund für Reset herausfinden


von Timo P (Gast)


Lesenswert?

Hallo! Gibt es eine Möglichkeit, per SW herauszufinden, warum ein RST 
stattgefunden hat?

für die HW fallen mir nur folgende Möglichkeiten ein:

1) Versorgung nicht konstant/sauber
2) RST-Spannung am Pin nicht konst/sauber

für die SW fallen mir nur folgende Möglichkeiten ein:

1) fehlende ISR wird vers. anzuspringen

Gibt es weitere Resetquellen? Oder gute Möglichkeiten, diese ausfindig 
zu machen?

von Arne (Gast)


Lesenswert?

Watchdog?

von Mani (Gast)


Lesenswert?

Speicherüberlauf

von spess53 (Gast)


Lesenswert?

Hi

>Hallo! Gibt es eine Möglichkeit, per SW herauszufinden, warum ein RST
>stattgefunden hat?

Nach Reset MCUCR auslesen.

MfG Spess

von Timo P (Gast)


Lesenswert?

Dieses Register hat 4 bits (0....3), die im Datenblatt nicht beschrieben 
sind. Komisch.

ABer es gib anscheinend noch ein Register, was so ähnlich heißt: MCUCSR.

Wann kommt denn ein HW-RESET zustande? Vllt wenn der µC ein einem 
Pin/Port kurzzeitig zu viel Strom treibt?

von Thomas E. (thomase)


Lesenswert?

Timo P schrieb:
> fehlende ISR wird vers. anzuspringen

ISR(BADISR_vect)
{

}

Damit kannst du einen verselbständigten Interrupt abfangen. Sonst wird 
ein Sprung auf den Reset-Vektor ausgeführt.

mfg.

von spess53 (Gast)


Lesenswert?

Hi

>ABer es gib anscheinend noch ein Register, was so ähnlich heißt: MCUCSR.

Entschuldige, das meinte ich.

>Wann kommt denn ein HW-RESET zustande? Vllt wenn der µC ein einem
>Pin/Port kurzzeitig zu viel Strom treibt?

Da AVRs keinen Software-Reset kennen ist alles, was den AVR in den Reset 
treibt, ein Hardware-Reset.

MfG Spess

von Fabian (Gast)


Lesenswert?

In 90% der Fällen ist es jedoch ein Speicherüberlauf...

von spess53 (Gast)


Lesenswert?

Hi

>In 90% der Fällen ist es jedoch ein Speicherüberlauf...

Das ist aber kein Reset.

MfG Spess

von Tobi (Gast)


Lesenswert?

spess53 schrieb:
> Das ist aber kein Reset.

Stimmt, aber sieht aus Sicht der Software so aus. Genau wie das manchmal 
anzutreffende Makro für einen Softwarereset, wo einfach per 
Inline-Assembler zur Adresse 0 gesprungen wird.

Das Firmware startet neu, die Hardware aber nicht.

von Timo P (Gast)


Lesenswert?

Ein SW-REset bei AVR:

goto *((void**) 0);




ABer zum HW-Reset: Wodurch kann er ausgelöst werden, abgesehen vom 
wegnehmen der Vsg. oder Signalwechsel am RST-Pin?

von spess53 (Gast)


Lesenswert?

Hi

>Ein SW-REset bei AVR:

>goto *((void**) 0);

Nein. Bei einem Reset setzt der Controller die IO-Register auf 
Default-Werte. Und das passiert hier nicht.

Vielleicht erläuterst du mal dein Problem, bevor das Rumgestochere hier 
noch weiter geht.

MfG Spess

von Timo P (Gast)


Lesenswert?

Mein Problem ist, dass ich einen Reset bekomme, ich aber nicht weiß, 
warum. Am"Anfang" des Programms gebe ich mir den RST über die UART aus. 
Warum ein Reset kommt, ist mir nicht klar. Mit dem µC schalte ich ein 
Relais über einen Transistor. Klappt eig. Wunderbar.

Ab und an bekomme ich halt den RST. Ich hab das Gefühl, der Code hängt 
sich einfach auf. Ich nutze übrigens einen RFM12 Funktreiber hier aus 
dem Forum.

von Timo P (Gast)


Lesenswert?

Nachtrag: So, wie ich das überschaue, gibt es keinen Zeitlichen 
Zusammenhang zwischen der Relaisansteuerung und dem Reset. Dieser kommt 
eher durch die einfließenden Funkdaten. (vllt.....)

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Lesenswert?

Timo P schrieb:
> Mein Problem ist, dass ich einen Reset bekomme, ich aber nicht weiß,
> warum.
...

Woher weißt Du überhaupt das ein Reset erzeugt wurde ?

Nochmal zur Erinnerung :
Ein Reset wird entweder durch die POR-Steuerung (Power On Reset ), durch 
ein Low-Signal am Reset-Pin oder durch den Watchdog hervorgerufen.

Falls es zu einem Sprung zu Adresse $0 kommt, kann man nicht von einem 
Reset im eigentlichen Sinne reden.

Also, Versorgungsspannung und Pegel am Reset-Pin aufzeichenen oder durch 
ein Fangschaltung feststellen, falls irgendwelche Pegel kurzzeitig 
unterschritten wurden.

Das der Watchdog das Problem ist, ist eher unwahrscheinlich, weil dieser 
nur aktiv ist, wenn er fehlerfrei initialisiert wurde.

Bernd_Stein

von U.R. Schmitt (Gast)


Lesenswert?

Timo P schrieb:
> Ab und an bekomme ich halt den RST. Ich hab das Gefühl, der Code hängt
> sich einfach auf. Ich nutze übrigens einen RFM12 Funktreiber hier aus
> dem Forum.

Timo P schrieb:
> Nachtrag: So, wie ich das überschaue, gibt es keinen Zeitlichen
> Zusammenhang zwischen der Relaisansteuerung und dem Reset. Dieser kommt
> eher durch die einfließenden Funkdaten. (vllt.....)

Hängt sich die Software auf oder hast du einen echten Reset und alles 
beginnt von vorne?
Wenn es mit den Funkdaten korreliert ist es vieleicht einfach ein 
Softwarefehler mit einer Endlosschleife?

von Uwe (Gast)


Lesenswert?

Was steht denn nun im MCUCSR ? Oder willst du ewig weiterraten ??

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.