Всем привет! Нужна помощь по реализации программы под проект, сама программа есть,но работает некорректно некорректно

daniil452454212

✩✩✩✩✩✩✩
9 Апр 2025
1
0
Суть программы в следующем: включать один раз в минуту 1 реле и при нажатии кнопки включать 2 реле и поворачивать сервопривод.
Программа сначала работает нормально, но после 2 - 3 циклов срабатывания отваливается таймер или на кнопку не реагирует. Перепробовал многое, но не помогло.Буду благодарен за помощь!Заранее спасибо!
Вот код:
 

Вложения

Sana956

★✩✩✩✩✩✩
5 Мар 2022
69
23
Попробуй для начала отказаться от вачдога. Отключи его и посмотри что измениться.
 

Мишутк

✩✩✩✩✩✩✩
29 Мар 2025
32
3
Дребезг кнопки не учтен.
4-секундный вочдог никак не согласуется с delay на 8 и 5 секунд.
tmr1не проинициализирована (после включения питания может быть 0 и хорошая работа, после перезагрузки может содержать мусор) - но в общем не определенное поведение.
Мешанина в стилях. trm1 - static, flag - просто глобальная (хотя смысл использования одинковый). Признак беспорядка в коде. Потеряли переменную timer, которая по идее должна быть как trm1, но зачем-то их две.
relax() бессмысленная функция. код функций перед ней всегда завершается с выключенными реле.
В коде таймерное включение не раз в минуту как по заданию, а раз в 6 секунд - но это для быстрой проверки наверное.
Реле включается не раз в минуту (допустим установлено все-таки 60с, а не 6), а раз в минуту плюс задержка на 8с - период плывет.
Нажатие кнопки может сбивать цикл (удлиннять) - если кнопка нажата непосредственно перед срабатыванием таймера, то пока отрабатывает команда кнопки первое реле задерживает свою работу.
При работе первого реле работа кнопки заблокирована.
 
Изменено: