immer einen HAL_ERROR zurück und zwar den FLASH_FLAG_PGPERR und den
FLASH_FLAG_PGSERR. Ich habe mal den uC mit dem STUtility komplett
gelöscht, jedoch hat das leider auch nichts mehr gebracht. Jemand eine
Idee, wie ich da wieder an den Flash ran komme?
Du hast aktuell ein Programm laufen, welches in den Flash schreibt?
Läuft dieses im RAM oder im Flash?
Um einen Fehler in deinem Programm auszuschließen, läßt sich ein
Programm per STUtility flashen?
Steffen R. schrieb:> Du hast aktuell ein Programm laufen, welches in den Flash schreibt?> Läuft dieses im RAM oder im Flash?>> Um einen Fehler in deinem Programm auszuschließen, läßt sich ein> Programm per STUtility flashen?
Ich konnte es nun beheben, habe einfach mal eine ältere Version des
Programmes hochgeladen. Das Programm schreibt eigentlich nur bei
Änderungen in den Flash und läuft im RAM. Auch per STUtility konnte ich
es flashen. Ich versuche nun aber noch rauszufinden, warum das vorhin
passiert ist.
Ich denke ich habe den Fehler gefunden, oder zumindest mit was er
korreliert. Ich hatte in der Main Loop die ganze Zeit
HAL_WWDG_Refresh(&hwwdg); getriggert, obwohl der Watchdog nicht aktiv
(nicht initialisiert) war. Dies hat irgendwie schwere Probleme mit dem
Flash verursacht. Warum das so ist kann ich nicht sagen, jemand eine
Idee?
Bert S. schrieb:> TrollJäger schrieb:>> Lern gescheit programmieren....>> Genau, einfach keine Fehler programmieren und alles ist gut...
Nein, so war es nicht gemeint.
ABER wenn du in der main loop (!) ohne zeitlichen Bezug hirnlos pollst,
dazu noch eine Funktion die nicht mal benötigt wird: nun, DAS ist kein
Zeugnis für jemanden, der sein Handwerk versteht.
TrollJäger schrieb:> ABER wenn du in der main loop (!) ohne zeitlichen Bezug hirnlos pollst,> dazu noch eine Funktion die nicht mal benötigt wird: nun, DAS ist kein> Zeugnis für jemanden, der sein Handwerk versteht.
Woher weißt du denn wie seine mail loop aussieht? Ich sehe in dem ganzen
Thread nicht den Quelltext!
Stefanus F. schrieb:> Woher weißt du denn wie seine mail loop aussieht? Ich sehe in dem ganzen> Thread nicht den Quelltext!Bert S. schrieb:> Ich hatte in der Main Loop die ganze Zeit> HAL_WWDG_Refresh(&hwwdg); getriggert, obwohl der Watchdog nicht aktiv> (nicht initialisiert) war.
Auch so ein Profiprogger wie der TO, wa?
Sorry, aber deine Methode, auf Basis dieser einzigen Zeile Code diesen
prolligen Kommentar abzulassen finde ich ziemlich armselig. Das kannst
du besser.
Wie ist denn dein Plan, hier zu konstruktiver Mitarbeit zu kommen?
TrollJäger schrieb:> ABER wenn du in der main loop (!) ohne zeitlichen Bezug hirnlos pollst,> dazu noch eine Funktion die nicht mal benötigt wird: nun, DAS ist kein> Zeugnis für jemanden, der sein Handwerk versteht.
Nun ja, ein Watchdog hat eine Reset-Funktion, wenn ich diese nicht
polle, dann resetet er. Da ich Debuggen wollte, habe ich natürlich den
Watchdog deaktiviert, aber leider vergessen die Reset-Funktion
auszukommentieren.
Wenn du aber nur auf Grund dieses Fehlers auf meine Programmierkentnisse
schließen kannst, dann ist das schon eine herausragende Leistung.
lol, ihr versüßt mir echt den Tag :-)
Also der Reihenfolge nach:
Stefanus F. schrieb:> Sorry, aber deine Methode, auf Basis dieser einzigen Zeile Code diesen> prolligen Kommentar abzulassen finde ich ziemlich armselig. Das kannst> du besser.
Klar kann ich es besser :-) Genauso, wie ich auch ohne Quellcode Texte
durchlesen und interpretieren kann...
Stefanus F. schrieb:> Wie ist denn dein Plan, hier zu konstruktiver Mitarbeit zu kommen?
Zum Verstehen sowie Lösen der Probleme anregen durch schonungslose
Darstellung der gemachten Fehler sowie durch FMEA des Programmierstiels.
Und deiner?
Bert S. schrieb:> Nun ja, ein Watchdog hat eine Reset-Funktion, wenn ich diese nicht> polle, dann resetet er.
Das ist richtig, dafür ist er schließlich da. Aber man sollte sinnvoller
Weise zumindest eine zeitliche Abhängigkeit sowie einen
Plausibilitätstest einbauen.
Bert S. schrieb:> Da ich Debuggen wollte, habe ich natürlich den> Watchdog deaktiviert, aber leider vergessen die Reset-Funktion> auszukommentieren.
Gewöhne es dir direkt an, den Watchdog erst beim Release dazuzupacken.
Vorher sind andere Sachen wichtiger.
Bert S. schrieb:> Wenn du aber nur auf Grund dieses Fehlers auf meine Programmierkentnisse> schließen kannst, dann ist das schon eine herausragende Leistung.
Wenn du damit Methodik meinst, dann ja.
Gegenfrage, jetzt wo wir uns so gut kennengelernt haben:
durch welche Vorgehensweise hätte man
a.) den Fehler von Anfang an verhindern können?
b.) den Fehler in kürzester Zeit einkreisen können?
@Stefanus F.: kannst gerne mitmachen :-)
TrollJäger schrieb:> @Stefanus F.: kannst gerne mitmachen :-)
Ich finde, diesen Vorschlag gut:
> Gewöhne es dir direkt an, den Watchdog erst beim Release dazuzupacken.> Vorher sind andere Sachen wichtiger.
Es kommt mir komisch vor, dass HAL_WWDG_Refresh() bei deaktiviertem
Watchdog Probleme macht. Da würde ich mal intensiver nachforschen.
Kann es sein, das deine Variable hwwdg jetzt nicht initialisiert ist?
Falls nicht, kannst du mal den Quelltext dieser Funktion zeigen?