Зона видимости отправки Post запроса при прерывании

Anton_A
Offline
Зарегистрирован: 27.03.2020

///Функция conected объявлена как глобальная с работой по прерыванию

void ICACHE_RAM_ATTR conected(){   ///проверяет соединение
   if (client.connect("192.168.1.50", 8069)) {
    Serial.println("Conection TRUE");
   }
   else{
    Serial.println("Conection FALSE");
   }
}

///Функция cout объявлена как глобальная с работой по прерыванию, вызывает conected()

void ICACHE_RAM_ATTR cout(){ 
 conected();
}

//***

в void setup()

attachInterrupt(digitalPinToInterrupt(cPin), cout, FALLING); //- по прерыванию

 

Вопрос!

"Conection TRUE" -  если функцию вызывать из любого места программы, кроме как описанного выше.

У меня всегда "Conection FALSE".

 

Общая задача - крутиться двигатель и нужно каждый 100 оборот отправлять post запрос.

Скорость двигателя не постоянная, иногда останавливается.

 

b707
Offline
Зарегистрирован: 26.05.2017

Подход в корне неверный.

Такие методы как client.connect() или Serial.print() нельзя использовать в функциях, вызываемых по прерыванию, так как эти методы сами используют прерывания.

Выставляйте в прерывании только переменную-флаг, а сам запрос отправляйте в ЛУПе

Anton_A
Offline
Зарегистрирован: 27.03.2020

b707 пишет:

Подход в корне неверный.

Такие методы как client.connect() или Serial.print() нельзя использовать в функциях, вызываемых по прерыванию, так как эти методы сами используют прерывания.

Выставляйте в прерывании только переменную-флаг, а сам запрос отправляйте в ЛУПе

Спасибо!