Skocz do zawartości

wykonanie funkcji podczas resetu WT32-ETH01


Pomocna odpowiedź

Napisano (edytowany)

Cześć !@!

Chwiałbym podczas naciśnięcia lub dłuższego przytrzymania przycisku (RESET) CLK EN  w WT 32 wykonać funkcje wpisującą ustawienia  początkowe

void ustawinia_poczatkowe(){
  conf.setValue("ssid","moja_siec");
  conf.setValue("myIP","192.168.178.200");
  conf.writeConfig();
}

  macie jakieś pomysły ?

Pozdrawiam !

Edytowano przez robo1973

Przyciskiem en resetujesz system i chyba nic przed tym resetem nie zrobisz...a nie możesz dać zewnetrznego guzika? Po wciśnięciu guzika zapisujesz dane i robisz programowy reset w funkcji 

Teoretycznie można...

Zapisywać na okrągło gdzieś w RTC RAM aktualny czas

Po restarcie sprawdzać przyczynę resetu

Potem łączyć się do jakiegoś serwera czasu i sprawdzać jaka jest różnica między aktualnym i zapisanym (uwzględniając niedeterministyczny czas odpowiedzi)

 

Dużo łatwiej użyć innego I/O. Dlaczego akurat reset? Na większości modułów masz jeszcze guzik boot, jak nie chcesz nic lutować.

(edytowany)

Czyli każdy reset urządzenia ma wprowadzić ustawienia domyślne? Czy bierzemy pod uwagę że reset może zostać wywołany przez watchdog, lub układ BOD? 

Po prostu trzeba wiedzieć że przyczyn resetu mikrokontrolera od strony sprzętowej może być wiele, w większości przypadków są one dostępne w rejestrach. Układ równie dobrze może się zresetować w wyniku błędnego działania programu - próba odczytu, zapisu wartości pod nie zainicjowany wskaźnik, wycieki pamięci etc. 

Edytowano przez _LM_
Przed chwilą, ethanak napisał:

Ja to rozumiem jako coś co mam np. w routerze - "przytrzymaj reset przez 20 sekund aby przywrócić ustawienia fabryczne".

tak dokładnie Dodatkowy przycisk można dodać - najłatwiej Ale chciałbym resetem 

Resetem się nie da - przy podaniu gnd na en wszystko stoi i nie ma jak zmierzyć czasu. Da się to zrobić, ale potrzebny dodatkowy pin. Coś w stylu:

Wciskam sobie przycisk. Układ RC podaje mi na chwilę gnd na en. Po chwili układ rusza, ale czeka na puszczenie przycisku (tu już działają funkcje pomiaru czasu). W zależności od czasu przytrzymania wykonuje (albo nie) przywrócenie wartości domyślnych.

Wada: trochę lutowania i dodatkowego barachła

Zaleta: reset zawsze zostanie wykonany nawet jeśli program nie czyta dodatkowego pinu, a programowy restart nie będzie na nic czekać (tak w skrócie).

(edytowany)

A czy istnieje możliwość podłączenia dodatkowego układu? Bo wtedy istniałaby taka opcja, może trochę przekombinowana i również potrzeba dodatkowego gpio. Jednym przyciskiem dałoby się to zrobić, zależy jakie są priorytety

 

 

Edytowano przez _LM_

dam sobie spokój Zrobię dodatkowym portem. Myślałem że bootloader można zmodyfikować Ale tu faktycznie chyba jest ostry reset

Pozdrawiam !!

23 godziny temu, ethanak napisał:

Resetem się nie da - przy podaniu gnd na en wszystko stoi i nie ma jak zmierzyć czasu.

No pisałem że się da. Na około, ale się da.

Sztuką jest zmierzyć, jak długo się nie dało mierzyć czasu 🙂

 

24 minuty temu, kostuch napisał:

internety piszą, że RTC_NOINIT_ATTR w deklaracji zmiennej załatwia kwestię przetrwania resetu.

Widocznie moje ESP32 nie czytują internetów - programowego restartu owszem, ale fizycznego wciśnięcia reset niestety nie (a szkoda).

 

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...