Guten Tag Für einen Run Time Test (Timeout durch IWDG & Takt Abweichung) will ich beim STM32F070 den HSI Clock beim debuggen (ST-LinkV2) anhalten und die Frequenz verändern (auf die Register einwirken, wie PLL) ohne manuell den Code zu verändern. Hat vielleicht jemand eine Idee wie ich das machen kann? Freundliche Grüsse Stefan
Wenn ich das richtig verstehe willst du einfach nur testen ob der Watchdog zubeißt, falls HSI mal ausfallen sollte und willst dazu HSI anhalten und HSE läuft bei dir so wie ich das verstehe sowieso nicht. Soweit ich weiß gibt es keine Möglichkeit dem Controller seine primäre Taktquelle einfach wegzunehmen. Eine Möglichkeit wäre meiner Meinung nach den Controller "geordnet" in den Stop-Mode zu versetzen. Damit der Debugger weiterhin mit dem Controller kommunizieren kann muss ein entsprechendes Bit im DBGMCU-Register gesetzt werden (siehe Kapitel 26).
Stefan schrieb: > Hat vielleicht jemand eine Idee wie ich das > machen kann? Code in den RAM via Debugger laden und mit ausgeschalteten Interrupts ausführen. Man kann auch Register direkt vom Debugger aus beschreiben - eventuell direkt über die Addresse, aber ohne Taktsignal funktioniert die Debug Einheit vom Cortex-M auch nicht mehr.
Erstmal vielen Dank für die Antworten. Jim M. schrieb: > Man kann auch Register direkt vom Debugger aus beschreiben - eventuell > direkt über die Addresse, aber ohne Taktsignal funktioniert die Debug > Einheit vom Cortex-M auch nicht mehr. Das mit dem Takt verstehe ich. Ich würde ich via Debugger RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6; auf RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL2; stellen Also würdest du direkt in den RAM schreiben ist eigentlich eine gute Idee. Wie finde ich den die Adresse des Clock control register (RCC_CR)? Im ref manual steht ja nur wie es zu beschreiben ist.
Stefan schrieb: > Wie finde ich den die Adresse des Clock control register (RCC_CR)? > Im ref manual steht ja nur wie es zu beschreiben ist. Dann wirf mal einen scharfen Blick auf S. 99, auf den Wert bei "Address offset", und auf S. 39 die Adresse die da bei "RCC" steht. Die musst du addieren um auf die Adresse des Registers zu kommen. Die PLL-Faktoren lassen sich übrigens nur ändern wenn die PLL aus ist; du musst also auf eine andere Taktquelle umschalten, PLL abschalten, umkonfigurieren, wieder einschalten, und wieder auf PLL zurückschalten. Dauert natürlich mit Einschwingvorgang usw (Warten auf RCC_CR_PLLRDY und "RCC_CFGR_SW"). Wie wärs damit, einfach einen Breakpoint zu setzen? Bis du auf "Weiter" geklickt hast ist der Watchdog 10x abgelaufen.
Außerdem lässt es der STM32 nicht zu den HSI zu deaktivieren solange keine andere Taktquelle gewählt wurde. Der HSI ist immer im Fallback solange keine HSE_RDY oder LSI- / LSE_RDY Flag gesetzt ist, und das ist ein read-only Register den der STM nach dem jeweiligen einschwingen der Taktquelle selbst setzt.
Den Speicherbereich habe ich gefunden, danke dafür. Den Clock Fehler konnte ich provozieren, in dem ich den sysclock auf HSI umgestellt habe RCC CFGR-> SW auf 0x00, dann stellt sich HSI 8MHz ein, erwartet wird 48MHz und der uController geht in den sicheren Zustand. Dr. Sommer schrieb: > Wie wärs damit, einfach einen Breakpoint zu setzen? Bis du auf "Weiter" > geklickt hast ist der Watchdog 10x abgelaufen. Wenn ich einen breakpoint setze läuft das Programm weiter und das ist im Wesentlichen mein Problem. Meine google suche ergibt immer das umgekehrte Problem, dass es schwierig ist zu debuggen und deshalb der IWDG im DBGMCU eingefroren werden muss.
Das IWDG Timeout kann ich jetzt ebenfalls ohne code Anpassung testen, die STL Libary, welche ich verwende, hat durch folgendes HAL Macro den IWDG eingefroren: /* setup DBGMCU block - stop IWDG at break in debug mode */ __DBGMCU_CLK_ENABLE(); __HAL_FREEZE_IWDG_DBGMCU(); -> IWDG Zähler wird angehalten Im Register DBGMCU lassen sich Timer, IWDG, WWDG etc. zu Debugzwecken einfrieren. "Reference manual RM0360" Seite 718 Danke an alle beteiligten. Gruss Stefan
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.