Witam wszystkich, proszę o pomoc w rozwiązaniu problemu w kodzie w języku C ale ze wstawką asemblerową. Poniżej zamieszczam kod.
Opis działania kodu. Za każdym razem, kiedy występuje przerwanie od watchdoga zwiększa się o jeden wartość w rejestrze r23. To jest zliczanie ilości resetów. Wartość rejestru r21 informuje nas o źródle wystąpienia przerwania od watchdoga. Za każdym razem, kiedy ono występuje uC wprowadzany jest w stan uśpienia przez komendę "SLEEP_MODE_IDLE;" I teraz pojawia się problem, którego nie potrafię rozwiązać. Być może dla większości z Was to żaden problem, ale jeśli o mnie chodzi o to procesorami mam po raz pierwszy w życiu do czynienia. Rzecz w tym, żeby kiedy r23 osiągnie wartość 4 lub większą, żeby uC nie wchodził już w stan uśpienia. Instrukcja if raczej nie wchodzi tutaj w grę. Czy ktoś z Was ma może pomysł jak rozwiązać problem? Będę wdzięczny za podpowiedzi.
Kod: C / C++
Opis działania kodu. Za każdym razem, kiedy występuje przerwanie od watchdoga zwiększa się o jeden wartość w rejestrze r23. To jest zliczanie ilości resetów. Wartość rejestru r21 informuje nas o źródle wystąpienia przerwania od watchdoga. Za każdym razem, kiedy ono występuje uC wprowadzany jest w stan uśpienia przez komendę "SLEEP_MODE_IDLE;" I teraz pojawia się problem, którego nie potrafię rozwiązać. Być może dla większości z Was to żaden problem, ale jeśli o mnie chodzi o to procesorami mam po raz pierwszy w życiu do czynienia. Rzecz w tym, żeby kiedy r23 osiągnie wartość 4 lub większą, żeby uC nie wchodził już w stan uśpienia. Instrukcja if raczej nie wchodzi tutaj w grę. Czy ktoś z Was ma może pomysł jak rozwiązać problem? Będę wdzięczny za podpowiedzi.