Зависает Arduino самопроизвольно

Ответить
belokuriha
Рядовой
Сообщения: 81
Зарегистрирован: 10.03.2020{, 11:35}
Репутация: 1
Имя: Алексей

Зависает Arduino самопроизвольно

#1

Сообщение belokuriha » 17.02.2021{, 09:21}

День добрый. Собственно вопрос , как решить проблему зависания ардуино ? Знаю что тут много таких тем , но проблема самопроизвольная , коммутации по реле и мощных нагрузок пока нет , т.е это проект ворот , что я тут выкладывал .
Сначала думал что нехватка питания , т.к когда отлаживал проект GSM модуль был ближе к базовой станции и сигнал был -53dbm , сейчас же сигнал стал -89 -90 , но просадки по питанию я не увидел , попробую еще переделать отдельное питание на GSM модуль , но не думаю что проблема в этом.

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

Serg_Grn
Лейтенант
Сообщения: 333
Зарегистрирован: 11.02.2018{, 13:07}
Репутация: 36
Имя: Сергей

Зависает Arduino самопроизвольно

#2

Сообщение Serg_Grn » 17.02.2021{, 10:05}

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

От себя могу сказать, без сторожевого таймера надёжное устройство построить невозможно.
https://flprog.ru/uchebnyj-centr/articl ... ntrollera/

belokuriha
Рядовой
Сообщения: 81
Зарегистрирован: 10.03.2020{, 11:35}
Репутация: 1
Имя: Алексей

Зависает Arduino самопроизвольно

#3

Сообщение belokuriha » 17.02.2021{, 10:17}

Проект прикрепил , питание с импульсного БП , но пробовал питать от акб .

В самой UNO есть сторожевой пес ?
Вложения
управление GSM_beta v3.flp
(3.95 МБ) 35 скачиваний

Serg_Grn
Лейтенант
Сообщения: 333
Зарегистрирован: 11.02.2018{, 13:07}
Репутация: 36
Имя: Сергей

Зависает Arduino самопроизвольно

#4

Сообщение Serg_Grn » 17.02.2021{, 10:35}

belokuriha писал(а):
17.02.2021{, 10:17}
В самой UNO есть сторожевой пес ?
Его нет нигде. Для чего я и дал ссылку.

belokuriha
Рядовой
Сообщения: 81
Зарегистрирован: 10.03.2020{, 11:35}
Репутация: 1
Имя: Алексей

Зависает Arduino самопроизвольно

#5

Сообщение belokuriha » 17.02.2021{, 10:50}

Serg_Grn писал(а):
17.02.2021{, 10:35}
belokuriha писал(а):
17.02.2021{, 10:17}
В самой UNO есть сторожевой пес ?
Его нет нигде. Для чего я и дал ссылку.
https://habr.com/ru/post/189744/ а как же это ? получается просто другой загрузчик . Или же он не работает ?

Аватара пользователя
RedSky
Лейтенант
Сообщения: 574
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 72
Откуда: Днепропетровск
Имя: Алексей

Зависает Arduino самопроизвольно

#6

Сообщение RedSky » 17.02.2021{, 11:57}

На уно работает. Другие 328е можно прошить как уно. На форуме есть блок с выбором времени. Если есть лисплей 1602 или подобный время ставить 1 сек или более.

Serg_Grn
Лейтенант
Сообщения: 333
Зарегистрирован: 11.02.2018{, 13:07}
Репутация: 36
Имя: Сергей

Зависает Arduino самопроизвольно

#7

Сообщение Serg_Grn » 17.02.2021{, 11:59}

belokuriha писал(а):
17.02.2021{, 10:50}
а как же это ? получается просто другой загрузчик . Или же он не работает ?
Встроенный watchdog - это не watchdog :)
Я не сильно владею теорией, но из практики могу сказать, что это не работает. Или работает, но не так как надо.
Хочешь гарантированный контроль зависания - делай внешний таймер.
Кстати, на промышленных контроллерах и всяких электронных устройствах на мк, таймеры внешние.

KulibinOrsk
Лейтенант
Сообщения: 515
Зарегистрирован: 25.02.2018{, 08:48}
Репутация: 21
Откуда: Оренбург
Имя: Александр

Зависает Arduino самопроизвольно

#8

Сообщение KulibinOrsk » 17.02.2021{, 12:21}

belokuriha, вы схему бы выложили и не было бы гадания.
У меня ни на одном из штук 30 контроллеров не было зависания за 10 лет ! Но вот в прошлом году сделал проект с дисплеем на I2C и ... был в шоке. Потом конечно прояснил в чем дело, да да именно в наводках по I2C.
Давайте схему, а уж потом все гадалки.
Кстати по датчику снега что то решили? Кто победил в лотерее по предложению датчика ?

belokuriha
Рядовой
Сообщения: 81
Зарегистрирован: 10.03.2020{, 11:35}
Репутация: 1
Имя: Алексей

Зависает Arduino самопроизвольно

#9

Сообщение belokuriha » 17.02.2021{, 12:25}

KulibinOrsk писал(а):
17.02.2021{, 12:21}
belokuriha, вы схему бы выложили и не было бы гадания.
У меня ни на одном из штук 30 контроллеров не было зависания за 10 лет ! Но вот в прошлом году сделал проект с дисплеем на I2C и ... был в шоке. Потом конечно прояснил в чем дело, да да именно в наводках по I2C.
Давайте схему, а уж потом все гадалки.
Кстати по датчику снега что то решили? Кто победил в лотерее по предложению датчика ?
Проект прикрепил , а что еще надо ?
По датчику пока времени нет проверить .. Обязательно отпишусь в тему .

AndrejK
Сержант
Сообщения: 119
Зарегистрирован: 20.02.2020{, 13:16}
Репутация: 14
Откуда: Вильнюс
Имя: Андрей

Зависает Arduino самопроизвольно

#10

Сообщение AndrejK » 17.02.2021{, 12:52}

Попробуйте так:
void setup()
{
asm ("wdr"); сброс таймера WD.

код

WDTCSR = (1 << WDCE) | (1 << WDE);
WDTCSR = (1 << WDE) | (0 << WDIE); // на 16 мс бездействия void loop. Если в цикле много delay, то меняем биты регистров, чем изменям время дежурства с 16 мс до 8000 мс.

void loop() {

asm ("wdr"); если за 16 мс таймер WD не сбросится, то перезагрузка МК.

код

}

belokuriha
Рядовой
Сообщения: 81
Зарегистрирован: 10.03.2020{, 11:35}
Репутация: 1
Имя: Алексей

Зависает Arduino самопроизвольно

#11

Сообщение belokuriha » 17.02.2021{, 15:50}

AndrejK писал(а):
17.02.2021{, 12:52}
Попробуйте так:
void setup()
{
asm ("wdr"); сброс таймера WD.

код

WDTCSR = (1 << WDCE) | (1 << WDE);
WDTCSR = (1 << WDE) | (0 << WDIE); // на 16 мс бездействия void loop. Если в цикле много delay, то меняем биты регистров, чем изменям время дежурства с 16 мс до 8000 мс.

void loop() {

asm ("wdr"); если за 16 мс таймер WD не сбросится, то перезагрузка МК.

код

}
Это я так понял надо добавить в тело моего кода ?

Serg_Grn
Лейтенант
Сообщения: 333
Зарегистрирован: 11.02.2018{, 13:07}
Репутация: 36
Имя: Сергей

Зависает Arduino самопроизвольно

#12

Сообщение Serg_Grn » 17.02.2021{, 17:55}

KulibinOrsk писал(а):
17.02.2021{, 12:21}
У меня ни на одном из штук 30 контроллеров не было зависания за 10 лет !
Это при работе нон стоп 24/7 и без внешнего таймера?
Чудеса... :)

Аватара пользователя
BormanYA
Рядовой
Сообщения: 95
Зарегистрирован: 10.01.2018{, 18:07}
Репутация: 12
Откуда: Дмитров
Имя: Михаил

Зависает Arduino самопроизвольно

#13

Сообщение BormanYA » 17.02.2021{, 19:04}

belokuriha писал(а):
17.02.2021{, 09:21}
сейчас же сигнал стал -89 -90
Про наводки от GSM модуля не думал? Ну там коаксиалом отвести антенну в сторону от МК, один из вариантов. Чем ниже сигнал, тем больше мощность по ВЧ выдаёт модуль. В кратце из опыта, этого достаточно чтобы завесить МК.

AndrejK
Сержант
Сообщения: 119
Зарегистрирован: 20.02.2020{, 13:16}
Репутация: 14
Откуда: Вильнюс
Имя: Андрей

Зависает Arduino самопроизвольно

#14

Сообщение AndrejK » 17.02.2021{, 22:20}

Глянул ваш проект. Переделал сторожа на 8 секунд. Так, как delay в loope больше 8 сек., а таймер перезагрузки настроен на максимальные 8 сек, то каждые 8 сек. МК будет перезагружаться: LED загорится и через 0,5 сек. погаснет, через 8 сек опять загорится и т.д.

void setup() {

pinMode(13, OUTPUT);
digitalWrite(13, 1);
delay (500);
digitalWrite(13, 0);


asm("wdr");
WDTCSR |= (1 << WDCE) | (1 << WDE);
WDTCSR |= (1<<WDP3)|(1<< WDP0); 8000 ms

}

void loop() {

asm("wdr");
delay (10000);

}

belokuriha
Рядовой
Сообщения: 81
Зарегистрирован: 10.03.2020{, 11:35}
Репутация: 1
Имя: Алексей

Зависает Arduino самопроизвольно

#15

Сообщение belokuriha » 18.02.2021{, 05:49}

BormanYA писал(а):
17.02.2021{, 19:04}
belokuriha писал(а):
17.02.2021{, 09:21}
сейчас же сигнал стал -89 -90
Про наводки от GSM модуля не думал? Ну там коаксиалом отвести антенну в сторону от МК, один из вариантов. Чем ниже сигнал, тем больше мощность по ВЧ выдаёт модуль. В кратце из опыта, этого достаточно чтобы завесить МК.
Вот как вариант , такое я думал , т.к мощность увеличилось , идет излучение больше. Вынесу антенну на улицу , дальше от I2c шины.

Ответить

Вернуться в «Помогите, а то я "нимагу"»