Здравствуйте.
Реализован ли watchdog, и если да, то покажите, пожалуйста пример как его использовать и как в цикле контролировать память на утечки. По непонятной причине z-uno 1 периодически зависает. А на z-uno 2 все стабильно.
Спасибо!
watchdog и утечки памяти
Re: watchdog и утечки памяти
Да, реализован в Z-Uno 1 и Z-Uno 2
Re: watchdog и утечки памяти
При перезагрузке она даже пришлёт код ошибки сбоя
Re: watchdog и утечки памяти
Здравствуйте!
На Z-uno 1 нет WatchDog внутри пользовательского кода. Он используется только в функции Reboot для принудительной перезагрузки чипа. Утечка памяти там также не возможна, но возможно переполение стека. С большой вероятностью это именно оно, если тот же код стабильно работает на 2-ой(где целых 2кБ только пользовательского стека).
В большинстве случаев можно увидеть проблему с помощью включения диагностических сообщений. В скетч добавьте в начало до setup() вот такую строку:
После этого будут выводится системные сообщения/события/пакеты в Serial0(TX0). Вам нужны системные события - сообщения вида TTTTTTT:EV P0 P1, где TTTTTTT - время в микросекундах от старта, EV - событе, P0/P1 - параметры события. Переполнение стека EV = A0.
Подробнее про системные события можно прочитать здесь:
https://z-uno.z-wave.me/Reference/ZUNO_ ... T_HANDLER/
Если увидите, что проблема в стеке, то в дальнейшем необходимо оптимизировать его использование в вашем коде. Сократите число параметров функций, уменьшите число локальных переменных, вложенность функций, используйте глобальные переменные.
С уважением,
Александр.
На Z-uno 1 нет WatchDog внутри пользовательского кода. Он используется только в функции Reboot для принудительной перезагрузки чипа. Утечка памяти там также не возможна, но возможно переполение стека. С большой вероятностью это именно оно, если тот же код стабильно работает на 2-ой(где целых 2кБ только пользовательского стека).
В большинстве случаев можно увидеть проблему с помощью включения диагностических сообщений. В скетч добавьте в начало до setup() вот такую строку:
Code: Select all
ZUNO_ENABLE(LOGGING_EVENTS LOGGING_DBG);
Подробнее про системные события можно прочитать здесь:
https://z-uno.z-wave.me/Reference/ZUNO_ ... T_HANDLER/
Если увидите, что проблема в стеке, то в дальнейшем необходимо оптимизировать его использование в вашем коде. Сократите число параметров функций, уменьшите число локальных переменных, вложенность функций, используйте глобальные переменные.
С уважением,
Александр.