#1 2017-12-31 07:06:32

Selen
Учасник
Зареєстрований: 2017-01-02
Повідомлень: 88

пара вопросов про прерывания на NodeMCU

Приветствую и с наступающим новым годом,

с прерыванием никогда ничего не делал и не эксперементировал, сейчас делаю автозауск с Nodemcu и здесь понадобился.
почитал как делается на ардуино в общем понятно, но остались вопросы.

на ардуино уно, ставится номер прерывания например 0 это пин 2. 
Вопрос, а на Nodemcu тоже номер или я должен указывать пин как на arduino due
примерно так?

attachInterrupt(4, function, CHANGE)


дальше второй вопрос,

скажем программа находится например на строке 236 и тут срабатывает прерывание. Прерывание обработало функцию brakePedal().
А дальше продолжит с 237 ?



может есть у кого простенький пример с использованием NodeMcu, прерывания и изменения переменых внутри функции прерывания.

Неактивний

#2 2018-01-02 22:34:02

Selen
Учасник
Зареєстрований: 2017-01-02
Повідомлень: 88

Re: пара вопросов про прерывания на NodeMCU

спасибо за ответ, но возник еще один, правда косвенно относящийся к прерыванию

все работает следущем образом, приходит сигнал - выполняется функция "запустить мотор" она долгая прогрев спиралей определение завелся ли мотор, передача данных на сервер и т. д.

мне нужно все отменить если вдруг нажата педаль тормоза или рычаг больше не на нетральной скорости.
я использую прерывание, но проблема в том что функция прерывания все отключит как и нужно, но по заключению вернется туда где была вызвана, Т. е. другими словами, в процессе запуска мотора, микроконтролер ждет прогрева спиралей и тут я нажимаю педаль тормоза- должно все отмениться, прерывание все отключит, но вернется к включению стартера в функции запуска мотора.
хотелось бы просто выйти из всех фукций оптимально было бы использовать goto но оно вроде работает только внутри функции. не хочется в функции запуска мотора, после каждой строчки писать условия проверки.

Неактивний

#3 2018-01-05 21:39:47

alex_dol
Учасник
Зареєстрований: 2015-12-28
Повідомлень: 196

Re: пара вопросов про прерывания на NodeMCU

Функция обработки прерывания не должна быть большой и отключать ней что-то тоже не желательно. Достаточно чтобы обработчик прерывания просто устанавливал флаг, например, brakePedalFlag = 1. А в самой функции запуска мотора вставляете в нужные места, а не после каждой строчки проверку флага brakePedalFlag и корректно глушите мотор.

Неактивний

#4 2018-05-01 16:29:40

ДенисRulf
Гість

Re: пара вопросов про прерывания на NodeMCU

Может подскажите или подскажите где найти информацию. Есть скетч для Arduino:
ISR (TIMER0_COMPA_vect)      //функция, вызываемая таймером-счетчиком каждые 0,001 сек
{
  if(timerOn == 1)                //если таймер включен
  {
      timer++;                    //увеличение значения таймера на +1 каждые 0,001 сек
  }
  if(alarmTimerOn == 1)
  {
      alarmTimer++;
  }
 
  if(tempTimerOn == 1)
  {
      tempTimer++;
  }
}
Как реализовать аналогичное на NodeMCU ?

#5 2018-05-01 17:10:10

Вячеслав Азаров
Учасник
Зареєстрований: 2017-05-25
Повідомлень: 1,732

Re: пара вопросов про прерывания на NodeMCU

ДенисRulf пише:

... Как реализовать аналогичное на NodeMCU ?

Не так просто как для АVR. Вам придется вникнуть в архитектуру аппаратуры и фирмварэ ESP8266, и отыскать решение самому. Воспользуйтесь, как примером, модуем системного таймера: ~/.arduino15/packages/esp8266/hardware/esp8266/2.3.0/cores/esp8266/core_esp8266_timer.c   

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму