Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

STM32F103 - tryb stop mode i IWDG

OlegTor 19 Mar 2017 00:21 561 6
  • #1 19 Mar 2017 00:21
    OlegTor
    Poziom 3  

    Witam,

    Jak pogodzić tryb stop mode i IWDG?
    Czy da się jakoś wyłączyć IWDG aby nie resetował procka w trybie stop mode?

    Pozdrawiam.

  • #2 24 Mar 2017 19:17
    OlegTor
    Poziom 3  

    Znalazłem pośrednie rozwiązanie i działa sensownie.
    Choć nadal czekam na standardowe rozwiązanie tego problemu.

  • #3 24 Mar 2017 19:22
    Piotrus_999
    Poziom 39  

    OlegTor napisał:
    Znalazłem pośrednie rozwiązanie i działa sensownie.
    Choć nadal czekam na standardowe rozwiązanie tego problemu.

    To sobie poczekasz....... Co to za sformułowanie - co to, któs tu jest twoim pracownikiem że czekasz na rozwiązanie (może nawet zaczynasz się już irytować że nikt nie podał) ale ci napiszę:
    Nie w tym procesorze. IWDG dopiero od F4 albo L4 może by zatrzymany w trybie STOP. IWDG jest nieco inny niż WWDG. Tak że problem znany i opsany w tysiącach wątków w sieci. IWDG ma wlasne niezależne źródło zegara.

  • #4 25 Mar 2017 14:29
    OlegTor
    Poziom 3  

    @Piotrus_999, ty to chyba masz jakieś głęboko ukryte problemy.

  • #5 25 Mar 2017 15:24
    mongoł2000
    Poziom 18  

    Ja próbowałem wyłączać zegar, resetować rejestry i nic się nie udało standardowymi metodami.
    Więc napisałem protezę WG:
    - SysTick z najniższym priorytetem,
    - funkcja typu:

    Code:
    void COMMON_softwareWatchdogReload(){
    
       g_watchdogCount = 0;
    }

    - w przerwaniu od SysTick jest coś takiego:
    Code:
    if(g_watchdogCount>WATCHDOG_RELOAD_TIME_MS){
    
          NVIC_SystemReset();
       }
       g_watchdogCount++;


    Jak na razie nic mi się nie zwiesiło :) W HardFault handler(i w innych core'owych przerwaniach) też mam NVIC_SystemReset(); jakby coś się wydarzyło złego.

  • #6 29 Mar 2017 08:51
    OlegTor
    Poziom 3  

    Ja natomiast obszedłem problem podwójnym resetowaniem.