Проверка внутреннего WDT
- Войдите на сайт для отправки комментариев
Пт, 11/06/2021 - 13:25
Здравствуйте! Подскажите пожалуйста, есть ли безопасный способ проверить работу внутреннего 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();
}
Собственно вопрос, как вызвать зависание ардуины и срабатывание вачдога, на что обычно реагирует ардуино, на искры, электромагнитные поля, и как при этом не погубить ардуино. Может кратковременно отключить питание с помощью реле?
не пойму, что вы сделали - выставили ватчдог на 8 сек и дергаете его таймером каждые 65 мс?
Уточните вопрос... что значит "проверить ватчдог"? Я в приведенном коде никакой проверки не вижу
wdt_reset(); должен находиться в пользовательском коде, так как он защищает от некорректной работы прошивки , а не контроллера. Если сбрасывать WTD по хардварному таймеру, то залупленный насмерть фрагмент никогда не будет прерван. Разумным такое действие не назовёшь.
Чтобы МК не ребутнулся в процессе ожидания ответа от сервера, wdt_reset() должен вызваться в цикле ожидания этого ответа.
на что обычно реагирует ардуино, на искры, электромагнитные поля, и как при этом не погубить ардуино.
Ардуино не ставят _обычно_ в миллиметрах от сварочной дуги, или в камере томографа. Других источников таких искр и таких полей в природе нет.
P.S. в микроволновку тоже не ставят.
не пойму, что вы сделали - выставили ватчдог на 8 сек и дергаете его таймером каждые 65 мс?
Уточните вопрос... что значит "проверить ватчдог"? Я в приведенном коде никакой проверки не вижу
В самом коде вопроса нет, это просто дополнение, и с этим кодом мне всё ясно. Ардуино будет использоваться на производстве, и к ней предъявляется требование устойчивой работы, зависания недопустимы. Был вариант использования внешнего вачдога, но если есть возможность использовать аналогичным образом внутренний, почему бы нет? В вопросах использования вачдога я еще не силен, поэтому решил написать тему здесь.
"Проверить вачдог" - искусственно создать для ардуино среду, близкую к состоянию возникновения зависания.
wdt_reset(); должен находиться в пользовательском коде, так как он защищает от некорректной работы прошивки , а не контроллера. Если сбрасывать WTD по хардварному таймеру, то залупленный насмерть фрагмент никогда не будет прерван. Разумным такое действие не назовёшь.
Чтобы МК не ребутнулся в процессе ожидания ответа от сервера, wdt_reset() должен вызваться в цикле ожидания этого ответа.
спасибо, значит буду лезть в библиотеку, где этот "server.available();" обитает
А некорректность работы прошивки возникает как раз от помехи? То есть счетчик текущей команды проскакивает на произвольное место программы? Я правильно понимаю?
на что обычно реагирует ардуино, на искры, электромагнитные поля, и как при этом не погубить ардуино.
Ардуино не ставят _обычно_ в миллиметрах от сварочной дуги, или в камере томографа. Других источников таких искр и таких полей в природе нет.
P.S. в микроволновку тоже не ставят.
Насчет микроволновки не понял, куда именно в микроволновке ардуино не ставят? В камеру или в цепи управления камерой микроволновки? То что в камеру не ставят, это понятно. Та же "сварочная дуга" ведь может возникнуть от изношенного контактора, переключающего нагрузку в десятки ампер на производстве. И она будет иметь сферу влияния на окружающую электронику, находящуюся поблизости. Электромагнитные поля могут создавать мощные частотники, и метры проводов, исходящие от них.
Исследований я не проводил. Но предполагаю, что под искрой, если внутри МК не сгорает физически транзистор или сотня их, то может просто в ячейках RAM/регистре искажаются данные и условие какое-нибудь может сработать не так, как ожидается либо да - счётчик команд сносит... WTD тут не к месту.
Та же "сварочная дуга" ведь может возникнуть от изношенного контактора, переключающего нагрузку в десятки ампер на производстве.
Может и может, только вот искры от нее до ардуино не долетят.
Электромагнитные поля могут создавать мощные частотники, и метры проводов, исходящие от них.
Может и могут, но не такие мощные, чтобы что-то внутри проца затронуть.
Спасибо за ответы. Выводы таковы, что буду внешний wdt делать, там проще все протестировать.
Плохие выводы, внутренний wdt работает прекрасно, проблема явно в скетче и/или непонимание как это все работает.
Проблема в том, что нахватался бреда с форумов вместо изучения физики. Искры и поля электромагнитые.
http://arduino.ru/forum/apparatnye-voprosy/arduino-nano-i-wdt-taimer#com...
Подскажите хорошую литературу, где описано как все работает.
А ссылки выше недостаточно для проверки wdt?
https://ru-wikipedia-org.turbopages.org/ru.wikipedia.org/s/wiki/%D0%A1%D...
Да не, та ссылка которая выше мне известна, проверял, работает wdt. Хочу знать внутреннюю структуру ардуино+wdt, хотя бы на уровне квадратиков блок-схемы.
Вот вроде нашел:
https://future2day.ru/pro-kontroller-atmega2560/
В даташите всё есть.
"Проверить вачдог" - искусственно создать для ардуино среду, близкую к состоянию возникновения зависания.
А в чем проблема тупо по нажатию кнопки зациклить прошивку?
"Проверить вачдог" - искусственно создать для ардуино среду, близкую к состоянию возникновения зависания.
А в чем проблема тупо по нажатию кнопки зациклить прошивку?
Вы какую кнопку имеете в виду, ресет? Или какую?
В принципе, вопрос решен, заказал пару вачдогов за 190 рублей каждый, и не буду голову морочить ни себе, ни сообществу. Оно того не стоит.
В принципе, вопрос решен, заказал пару вачдогов за 190 рублей каждый, и не буду голову морочить ни себе, ни сообществу. Оно того не стоит.
тупое какое-то решение... внутренний ватчдог не осилил понять? Или "принципиальный железячник". вместо одной строки кода будем 20 внешних деталей припаивать? - таких много среди старых "радиолюбителей"...
В принципе, вопрос решен, заказал пару вачдогов за 190 рублей каждый, и не буду голову морочить ни себе, ни сообществу. Оно того не стоит.
тупое какое-то решение... внутренний ватчдог не осилил понять?
Я же сказал, не СТОИТ оно того. В чем тупость поясните. В том что решил сэкономить время для более полезных дел? И на мне нет никаких обязательств что либо понимать, из того, что понимать следует только лишь ради меряния пипирками среди интеллектуалов, но без пользы лично для себя.
В чем тупость поясните.
в том что там понимать нечего... но ты не смог
В чем тупость поясните.
в том что там понимать нечего... но ты не смог
Вот именно, бесполезный аппендикс, который по функционалу уступает внешнему вачдогу, проверить который - всего лишь выдернуть провод с импульсом.
И с которым можно даже не успеть проскочить бутлодыря
"Проверить вачдог" - искусственно создать для ардуино среду, близкую к состоянию возникновения зависания.
А в чем проблема тупо по нажатию кнопки зациклить прошивку?
Вы какую кнопку имеете в виду, ресет? Или какую?
Любую пользовательскую кнопку, подключенную к цифровом пину, подключенную к аналоговому пину (вместе с другими кнопками), подключенную к сдвиговому регистру либо коммутатору, беспроводную кнопку, либо любую кнопку, подключенную любым известным науке способом.