Witam
Moze zaczne od tego, ze problem rozwiazalem (nie wiem czy zgodnie ze sztuka ale dziala - o czym ponizej), jednak chcialbym sie zapytac dlaczego dzieje sie tak a nie inaczej.
Problem powstal od ESP8266 i jego deep sleep mode. Jak sie okazuje na rynku sa wadliwe ESP, ktore nie chca wstawac z tego trybu. Na 10 zamowiaonych z aliexpress - 5 wstawalo reszta nie. Zeby wyjsc z deep sleep mode w ESP8266 trzeba polaczyc GPIO16 z pinem restet. Po okreslonym, zadanym czasie pin GPIO16 generuje sygnal reset i w ten sposob ESP zaczyna swoj program od poczatku. W wadliwych ESP GPIO16 generuje sygnal resetu jednak nie jest on identyczny jak poprawnie dzialajacych IC. Z tego co widzialem w necie ludzie probowali resetowac wadliwy egzemplarz poprawnie dzialajacym, jednak bez skutku. Na poczatku myslalem, ze moze sygnal restetujacy jest za krotki i chcialem sprobowac uzyc zewnetrznego ic typu ic voltage supervisor z funkcja manualnego resetu. Jako ze w szufladzie walaja sie stm32f030 postanowilem zrobic szybki test i napisac program resetujacy ESP. Chyba dobrze, ze poszedlem ta droga, bowiem okazalo sie, ze to nie dlugosc sygnalu resetowego ma znaczenie a jego ilosc (tak, dopiero przy drugim sygnale resetujacym ESP powraca do zycia). Postanowilem juz zostac przy STM32f030 tylko, ze jako cala aplikacja jest zasilana bateryjnie, STM tez musial brac jak najmniej pradu. Caly system resetowania polega na tym, ze STM idzie spac (przechodzi w stop mode) i po otrzymaniu zbocza opadajacego z GPIO16 ESP wysyla dwa sygnaly resetujace poprzez mosfet (bss138) do ESP. Wszystko dziala jak powinno z jednym ale. Mianowicie po starcie STM gdzie po ustawieniu wszystkiego zgodnie z zaleceniami a w petli glownej mam tylko dwie linie :
pobor pradu waha sie w przedziale 1-4µA.
Natomiast po wybudzeniu i wykonaniu kodu z przerwania:
powracajac do trybu stop mode pobor pradu wzrasta do 40µA.
Problem rozwiazalem resetujac STM na koncu przerwania ;
wtedy znow pobor pradu jest w granicach 1-4µA.
Pytanie, dlaczego tak sie dzieje i gdzie jest moj blad?
Moze zaczne od tego, ze problem rozwiazalem (nie wiem czy zgodnie ze sztuka ale dziala - o czym ponizej), jednak chcialbym sie zapytac dlaczego dzieje sie tak a nie inaczej.
Problem powstal od ESP8266 i jego deep sleep mode. Jak sie okazuje na rynku sa wadliwe ESP, ktore nie chca wstawac z tego trybu. Na 10 zamowiaonych z aliexpress - 5 wstawalo reszta nie. Zeby wyjsc z deep sleep mode w ESP8266 trzeba polaczyc GPIO16 z pinem restet. Po okreslonym, zadanym czasie pin GPIO16 generuje sygnal reset i w ten sposob ESP zaczyna swoj program od poczatku. W wadliwych ESP GPIO16 generuje sygnal resetu jednak nie jest on identyczny jak poprawnie dzialajacych IC. Z tego co widzialem w necie ludzie probowali resetowac wadliwy egzemplarz poprawnie dzialajacym, jednak bez skutku. Na poczatku myslalem, ze moze sygnal restetujacy jest za krotki i chcialem sprobowac uzyc zewnetrznego ic typu ic voltage supervisor z funkcja manualnego resetu. Jako ze w szufladzie walaja sie stm32f030 postanowilem zrobic szybki test i napisac program resetujacy ESP. Chyba dobrze, ze poszedlem ta droga, bowiem okazalo sie, ze to nie dlugosc sygnalu resetowego ma znaczenie a jego ilosc (tak, dopiero przy drugim sygnale resetujacym ESP powraca do zycia). Postanowilem juz zostac przy STM32f030 tylko, ze jako cala aplikacja jest zasilana bateryjnie, STM tez musial brac jak najmniej pradu. Caly system resetowania polega na tym, ze STM idzie spac (przechodzi w stop mode) i po otrzymaniu zbocza opadajacego z GPIO16 ESP wysyla dwa sygnaly resetujace poprzez mosfet (bss138) do ESP. Wszystko dziala jak powinno z jednym ale. Mianowicie po starcie STM gdzie po ustawieniu wszystkiego zgodnie z zaleceniami a w petli glownej mam tylko dwie linie :
Kod: C / C++
pobor pradu waha sie w przedziale 1-4µA.
Natomiast po wybudzeniu i wykonaniu kodu z przerwania:
Kod: C / C++
powracajac do trybu stop mode pobor pradu wzrasta do 40µA.
Problem rozwiazalem resetujac STM na koncu przerwania ;
Kod: C / C++
wtedy znow pobor pradu jest w granicach 1-4µA.
Pytanie, dlaczego tak sie dzieje i gdzie jest moj blad?