Виснет ардуино

Тема в разделе "Arduino & Shields", создана пользователем SunMaster, 29 июл 2022.

  1. Рокки1945

    Рокки1945 Гуру

    Во-во а ещё говорит, что у меня больная тема.
     
  2. parovoZZ

    parovoZZ Гуру

    На какой практике? Мировой? Так вот мировая практика говорит об обратном - в критически важных приложениях никаких МК. Я уже писал про очень простой блок ввода-вывода по последовательному порту от сименса - он на заказной плисине или асике (даже даташит на него не нашёл).
     
  3. KindMan

    KindMan Гуру

    Я тебя уважаю, как специалиста, но иногда реально путаешься в показаниях... Здесь речь про автопилот самолёта? Или МКС? Вроде это хоббийный форум... И у меня тоже несколько лет работает Ардуино на управление освещением без перезагрузок, как только я более-менее правильно написал код и правильно спаял схемотехнику, даже не будучи специалистом. А раньше тоже тоже глючило всё. Но, правда, Я никогда не грешил на МК или компилятор, знал, что все беды исключительно из-за кривизны моих рук и мозгов.
     
    SergeiL, SunMaster и arkadyf нравится это.
  4. parovoZZ

    parovoZZ Гуру

    Что такое зависание? Это бесконечно выполняющийся цикл, из которого МК не может выйти. Почему он происходит? Это может быть умышленное действие со стороны программиста. К примеру, в АВР и в архитектуре 8051 невозможно построить иначе работу программы. Это может быть ожидание какого-либо события. Например, мы ждём в цикле реакцию от внешнего устройства. Внешнее устройство не отвечает по какой-либо причине и мы получим зависание. Это может быть сбой программного счётчика из-за внешнего э/м импульса. Последний случай не предсказуем и для избегания его последствий прибегают к использованию независимых таймеров, коим и является вачдог. Для правильного использования вачдога необходимо в разных местах программы взводить флаги и затем в главном цикле их проверять. Если все флаги взведены, то сбрасываем вачдог и сбрасываем флаги. В более ответственных приложениях контролируется ещё и время взвода флагов. Для этого можно использовать самописные таймеры или оконные вачдоги (такие есть в новой серии AVR). Если флаг взведён раньше времени, значит что-то не так и мы уходим на сброс.
     
    Рокки1945 нравится это.
  5. parovoZZ

    parovoZZ Гуру

    всё верно. Программно исправлять косяки схемотехники - так себе занятие.

    автопилот самолёта вообще не имеет права зависнуть. Поэтому там нет никаких МК и процессоров.

    бортовой компьютер GPS спутника перезагружается раз в 20 секунд.

    есть уникумы, которые на дурине делают лифты. И они у них благополучно виснут. Хотя любой современный лифт при обнаружении любой неисправности просто обязан остановиться на ближайшем этаже, открыть двери и больше ни на что не реагировать.
     
  6. SunMaster

    SunMaster Нерд

    О боже @parovoZZ тебе же сказали, все рабоет, пускай это детский конструктор и что, здесь вопрос в другом, если проект может работать но отказал как устранить ошибку вот и всё, с тобой тут никто спорить не собирается, да и вообще всё это выглядит так что тебе говорят одно а ты говоришь за вообще сторонние вещи.
    У меня детский проект, он уж совсем простой, а технология ардуино довольно продвинутая, пускай и очень простая, и мне этого за глаза в моём проекте и я просто пришел сюда за подсказками и помощью
     
  7. SunMaster

    SunMaster Нерд


    А у него внутреннее прерывание есть??? так что бы если счетчик не обнулился он сам на ресет пошел, дабы не ждать посылок с али... Если не сложно пару слов о том как мне эту инфу найти, а лучше ссылку, а то меня поисковики часто не понимают, только через форум инфу и нахожу.
     
    Последнее редактирование: 31 июл 2022
  8. SunMaster

    SunMaster Нерд

    Объясню еще раз как я понимаю то что у меня в проекте произошло, несколько дней подряд на дисплее я видел одни и те же показания с датчика, будто бы они совсем не обновлялись, программно этот вопрос решить легко, я тогда подумал, может она повисла, ардуинка, но пришел к выводам послушать вас что это исключено, но тем не менее почему так вышло я не понял, и да всем спасибо за внимание, вы мне уже очень помогли.
     
  9. SunMaster

    SunMaster Нерд

    Я вообще подумал что если проблема не в зависании а просто в самом датчике к примеру, то следует просто создать проверку на повтор значения, если число в переменной считывания с датчика будет одним и тем же к примеру 10 раз подряд или будет весьма не существенно меняться то сделать ресет...
     
  10. parovoZZ

    parovoZZ Гуру

    У вачдога? Конечно, есть. Всё описано в даташите. Работу вачдога объяснял в какой-то своей теме.
    книга Евстифеева всё расскажет.

    к сожалению, без debug mode что там происходит никто сказать не сможет. Этот режим есть у всех, кроме дурины.

    проблема с датчиком, а зачем делать ресет МК? Это как протирать фары автомобилю, у которого не запускается двигатель.

    я прекрасно понимаю, о чём говорю. Начинать надо со схемотехники. Если работа с силовой частью, то схемотехника должна быть выверенной. Даже промышленные ПЛК всегда располагают отдельно от силовой части.
     
    Рокки1945 нравится это.
  11. Рокки1945

    Рокки1945 Гуру

    Вы же уже определились чьё мнение Вам импонирует... Зачем мне тогда в этой ветке отписываться?
     
  12. Рокки1945

    Рокки1945 Гуру

    Надо термостат с логикой. И если идет сигнал "isnan" с датчика - то выключаешь нагрузку и оповещаешь. Другое дело если контроллер завис - тогда да, но хватит и одного флага. А так да всё верно!
     
  13. Airbus

    Airbus Радиохулиган Модератор

    Можно доп.защиту от Дурака сделать. Кроме проверки датчика о чем писал выше. Анализируем принятые значения и если ОНИ ниже минимально возможных или выше то останавливаем работу и сигнализируем. Например аквариум. Минимальное значение допустим +18 Это комнатная температура. Максимальное +30 это чтоб рыб не сварить. И мониторим его в цикле чтоб принятое значение было в этом коридоре. Если пойдет фейк типа 127 (это помоему отрыв питания датчика) то работу останавливаем. Мин и Макс значения могут быть установлены согласно конкретного ТЗ
     
  14. parovoZZ

    parovoZZ Гуру

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

    вы напридумывали каких-то лишних сущностей, а потом жалуетесь, что всё виснет. Что вам мешает работать непосредственно с данными, которые выдаёт датчик? Датчик выдаёт исключительно цифры. Никаких строковых "isnan" у него нет. Создаёте скользящее среднее, вычисляете дифф. составляющую показаний и с ней работаете. Если показания меняются слишком быстро, подменяете их какими-то дефолтнымы с пометкой, что показания недостоверные. Запускаете временной счётчик для устранения неисправности. После его истечения уходите в аварийный режим (к примеру, периодический подогрев). Это нормальная практика для промки,
     
  15. Рокки1945

    Рокки1945 Гуру

    невалидное значение - тупо прописать в ПО диапазон, и выход из него будет значить и обрыв и кз и т.д
     
  16. Airbus

    Airbus Радиохулиган Модератор

    Дак а я за это и говорил
     
    Рокки1945 нравится это.
  17. DetSimen

    DetSimen Гик

    В любой непонятной ситуации - бухай. И не парься.
     
  18. Рокки1945

    Рокки1945 Гуру

    да-да я видел - это скорее Паровоззу ответ - он то не видел
    (дальше своего носа)
     
  19. b707

    b707 Гуру

    мужики, я не пойму что вы тут обсуждаете без кода?

    ТС. если хочешь разобраться. что у тебя происходит - сначала покажи свой код. Полностью.
     
    DetSimen нравится это.
  20. SergeiL

    SergeiL Оракул Модератор

    Обсуждаем, что паровоЗЗа опять понесло и он пытается упрекнуть всех самодельщиков в непрофессионализме, в использовании Ардуино в своих поделках, и в целом непригодности AVR и ESP в плане МК для домашней автоматики в плане надежности :)