Yl-63, прерывания, множество результата

Тема в разделе "Arduino & Shields", создана пользователем MemoryOver, 9 ноя 2020.

  1. MemoryOver

    MemoryOver Нуб

    Здравствуйте, возникла проблема касательно датчика YL-63. По прерыванию датчика в ком порте должно отображаться ОДНО сообщения, а у меня по прерыванию там творится хаос, и отображается КУЧА сообщений. Может у кого то была такая проблема, или у кого-то есть идеи как это можно решить. На изображении предоставлен код и результат по ОДНОМУ прерыванию.[​IMG]
     
  2. parovoZZ

    parovoZZ Гуру

    сколько сообщений, столько и прерываний. Возможно, надо изучить что-то, чтобы это осознать...
     
  3. Nekto_nikto

    Nekto_nikto Гик

    Судя по коду и результату, у вас из обработчика прерывания YL_63 программа не выходит вообще и молотит там вывод значения функции millis() в цикле. Возможно у функции millis() возникает какой то конфликт при вызове ее внутри прерывания и из-за этого ваша программа не работает как задумывалось. Конфликт может возникать, если внутри обработчика вызываемой функции происходит вызов другого прерывания, без обработки которого, данный код не обрабатывается. Попробуйте сделать так
    Код (C++):
    sti;
    serial.println(millis());
    плюс ко всему выше написанному, обратите внимание, что у вас результат выводится одинаковый для значения функции, которое переполняется дней пять.
     
    Последнее редактирование: 10 ноя 2020
  4. akl

    akl Гуру

    внутри прерывания ваще лучше ни миллис ни сериал.принт не использовать. достаточно взвести флаг, а отправлять всё уже из лупа по факту этого флага

    хотя, если оно не просто зависает, а продолжает спамить - то значит скорее всего дело в датчике. но в любом случае лучше в прерывании всю эту фигню не делать.
     
    Последнее редактирование: 10 ноя 2020
  5. Un_ka

    Un_ka Гуру

    Может оно дребезжит?
     
  6. parovoZZ

    parovoZZ Гуру