Оглавление:
- Шаг 1. Что такое сторожевой таймер?
- Шаг 2: Как включить сторожевой таймер?
- Шаг 3: продолжайте работу своей программы
- Шаг 4: Пример использования
- Шаг 5. Проблемы со сторожевым таймером
- Шаг 6: наслаждайтесь
Видео: The Arduino Hang Guardian - Учебное пособие по сторожевому таймеру Arduino: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:50
Всем привет, Это случается со всеми нами. Вы создаете проект, с энтузиазмом подключаете все датчики, и внезапно 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: наслаждайтесь
Если у вас есть пример того, как вы использовали сторожевой таймер в реальном проекте, дайте мне знать в комментариях, убедитесь, что видео понравилось, и не забудьте подписаться.
Ура и спасибо за чтение / просмотр!
Рекомендуемые:
Steampunked Dream Guardian Night Light: 9 шагов (с изображениями)
Steampunked Dream Guardian Night Light: Привет всем, несколько недель назад мой близкий друг попросил меня сделать помолвочный подарок (конечно, помимо кольца!) Для его девушки. Они оба такие же, как я, пожарные-добровольцы, и им нравятся объекты стимпанк. Мой друг подумал о
Eye Guardian: Защита глаз по звуку: 9 шагов (с изображениями)
Eye Guardian: Защита глаз срабатывает по звуку: Eye Guardian - это одежда для защиты глаз с питанием от Arduino, срабатывающая при непрерывном звуке с высоким децибелом. Он обнаруживает звук тяжелого оборудования и опускает защитные очки во время использования оборудования. Схема На первом этапе я объясню Inspirati
555 Моностабильный по таймеру задержки: 3 шага
555 Моностабильный на таймере задержки: Таймер 555 можно использовать в нескольких различных режимах. Https://en.wikipedia.org/wiki/555_timer_IC Здесь мы собираемся использовать его в моностабильной конфигурации (генерирует выходной импульс). полезная ссылка на отличные ресурсы для понимания
Guardian V1.0 --- Обновление камеры дверного глазка с помощью Arduino (функция записи при обнаружении движения и поражения электрическим током): 5 шагов
Guardian V1.0 ||| Обновление камеры дверного глазка с помощью Arduino (функция записи при обнаружении движения и поражения электрическим током): я заказал камеру-глазок, но когда я ее использую, понял, что нет функции автоматической записи (активируется при обнаружении движения). Затем я начал исследовать, как это работает. Чтобы записать видео, вам нужно 1- удерживать кнопку питания нажатой почти 2 секунды
The Pi Guardian: 6 шагов (с изображениями)
The Pi Guardian: Вы когда-нибудь хотели поймать того человека, который продолжает красть ваши конфеты на Хэллоуин? Или как насчет того надоедливого соседа по комнате, который не оставит ваш холодильник один? Теперь все это возможно благодаря использованию Raspberry Pi 3, Pi Camera и PIR-датчика. Упростить