Аппаратные перывания

Тема в разделе "Arduino & Shields", создана пользователем Egorka123321, 28 окт 2018.

  1. Egorka123321

    Egorka123321 Нуб

    Всем доброго времени суток)
    Есть похожая вот на эту программу штука на Ардуино:
    Код (C++):
    void setup()
    {
      // что-то объявляем

    }

    void handler_0()
    {
      Flag_0 = !Flag_0;
      detachInterrupt(0);
    }

    void handler_1()
    {
       Flag_1 = !Flag_1;
       detachInterrupt(1);
    }

    void loop()
    {
      // кусок программы
      if(condition_1)
      {
         attachInterrupt(0, handler_0, CHANGE);
      }

      if(condition_2)
      {  
          attachInterrupt(1, handler_1, CHANGE);
       }
       // кусок программы
    }
    У меня несколько вопросов:
    1) Прерывания будут корректно работать в этой программе?) или их обязательно объявлять только в setup?
    2) Функция micros() "заметит", что часть времени ушло на выполнение обработчика, верно?
     
  2. parovoZZ

    parovoZZ Гуру

    1. Без разницы, где объявлять. Flag_x объявить с volatile. По поводу detach внутри прерывания под вопросом - слышал, что не работает. Сам не пробовал.
    2. Заметит.