W którym miejscu program się wiesza?
Nie wiesz? Bo nie masz ŻADNEGO mechanizmu debugowania.
To, że Arduino tego narzędzia nie ma z prawdziwego zdarzenia (dlatego programy pisze się długo), nie znaczy, że nie da się w jakiś sposób debugować kodu. Zrób debugowanie i dowiesz się gdzie program wisi.
Możesz uruchomić WDG (dlaczego 99% programów dla Arduino nie uzywa WDG?) i gdy program zawiśnie wykona reset. Nie rozwiąże to problemu ale go zamaskuje. Najlepiej oczywiście właczyc przerwania od WDG, w przerwaniu sprawdzić adres powrotu na stosie i bardzo często można się dowiedzieć jaka funkcja wywołuje zawieszenie a na pewno, dowiesz się gdzie program wisi.
Nie wiesz? Bo nie masz ŻADNEGO mechanizmu debugowania.
To, że Arduino tego narzędzia nie ma z prawdziwego zdarzenia (dlatego programy pisze się długo), nie znaczy, że nie da się w jakiś sposób debugować kodu. Zrób debugowanie i dowiesz się gdzie program wisi.
Możesz uruchomić WDG (dlaczego 99% programów dla Arduino nie uzywa WDG?) i gdy program zawiśnie wykona reset. Nie rozwiąże to problemu ale go zamaskuje. Najlepiej oczywiście właczyc przerwania od WDG, w przerwaniu sprawdzić adres powrotu na stosie i bardzo często można się dowiedzieć jaka funkcja wywołuje zawieszenie a na pewno, dowiesz się gdzie program wisi.