logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

STM32F031 - Program nie startuje po włączeniu zasilania, debug działa poprawnie

markosik20 20 Lip 2015 21:32 1497 12
REKLAMA
  • #1 14863119
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    Witam
    Nie mogę dojść gdzie leży przyczyna nieuruchamiania się programu po włączeniu zasilania.
    - podczas uruchamiania sesji debug wszystko poprawnie działa;
    - po ręcznym (switch) wykonaniu resetu wszystko działa;
    - po programowym wykonaniu resetu wszystko działa;
    - oscylator startuje poprawnie;
    Wykonano zostało kilka identycznych egzemplarzy i z tylko jednym jest problem (nie startuje). Procek już wymieniony na inny. Dokładne mycie w myjce ultradźwiękowej nie pomogło.
    Załączam zdjęcie z oscyloskopu (żółty przebieg napięcia, niebieski przebieg na pinie NRST).
    Czas opóźnienia NRST w narastaniu od Vcc około 8ms.
    Może ktoś wpadnie na pomysł gdzie leży błąd bo mnie pomysłów już zabrakło :(
    STM32F031 - Program nie startuje po włączeniu zasilania, debug działa poprawnie
  • REKLAMA
  • Pomocny post
    #2 14863173
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    A co ze schematem podłączenia RESET? Pokażesz?
    Stosujesz zewnętrzny kwarc? Jeśli tak - to czy go podmieniałeś?
    Czym zasilasz płytkę?
  • REKLAMA
  • #3 14863262
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    Kwarcu nie podmieniałem (zwłaszcza że przebieg ładnie wygląda). Najciekawsze że parę dni procek uruchamiał się bez problemu. Cały układ zasilany jest z zewnętrznego urządzenia (z zasilania procka tego urządzenia 5V). STM32F031 - Program nie startuje po włączeniu zasilania, debug działa poprawnie
    Za stabilizatorem 3V3 jest tantal 10u równolegle z 100n.
  • #4 14863292
    michalko12
    Specjalista - Mikrokontrolery
    Posty: 3394
    Pomógł: 462
    Ocena: 321
    Sprawdź co dzieje się na BOOT0.
  • REKLAMA
  • Pomocny post
    #5 14863293
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    Spróbuj zmienić ten 100 nF na RST na 10nF. Na próbę wylutuj go całkowicie.
    Ja zawsze daję do kwarca kondensatory odsprzęgające. Niewielki koszt, a czasem "ratuje dupę".
    nie jestem pewien, czy ten rezystor na Boot0 nie jest zbyt słabym pull-down-em. Ale najpierw sprawdź to co wyżej.
  • REKLAMA
  • #6 14863325
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    BOOT0 zwart do masy - nie pomogło;
    NRST bez kondensatora - narastanie przebiegu zdecydowanie przyspieszyło - procek jednak dalej nie startuje;
    NRST z 10n - nachylenie przebiegu trochę łagodniejsze - niestety dalej "klapa";
  • Pomocny post
    #7 14863341
    michalko12
    Specjalista - Mikrokontrolery
    Posty: 3394
    Pomógł: 462
    Ocena: 321
    Może startuje prawidłowo, tylko na dzień dobry zawiesza się program na obsłudze jakiegoś niedziałającego zewnętrznego peryferiala?
  • Pomocny post
    #8 14863372
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    Właśnie. Zrób na dzień dobry po starcie żeby ustawiał jakiś pin czy t.p.
    Tak się zastanawiam - gdyby nawet kwarc nie zadziałał to i tak MCU powinien chodzic (domyślnie) na wewnętrznym kwarcu.
  • #9 14863391
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    michalko12 napisał:
    Może startuje prawidłowo, tylko na dzień dobry zawiesza się program na obsłudze jakiegoś niedziałającego zewnętrznego peryferiala?

    Ale dlaczego w trybie debug się nie zawiesza?
    Pokombinuje jeszcze ale jutro, wgram "migacza LED" i zobaczę czy to problem sprzętowy czy programowy.
  • Pomocny post
    #10 14863415
    michalko12
    Specjalista - Mikrokontrolery
    Posty: 3394
    Pomógł: 462
    Ocena: 321
    markosik20 napisał:
    Ale dlaczego w trybie debug się nie zawiesza?


    Może za krótko czekasz po włączeniu zasilania i próbujesz komunikować się/inicjalizować zewnętrzne urządzenie zanim zdąży zakończyć sekwencję POR.

    Mogę tylko gdybać bo nie wiem co masz do tego uC podłączone, ale widać że jakieś magistrale szeregowe masz wyprowadzone.
  • #11 14863470
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    michalko12 napisał:


    Może za krótko czekasz po włączeniu zasilania i próbujesz komunikować się/inicjalizować zewnętrzne urządzenie zanim zdąży zakończyć sekwencję POR.

    Mogę tylko gdybać bo nie wiem co masz do tego uC podłączone, ale widać że jakieś magistrale szeregowe masz wyprowadzone.


    No ale koniec sekwencji POR oznacza wykonanie kodu z Reset Handler ?

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #12 14863496
    michalko12
    Specjalista - Mikrokontrolery
    Posty: 3394
    Pomógł: 462
    Ocena: 321
    Nie chodzi o POR procesora tylko tego co masz do niego podłączone. (RFM22?)
    Może jeszcze ewentualnie sprawdź sekwencję inicjalizacji (RFM22?) czy jest w pełni zgodna z dokumentacją.
  • #13 14864839
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    Dziękuję wszystkim za pomoc. Oczywiście (jak to często bywa) problem był czysto programowy.

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik ma problem z uruchomieniem programu na mikrokontrolerze STM32F031 po włączeniu zasilania, mimo że debugowanie działa poprawnie. Po ręcznym i programowym resecie wszystko działa, a oscylator startuje prawidłowo. Użytkownik sprawdził schemat podłączenia RESET, zasilanie oraz kondensatory, ale problem występuje tylko w jednym egzemplarzu. Inni uczestnicy dyskusji sugerują sprawdzenie stanu pinu BOOT0, zmiany kondensatorów, a także możliwe problemy z zewnętrznymi peryferiami. Ostatecznie użytkownik odkrył, że problem był programowy.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA