Вопрос про внешние прерывания
- Войдите на сайт для отправки комментариев
Пнд, 19/03/2018 - 23:33
Подскажите, уважаемые.
Пытаюсь доделать под свои нужды проект.
https://ongroup.ru/energoeffektivnaya_gsm-signalizaciya_na_osnove_arduino_sborka_proshivka_test.html
У него есть большой недостаток - нет обратной связи, т.е. модем не может разбудить ардуину.
Я не долго думая подключил датчик к INT0, а INT1 к TX-у модема, задействовал 0-е и 1-е) прерывание.
... void wakeUp0(){//обработчик прерывания waked0=true; } void wakeUp1(){//обработчик прерывания waked1=true; } .... .... attachInterrupt(0, wakeUp0, CHANGE );/ // включить прерывание 0 attachInterrupt(1, wakeUp1, CHANGE ); // включить прерывание 1
НО
Почему-то при любом дёргании за любую из двух ног ардуины, срабатывают ОБА обработчика прерываний.
Что не так ?
а дергаете за какие ноги? Вы в курсе, что цифра 0 в коде
attachInterrupt(0, wakeUp0, CHANGE );
это номер прерывания, а не номер ноги ардуино?
а дергаете за какие ноги? Вы в курсе, что цифра 0 в коде
attachInterrupt(0, wakeUp0, CHANGE );
это номер прерывания, а не номер ноги ардуино?
Ноги D2 = INT0 и D3 = INT1
Кто ж знает что у вас там в коде? Скажем датчик будит, ардуина обменивается , срабатывает ТХ. Или наоборот - ТХ будит , ардуина опрашивает датчик и.т.д.
Попробуйте отключить все прерывания внутри прерываний ( не запретить ), перед засыпанием опять проинициализируйте прерывания.
Код секретный? Тогда разбирайтесь с ним сами. Хрустальные шары здесь запрещены. И что за датчик Вы тоже забыли написать.
Ок. благодаря вашим советам была найдена ошибка.
при пробуждении, я выключал подтяжки и из за этого срабатывало второе прерывание.
Теперь другой вопрос.
Если во время бодрствования (прерывания выключены), была активность модема, то после ухода в сон и пробуждения по прерыванию от датчика, срабатывает и обработчик активности модема.
Т.е похоже, что при бодрствовании устанавливается какой-то флаг, который обрабатывается только после ухода в сон и последующего пробуждения.
Код по-прежнему секретный? Ну, тогда по-прежнему разбирайтесь сами.
Код по-прежнему секретный? Ну, тогда по-прежнему разбирайтесь сами.
Ну почему бы не помочь.
b612, похоже, что при бодрствовании устанавливается какой-то флаг, который обрабатывается только после ухода в сон и последующего пробуждения.
Ну почему бы не помочь.
Потому что хрустальные шары запрещены. И нарушая запрет Вы рискуете.
Google, как удалить запись на форуме Arduino.ru?
Гугл активируется через "OKay, Google. <сюда пишите что надо>"
Так все и не надо.
КОгда вопрос нормально готовится, из кода выбрасывается всё лишнее, оставляется только то, что работает и демонстрирует проблему.
В коротком коде люди разберутся и подскажут.
Как-то так.