Оглавление:

The Arduino Hang Guardian - Учебное пособие по сторожевому таймеру Arduino: 6 шагов
The Arduino Hang Guardian - Учебное пособие по сторожевому таймеру Arduino: 6 шагов

Видео: The Arduino Hang Guardian - Учебное пособие по сторожевому таймеру Arduino: 6 шагов

Видео: The Arduino Hang Guardian - Учебное пособие по сторожевому таймеру Arduino: 6 шагов
Видео: Учебное пособие по Hiveos: Как настроить и протестировать USB Watchdog QinHeng Electronics 2024, Июнь
Anonim
Image
Image

Всем привет, Это случается со всеми нами. Вы создаете проект, с энтузиазмом подключаете все датчики, и внезапно Arduino зависает и никакие входные данные не обрабатываются.

«Что происходит?» - спросите вы и начнете копаться в коде, только чтобы понять, что вы застряли в бесконечном цикле. Слава богу, Arduino был у вас на скамейке запасных, а не в отдаленном месте.

Сегодня мы рассмотрим, как можно использовать сторожевой таймер на Arduino, чтобы этого не происходило.

Шаг 1. Что такое сторожевой таймер?

Как включить сторожевой таймер?
Как включить сторожевой таймер?

Сторожевой таймер Arduino, как следует из названия, - это таймер, который работает отдельно от основного процессора на плате. Этот таймер можно использовать для периодической проверки состояния платы, и в обстоятельствах, когда плата застряла в программном цикле или зависла из-за аппаратного сбоя, сторожевой таймер может сбросить Arduino и запустить его заново.

По умолчанию, когда он не используется, этот таймер отключен во всех проектах, и только когда мы его включаем, нам нужно периодически сообщать ему, чтобы он не сбрасывал нашу плату, если она все еще работает должным образом.

Чтобы иметь возможность использовать сторожевой таймер, нам сначала нужно включить файл avr / wdt.h в наш скетч Arduino. Это стандартная библиотека, в которой хранятся сторожевые действия.

Шаг 2: Как включить сторожевой таймер?

Как включить сторожевой таймер?
Как включить сторожевой таймер?
Как включить сторожевой таймер?
Как включить сторожевой таймер?

Чтобы включить таймер, мы используем функцию «wdt_enable», где нам нужно пройти пороговый интервал, при котором плата будет сброшена. В зависимости от нашего варианта использования это может быть от 15 миллисекунд до 8 секунд в предварительно определенных настройках, содержащихся в сторожевой библиотеке.

ПОРОГ - ПОСТОЯННОЕ ИМЯ

15 мс WDTO_15MS 30 мс WDTO_30MS 60 мс WDTO_60MS 120 мс WDTO_120MS 250 мс WDTO_250MS 500 мс WDTO_500MS 1 с WDTO_1S 2 с WDTO_2S 4 с WDTO_4S 8 с WDTO_8S

Шаг 3: продолжайте работу своей программы

Держите свою программу работающей
Держите свою программу работающей

Теперь, когда таймер включен, чтобы предотвратить сброс нашего Arduino, нам нужно периодически вызывать функцию «wdt_reset» для сброса сторожевого таймера до истечения порогового интервала.

При выборе интервала сброса очень важно учитывать любые длительные операции, такие как чтение или отправка данных или подключение к внешним датчикам. Порог сброса должен быть как минимум в полтора раза больше, чем это время, чтобы предотвратить любые случайные сбросы.

Шаг 4: Пример использования

Пример использования
Пример использования
Пример использования
Пример использования
Пример использования
Пример использования

В примере программы, которую вы можете скачать здесь, мы сначала устанавливаем сторожевой таймер с интервалом сброса в 4 секунды. Затем, чтобы знать, что мы находимся в функции настройки, мы быстро мигаем светодиодом 3 раза, а затем в основном цикле сначала сбрасываем таймер, зажигаем светодиод с постепенно увеличивающимися интервалами, а затем выключаем его. В следующем цикле таймер снова сбрасывается до тех пор, пока время подсветки не превысит 4 секунды.

Когда это происходит, сторожевой таймер сбрасывает плату, и настройка выполняется снова.

Шаг 5. Проблемы со сторожевым таймером

Одна из возможных проблем со сторожевым таймером, в зависимости от загрузчика вашего Arduino, заключается в том, что если значение сторожевого таймера слишком низкое и загрузчик не сбрасывает таймер при загрузке нового кода, вы можете повредить свою плату Arduino таким образом, чтобы он всегда будет зависать на этапе загрузки. Загрузчик попытается запуститься, но таймер продолжит сбрасывать плату, не позволяя ей запуститься должным образом. Чтобы предотвратить подобные проблемы, всегда используйте пороговые интервалы в 2 секунды или более.

Шаг 6: наслаждайтесь

Наслаждаться
Наслаждаться

Если у вас есть пример того, как вы использовали сторожевой таймер в реальном проекте, дайте мне знать в комментариях, убедитесь, что видео понравилось, и не забудьте подписаться.

Ура и спасибо за чтение / просмотр!

Рекомендуемые: