Witam,
za pomocą Arduino uno tworze projekt zegara na wyświetlaczu 4x7segmentowy.
Wyświetlacz jest ze wspólną anodą, a katody są podłączone przez expander PCF8574N za pomocą I2C do mikrokontrolera.
Otóż mam taki problem, w obsłudze przerwania timer1 (1Hz), zapalam odpowiednią anodę, i chcę wysłać odpowiednią kombinację 8bitów do expandera jednak program się zatrzymuje. Dodatkowo z niewiadomych mi przyczyn program się zatrzymuje dokładnie 18 linijek wcześniej, przed poleceniem wysłania 8bitów do expandera.
Załączam wycinek z obsługi przerwania, wcześniej w funkcji setup mam zainicjalizowany expander: "expander.begin(0x20);" oraz na początku programu "PCF8574 expander;". Gdy wrzucę komendę wysłania 8bitów do programu głównego to wszystko działa jak powinno
Serial.println dopisałem aby dowiedzieć się ile linijek wcześniej zatrzymuje się program
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Proszę o pomoc z rozwiązaniem problemu, dlaczego nie mogę użyć odwołania do expandera w przerwaniu lub ewentualnie co robię źle i dlaczego program akurat wcześniej się zatrzymuje?
Dorzucam jeszcze inicjalizacje timer1 gdyby była potrzebna:
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.