Moin, ich teste gerade den Watchdog (IWDG) auf einem STM32F373... Erste erschreckende Erkenntnis für alle die es interessiert: Ist der Kondensator am Reset Pin zu groß, in diesem Fall 1 uF, dann kann der IWDG mit seinem 20 us Reset-Puls den Mikrocontroller nicht resetten... Wer baut denn sowas?! Zu meinem Anliegen: Das Projekt ist CubeMX erstellt und CSS (Clock Security System) ist aus. Wenn ich den Quarz kurzschließe erwarte ich meinen Watchdog-Reset. Leider taktet der µC von 72 MHz auf 8 MHz runter und läuft weiter... sehr wahrscheinlich auf HSI. Die Bits für HSE fault sind dann im Debugger (funktioniert auch noch) nicht gesetzt. Fazit: CSS ist immer an????? Schalte ich CSS an und setze keinen Vector, springt er beim Quarz kurzschließen in den default Vector -> Endlosschleife -> Watchdog kommt und resetet, wenn keine 1 uF am Reset-Pin hängen. Das Errata habe ich bereits gecheckt, nichts dahingehend gesehen. Hat jemand weitere Ideen? Kann doch nicht sein, dass der µC einfach auf HSI weiter läuft, obwohl ausdrücklich nicht erwünscht... in einer Serienproduktion würde ein defekter Quarz wahrscheinlich erst beim Kunden auftauchen, wenn man einen exakten Clock benötigt (z.B. UART, USB). VG Basti
Basti schrieb: > Leider taktet der µC von 72 MHz auf 8 MHz runter > und läuft weiter... sehr wahrscheinlich auf HSI. Steht so im Datenblatt. Nur auf diese Weise kann man im Code auf Oszillator Faults noch reagieren und z.B. kritische Hardware halbwegs sicher abschalten. Andere µCs bleiben einfach stehen. Das wäre z.B. bei meiner Weichenansteuerung hier blöd: Die Weichenantriebe fangen nach ein paar Sekunden Dauerstrom an zu rauchen und schmelzen. Basti schrieb: > Kann doch nicht sein, dass der µC einfach auf HSI weiter läuft, obwohl > ausdrücklich nicht erwünscht... Kann doch nicht sein dass man das Datenblatt nicht gelesen hat. Oder etwa doch... ;-) Basti schrieb: > Ist der Kondensator am Reset Pin zu groß, in diesem Fall 1 uF Sowas sollte man auch im DB / den Appnotes nachschlagen, das wäre z.B. an einem Atmel für DebugWire auch tödlich. Einige µC wollen am Reset eine gewisse Flankensteilheit sehen.
Basti schrieb: > Erste erschreckende Erkenntnis für alle die es interessiert: > Ist der Kondensator am Reset Pin zu groß, in diesem Fall 1 uF, dann kann > der IWDG mit seinem 20 us Reset-Puls den Mikrocontroller nicht > resetten... > Wer baut denn sowas?! Im Datenblatt findet sich ein Vorschlag(?) 0.1uF. Außerdem die (zugegebenermaßen etwas verschämte) Fußnote: "2. The user must ensure that the level on the NRST pin can go below the V IL(NRST) max level specified in Table 55. Otherwise the reset will not be taken into account by the device." Aus den "I/O-Characteristics" kann man auf einen Ausgangswiderstand des NRST-Pins (bei Low) von max. 50 bis 65 Ohm schließen. Berechnet man die Zeitkonstante, sieht man, dass bei 0.1 uF die 20 us sicher ausreichen, während bei 1 uF ... In Verbindung mit RM, Absch. 7.1.2, "Figure 10. Simplified diagram of the reset circuit" ist das beschriebene Verhalten also völlig im Rahmen der Spezifikation. Hätte man sicher etwas deutlicher schreiben können ... Aber da das interne RESET-Signal direkt und ausschließlich von der Spannung am NRST-Pin abhängt, ist von vornherein klar, dass man an den nicht nach Belieben irgendwas ranhängen kann. Ein Push-Pull-Ausgang von einer externen Reset-Schaltung ginge auch nicht. Und so unüblich ist ein "wired-or" im Zshg. mit einem open-drain Ausgang ja nun auch wieder nicht.
Hallo Jim, für Fehlerfälle gibts ein Watchdog... und der wird evtl. ausgehebelt, wenn die CPU nur noch mit 8 MHz statt mit erwarteten 72 MHz läuft. In meinem Reference Manuale steht auf Seite 103 ein Hinweis, dass es doch sehr ratsam ist den CSS einzuschalten um HSE Probleme zu umgehen. Besonders viele Informationen über das CSS Verhalten oder verhalten ohne CSS finde ich aber tatsächlich nicht. Nenn mir doch mal bitte die Stelle im Datenblatt. Danke Basti
Hi A. B., danke für den Hinweis, die Schaltung habe ich tatsächlich gesucht. Konnte mir dann nur ableiten, dass es so sein muss. Die Hardwareschaltung ist nicht von mir, 1 uF habe ich auch noch nie an einen Reset gehangen. Was mir neu ist, ist das der Reset-Pin im Grund auch ein OD-Ausgang ist... Sehr nett, dann kann der interen µC-Watchdog auch andere Schaltungsteile resetten. Gefällt mir... VG Basti
Das Thema (CSS und HSI Wechsel) ist anscheinend gestorben weil einer behauptet hat, dass es so im Datenblatt steht... ohne Referenz ohne alles... Sehr schade... würde gern noch dahinter kommen...
Basti schrieb: > für Fehlerfälle gibts ein Watchdog... und der wird evtl. ausgehebelt, > wenn die CPU nur noch mit 8 MHz statt mit erwarteten 72 MHz läuft. Deshalb hat der IWDG doch extra einen eigenen RC-Oszillator. > In meinem Reference Manuale steht auf Seite 103 ein Hinweis, dass es > doch sehr ratsam ist den CSS einzuschalten um HSE Probleme zu umgehen. > Besonders viele Informationen über das CSS Verhalten oder verhalten ohne > CSS finde ich aber tatsächlich nicht. > > Nenn mir doch mal bitte die Stelle im Datenblatt. Die Beschreibung im RM ist tatsächlich etwas mißverständlich. Das Einschalten des CSS bewirkt offenbar nur ZUSÄTZLICH zum Umschalten auf HSI den Interrupt etc., während das Umschalten unabhängig davon immer bei Ausfall des HSE erfolgt, wenn HSE direkt oder indirekt als Taktquelle dient, s. Datenblatt: "3.8 Clocks and startup System clock selection is performed on startup, however the internal RC 8 MHz oscillator is selected as default CPU clock on reset. An external 4-32 MHz clock can be selected, in which case it is monitored for failure. If failure is detected, the system automatically switches back to the internal RC oscillator." Und im RM unter 7.2.7: "If the HSE oscillator is used directly or indirectly as the system clock (indirectly means: it is used as PLL input clock, and the PLL clock is used as system clock), a detected failure causes a switch of the system clock to the HSI oscillator and the disabling of the HSE oscillator." Bei dem Absatz ist nicht ganz klar, ob das generell gilt, oder nur wenn CSS eingeschaltet ist. Da es aber nach "Note: ..." steht, würde ich das schon so lesen, dass diese Funktion immer gegeben ist. Aber letzlich ist das doch egal. Wenn ich Wert auf Sicherheit lege (und dazu den IWDG nutze), muss ich mir doch ein Gesamtkonzept überlegen. Also auch den Oszillatorausfall einkalkulieren und eine entsprechende Reaktion einplanen. Nur ein Reset reicht da vielleicht nicht, also muss die CPU noch etwas sinnvolles machen können, und dazu braucht's halt einen Takt, 72 Mhz hin oder 8 Mhz her ...
@A. B. Die Info aus 7.2.7 steht ja schon unter der Überschrift CSS... nur weils ne Note ist... ich weiß nicht... erwartet hätte ich eine "Note" oder eher noch "Caution" im HSE Part des Reference Manuels. Da es doch sehr relevant für alle STM32 Benutzer ist... gerade wenns auch Richtung Serie geht. Wirklich deutlich steht es tatsächlich nur im Datenblatt im von dir zitierten 3.8. Dort habe ich es übersehen. Wenn ich ein 8 MHz Quarz einsetze und es durch einen Produktionsfehler auf den HSI zurückfällt, unbemerkt!, da CSS nicht aktiviert ist, vermurks ich mir mein Timing. Die Software loopt fröhlich weiter und triggert auch ein window watchdog wie gewohnt. Die (z.B.) nötige Präzession am Timerausgang ist jedoch dahin. Ich stelle mal die Behauptung auf, dass über zwei drittel der µC-Programme nicht mehr wie gefordert funktionieren, wenn der Clock mal eben halbiert oder verdoppelt wird. Bei vielen poppt der Fehler vielleicht viel zu spät auf. Da hilft auch ein Watchdog nur noch bedingt. Fazit ist für mich: CSS immer an, kann gern in den default Vector in der Endless loop fallen und wird dann vom Watchdog abgefangen oder in der Serienproduktion gleich erkannt. Wenn ich keinen HSE brauchen würde, würde ich ja keinen drauf bauen. Ich versteh den Gedanken, das immer aktiv zu haben, von STM leider nicht. Beim XMega (als Gegenbeispiel) ist die Funktion KOMPLETT optional. Die Hardware sollte so ausgelegt sein, dass im Reset des µC der sichere Zustand eingenommen wird. Da kann ich nicht vom Mikrocontroller noch irgendwelche "Rettungsroutinen" erwarten (siehe Kommentar Jim M.). Ist natürlich auch Einsatzabhängig... aber in den meisten Fällen... Danke A.B. für die Referenzen. Ich ärger mich gerade, dass wir schon ewig mit STM32 arbeiten und keiner diese Funktion kannte... Viele Grüße Basti
Ich wollte nur kurz anmerken, dass das Einschalten von CSS lt. ST Reference Manuals DOCH optional ist und nicht defaultmäßig an ist, wie hier im Thread behauptet wird. Zumindest verstehe ich das so. Wichtig ist, dass wohl bei eingeschaltetem CSS und Ausfall des HSE auf HSI geschaltet wird und zwar direkt, also ohne PLL, so dass man dann plötzlich einen anderen Takt hat. Grüße Anguel
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.