Проверка внутреннего WDT

urx
Offline
Зарегистрирован: 11.06.2021

Здравствуйте! Подскажите пожалуйста, есть ли безопасный способ проверить работу внутреннего WDT на ардуино мега 2560. Есть необходимость ожидать процесс более 8 секунд (ожидание ответа от сервера), при этом реагировать на аппаратные зависания с помощью внутреннего WDT. Сделал так.

  wdt_enable(WDTO_8S);

  Timer1.setPeriod(65000);
  Timer1.enableISR();    
  Timer1.outputDisable(CHANNEL_A);
  Timer1.outputDisable(CHANNEL_B);
  Timer1.restart()
 
ISR(TIMER1_A) 
{
  wdt_reset(); 
}

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

b707
Offline
Зарегистрирован: 26.05.2017

не пойму, что вы сделали - выставили ватчдог на 8 сек и дергаете его таймером каждые 65 мс?

Уточните вопрос... что значит "проверить ватчдог"? Я в приведенном коде никакой проверки не вижу

sadman41
Offline
Зарегистрирован: 19.10.2016

 wdt_reset(); должен находиться в пользовательском коде, так как он защищает от некорректной работы прошивки , а не контроллера. Если сбрасывать WTD по хардварному таймеру, то залупленный насмерть фрагмент никогда не будет прерван. Разумным такое действие не назовёшь.

Чтобы МК не ребутнулся в процессе ожидания ответа от сервера, wdt_reset() должен вызваться в цикле ожидания этого ответа.

rkit
Offline
Зарегистрирован: 23.11.2016

urx пишет:

на что обычно реагирует ардуино, на искры, электромагнитные поля, и как при этом не погубить ардуино.

Ардуино не ставят _обычно_ в миллиметрах от сварочной дуги, или в камере томографа. Других источников таких искр и таких полей в природе нет.

P.S. в микроволновку тоже не ставят.

urx
Offline
Зарегистрирован: 11.06.2021

b707 пишет:

не пойму, что вы сделали - выставили ватчдог на 8 сек и дергаете его таймером каждые 65 мс?

Уточните вопрос... что значит "проверить ватчдог"? Я в приведенном коде никакой проверки не вижу

В самом коде вопроса нет, это просто дополнение, и с этим кодом мне всё ясно. Ардуино будет использоваться на производстве, и к ней предъявляется требование устойчивой работы, зависания недопустимы. Был вариант использования внешнего вачдога, но если есть возможность использовать аналогичным образом внутренний, почему бы нет? В вопросах использования вачдога я еще не силен, поэтому решил написать тему здесь.

"Проверить вачдог" - искусственно создать для ардуино среду, близкую к состоянию возникновения зависания.

urx
Offline
Зарегистрирован: 11.06.2021

sadman41 пишет:

 wdt_reset(); должен находиться в пользовательском коде, так как он защищает от некорректной работы прошивки , а не контроллера. Если сбрасывать WTD по хардварному таймеру, то залупленный насмерть фрагмент никогда не будет прерван. Разумным такое действие не назовёшь.

Чтобы МК не ребутнулся в процессе ожидания ответа от сервера, wdt_reset() должен вызваться в цикле ожидания этого ответа.

спасибо, значит буду лезть в библиотеку, где этот "server.available();" обитает

А некорректность работы прошивки возникает как раз от помехи? То есть счетчик текущей команды проскакивает на произвольное место программы? Я правильно понимаю?

urx
Offline
Зарегистрирован: 11.06.2021

rkit пишет:

urx пишет:

на что обычно реагирует ардуино, на искры, электромагнитные поля, и как при этом не погубить ардуино.

Ардуино не ставят _обычно_ в миллиметрах от сварочной дуги, или в камере томографа. Других источников таких искр и таких полей в природе нет.

P.S. в микроволновку тоже не ставят.

Насчет микроволновки не понял, куда именно в микроволновке ардуино не ставят? В камеру или в цепи управления камерой микроволновки? То что в камеру не ставят, это понятно. Та же "сварочная дуга" ведь может возникнуть от изношенного контактора, переключающего нагрузку в десятки ампер на производстве. И она будет иметь сферу влияния на окружающую электронику, находящуюся поблизости. Электромагнитные поля могут создавать мощные частотники, и метры проводов, исходящие от них.

sadman41
Offline
Зарегистрирован: 19.10.2016

Исследований я не проводил. Но предполагаю, что под искрой, если внутри МК не сгорает физически транзистор или сотня их, то может просто в ячейках RAM/регистре искажаются данные и условие какое-нибудь может сработать не так, как ожидается либо да - счётчик команд сносит... WTD тут не к месту.

rkit
Offline
Зарегистрирован: 23.11.2016

urx пишет:

Та же "сварочная дуга" ведь может возникнуть от изношенного контактора, переключающего нагрузку в десятки ампер на производстве.

Может и может, только вот искры от нее до ардуино не долетят.

 

urx пишет:

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

Может и могут, но не такие мощные, чтобы что-то внутри проца затронуть.

urx
Offline
Зарегистрирован: 11.06.2021

Спасибо за ответы. Выводы таковы, что буду внешний wdt делать, там проще все протестировать.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Плохие выводы, внутренний wdt работает прекрасно, проблема явно в скетче и/или непонимание как это все работает.

rkit
Offline
Зарегистрирован: 23.11.2016

Проблема в том, что нахватался бреда с форумов вместо изучения физики. Искры и поля электромагнитые.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017
urx
Offline
Зарегистрирован: 11.06.2021

andycat пишет:
Плохие выводы, внутренний wdt работает прекрасно, проблема явно в скетче и/или непонимание как это все работает.

Подскажите хорошую литературу, где описано как все работает.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

А ссылки выше недостаточно для проверки wdt?
https://ru-wikipedia-org.turbopages.org/ru.wikipedia.org/s/wiki/%D0%A1%D...

urx
Offline
Зарегистрирован: 11.06.2021

Да не, та ссылка которая выше мне известна, проверял, работает wdt. Хочу знать внутреннюю структуру ардуино+wdt, хотя бы на уровне квадратиков блок-схемы.

Вот вроде нашел:

https://future2day.ru/pro-kontroller-atmega2560/

rkit
Offline
Зарегистрирован: 23.11.2016

В даташите всё есть.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

urx пишет:

"Проверить вачдог" - искусственно создать для ардуино среду, близкую к состоянию возникновения зависания.

А в чем проблема тупо по нажатию кнопки зациклить прошивку?

urx
Offline
Зарегистрирован: 11.06.2021

andriano пишет:

urx пишет:

"Проверить вачдог" - искусственно создать для ардуино среду, близкую к состоянию возникновения зависания.

А в чем проблема тупо по нажатию кнопки зациклить прошивку?

Вы какую кнопку имеете в виду, ресет? Или какую?

В принципе, вопрос решен, заказал пару вачдогов за 190 рублей каждый, и не буду голову морочить ни себе, ни сообществу. Оно того не стоит.

b707
Offline
Зарегистрирован: 26.05.2017

urx пишет:

В принципе, вопрос решен, заказал пару вачдогов за 190 рублей каждый, и не буду голову морочить ни себе, ни сообществу. Оно того не стоит.

тупое какое-то решение... внутренний ватчдог не осилил понять? Или "принципиальный железячник". вместо одной строки кода будем 20 внешних деталей припаивать? - таких много среди старых "радиолюбителей"...

urx
Offline
Зарегистрирован: 11.06.2021

b707 пишет:

urx пишет:

В принципе, вопрос решен, заказал пару вачдогов за 190 рублей каждый, и не буду голову морочить ни себе, ни сообществу. Оно того не стоит.

тупое какое-то решение... внутренний ватчдог не осилил понять?

Я же сказал, не СТОИТ оно того. В чем тупость поясните. В том что решил сэкономить время для более полезных дел? И на мне нет никаких обязательств что либо понимать, из того, что понимать следует только лишь ради меряния пипирками среди интеллектуалов, но без пользы лично для себя.

b707
Offline
Зарегистрирован: 26.05.2017

urx пишет:

В чем тупость поясните.

в том что там понимать нечего... но ты не смог

urx
Offline
Зарегистрирован: 11.06.2021

b707 пишет:

urx пишет:

В чем тупость поясните.

в том что там понимать нечего... но ты не смог

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

sadman41
Offline
Зарегистрирован: 19.10.2016

И с которым можно даже не успеть проскочить бутлодыря

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

urx пишет:

andriano пишет:

urx пишет:

"Проверить вачдог" - искусственно создать для ардуино среду, близкую к состоянию возникновения зависания.

А в чем проблема тупо по нажатию кнопки зациклить прошивку?

Вы какую кнопку имеете в виду, ресет? Или какую?

Любую пользовательскую кнопку, подключенную к цифровом пину, подключенную к аналоговому пину (вместе с другими кнопками), подключенную к сдвиговому регистру либо коммутатору, беспроводную кнопку, либо любую кнопку, подключенную любым известным науке способом.