vladomir, схему Вашего прибора и использованный код опубликуйте.
Без этого тыкать пальцем в небо можно до бесконечности
Конкретная проблема требует полных и конкретных данных, а на них уже можно вести анализ и поиск конкретного решения…
Еще один вариант ткнуть пальцем в небо:
Используйте методологию POST для частей прошивки. Для этого вставьте во всех подпрограммах на входе и выходе запись уникального кода в свободный последовательный порт (I2C, SPI, UART) с добавлением устройства по сохранению переданного. Передавать лучше всего код и значение таймера, сохранять значение с добавлением внешнего таймера…
По "зависанию" можно будет посмотреть на происходившее до него и наличие жизни в прошивке…