Wpis z mikrobloga

#esp #arduino #elektronika #programowanie #elektroprzewodnik
Mam mały problem z przerwaniami w esp. Używam przerwania od zbocza opadającego na pinie esp do obsługi enkodera (kod oparty na fimiku elektroprzewodnika: link)).
Problem jest taki, że jeden skok enkodera powoduje inkrementacje zmiennej count o kilka wartości, ten sam kod z wykorzystaniem tego samego enkodera na płytce arduino uno działa poprawnie. Domyślam się, że przerwania w esp działają jakoś inaczej, ktoś wie w czym może tkwić problem?
addwad - #esp #arduino #elektronika #programowanie #elektroprzewodnik 
Mam mały prob...

źródło: comment_1605448719YgbeKOnouhWq9Ez4V7rCdA.jpg

Pobierz
  • 12
via Wykop Mobilny (Android)
  • 0
@addwad: esp32 jest szybsze. Musisz mieć debouncong.

Dodaj sobie zmienna static uint32_t timestamp = 0

I później zrób if(millis() - timestamp > 200)

Albo zamiast 200 jakas inna wartosc debounce.

Oczywiście w ifie gdy kondycja przejdzie musidz dac:
timestamp = millis()

Mam nadzieje ze Ci pomoże to :)
@zwei: o tym akuart wiem, zwróciłem na to uwagę patrząc na kod elektroprzewodnika, jednak to nie jest akurat problemem, wrzucając printa do pętli głównej jest ten sam efekt :/
@sorek: myślałem, że kondensatory rozwiążą ten problem, mówisz, że próbkowanie w esp jest tak szybkie, że nawet przy zboczu potrafi przy granicy stanów robić taki bałagan? Zaraz przetstuję Twoje rozwiązanie :)
via Wykop Mobilny (Android)
  • 0
@addwad: ogólnie to zainteresuj się tematem dzwonienia styków. Im szybszy cpu tym więcej śmieci z drgającego sryku wyzwoli mu przerwania