• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Обработка прерываний, работает как то не так ?!?

tayanov

New member
Доброго дня. помогите разобраться. Обрабатываю прерывания.
Проблема в том что после первой обработки прерывания на последующие esp не реагирует.
Т.е. в мониторе после замыкания контактов изменения происходят единожды.
Облегченный код прилагаю.
(мне нужно посчитать количество прерываний по двум каналам.)
Код:
const int Pin = 12;
const int Pin2 = 13;
volatile int state0 = 0;
volatile int state2 = 0;



void setup() {
  delay(3000);
  Serial.begin(115200);
  pinMode(0, INPUT_PULLUP);
  pinMode(2, INPUT_PULLUP);
  attachInterrupt(Pin, coldimpulse, FALLING);
  attachInterrupt(Pin2, hotimpulse, FALLING);
  delay(50);
  Serial.println("Start");
  Serial.println();
  Serial.println("Start to work");
}

void coldimpulse() {
  Serial.println(".");
  Serial.println("Cold Interrupt");
  state0 =state0+1;
  pinMode(0, INPUT_PULLUP);
}

void hotimpulse() {
  Serial.println(".");
  Serial.println("Hot Interrupt");
  state2 =state2+1;
  pinMode(2, INPUT_PULLUP);
}






void loop() {
  Serial.print(".");
  Serial.print("cold-");
  Serial.print(state0);
  Serial.println("");
  Serial.print("hot-");
  Serial.print(state2);
  delay(400);
}



// функция положить холодный
void putcold()
{
 
  Serial.print("putcold procedure");
}



// функция положить горячий
void puthot()
{
 
  Serial.print("puthot procedure");
}
 
Сверху Снизу