Watchdog wyłączony. Na tym etapie tylko zaciemniałby sytuację. Wygląda na to, że chyba znalazłem przyczynę. Wczytałem się w dokumentację i okazuje się, że ten konkretny model PIC24 ma sporą pamięć, ale nie cała jest dostępne bezpośrednio. W standardowy sposób dostępne jest tylko 30kB, pozostałe 66kB to pamięć rozszerzona (EDS). Zmylił mnie fakt, że MPLABX w użytych zasobach uwzględnia całość. Z punktu widzenia programu pamięci było mniej niż oczekiwałem i stos w pewnym momencie zaczął pisać po stercie.
Przejrzałem kod i odzyskałem trochę zmiennych globalnych tam, gdzie to tylko było możliwe. Wystarczyło, żeby ruszyły wszystkie rzeczy, które do tej pory nie chciały działać.
Teraz tylko muszę opanować obsługę tej rozszerzonej pamięci z poziomu C. Gotowych bibliotek nie chciałbym przerabiać, ale teraz zostało mi już tylko (poza dopracowaniem paru szczegółów) napisanie warstwy własnej aplikacji, która równie dobrze może korzystać z tej części RAM-u.