Forum: Mikrocontroller und Digitale Elektronik System Reset STM32


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Ste (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo liebes Forum,

ich programmieren einen STM32F303.
Bei einer bestimmten Aktion soll ein Reset ausgeführt werden. Dafür 
verwende ich die folgende Funktion aus der Library:
NVIC_SystemReset();
Das hat schon mal wunderbar funktioniert, allerdings klappt es auf 
einmal nicht mehr. Ich weiß leider nicht, was ich "anders" gemacht 
habe...
Zum weiteren Testen habe ich die folgende Zeile einfach mal direkt 
eingegeben: SCB->AIRCR  = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | 
SCB_AIRCR_SYSRESETREQ_Msk);
Beim Debuggen habe ich festgestellt, dass nach dieser Zeile das Programm 
normal weiter ausgeführt hat (also ohne Reset)...

Übrigens: Der Watchdog funktioniert auch nicht! Habe diesen zum Test 
ausprobiert, aber es erfolgt ebenso kein Reset!

Könnt ihr mir Hinweise/Tipps geben, was ich noch berücksichtigen muss??

Danke im Voraus!

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
Ste schrieb:
> Beim Debuggen habe ich festgestellt, dass nach dieser Zeile das Programm
> normal weiter ausgeführt hat (also ohne Reset)...

Mal den Disassembler bemüht? Eventuell ist ja was bei Kompilieren oder 
Flashen schief gegangen und ein älterer Software Stand auf dem µC.

von Ohman (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich mach dass immer so über den Watchdog:
1
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
2
IWDG_SetPrescaler(IWDG_Prescaler_128);
3
IWDG_SetReload(0x140);
4
IWDG_ReloadCounter();
5
IWDG_Enable();

von Ste (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ohman schrieb:
> Ich mach dass immer so über den Watchdog:
> IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
> IWDG_SetPrescaler(IWDG_Prescaler_128);
> IWDG_SetReload(0x140);
> IWDG_ReloadCounter();
> IWDG_Enable();

Nachdem die Funktion NVIC_SystemReset(); nicht mehr funktioniert hat, 
habe ich es mit dem Watchdog probiert (exakt der gleiche Code, wie von 
dir eben geschrieben).
Aber es will einfach kein Reset erfolgen.

Es hat doch schon mal funktioniert, aber ich habe mittlerweile so viel 
Code hinzugefügt, dass ich leider nicht mehr nachvollziehen kann, was 
den uC "stört"....

von Soft Lehrer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ste schrieb:
> Bei einer bestimmten Aktion soll ein Reset ausgeführt werden.

Eine Software die mit ihren "Notfällen" nicht umgehen kann
die taugt nichts!

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]
  • [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.