Страница 1 из 1
ESP8266 прерывания
Добавлено: 26 июл 2019, 21:28
Vibe
ни как не могу найти инфо как на этом модуле подключить скоростной счетчик. В боке есть выбор любого пина, но при заливке на ESP, плата постоянно перегружается. пробовал ставить задержку начала работы. перегружается ровно на эту задержку. еще пробовал 433 WL101-341 плату прикрутить, та же беда. не работает и все. пользовательские блоки вешают его на прерывание которого в описании модуля нет 0 или 1.
подскажите что тут я недопонимаю?
ардуинку суда добавлять, нет смысла, модуль должен справляться с задачей.
ESP8266 прерывания
Добавлено: 27 июл 2019, 17:21
Vibe
проверил на двух разных ESP, скечь пустой, только счетчик и отправка в юарт.
ответ такой:
ISR not in IRAM!
Abort called
>>>stack>>>
ctx: cont
sp: 3ffffdb0 end: 3fffffc0 offset: 01b0
3fffff60: 0016c821 00000000 3ffee250 4020145c
3fffff70: 00003381 00000001 3ffee250 3ffee2a8
3fffff80: 3fffdad0 00000000 3ffee230 401003da
3fffff90: 00000000 00000000 3ffee230 402010fc
3fffffa0: 3fffdad0 00000000 3ffee278 40201904
3fffffb0: feefeffe feefeffe 3ffe84f4 401006c5
<<<stack<<<
1» љщJш0
у меня ни каких мыслей не появляется, может кто то подскажет куда дальше копать?
Отправлено спустя 6 минут 4 секунды:
может так...
[spoiler]
extern "C" {
#include "user_interface.h";
}
bool _stou1 = 0;
bool _SCT_1_StDelSt = 0;
unsigned long _SCT_1_StDelTime = 0UL;
int _SCT_1_CPOP = 0;
void setup()
{
Serial.begin(9600);
pinMode(2, INPUT);
_SCT_1_StDelTime = millis();
}
void loop()
{
//Плата:1
//Наименование:Pagr
if(! _SCT_1_StDelSt) { if (_isTimer(_SCT_1_StDelTime, 5000)) {
_SCT_1_StDelSt = 1;
attachInterrupt(digitalPinToInterrupt (2), _SCT_1positiveCoutFunction, RISING );
}}
if (!(0)){if (!_stou1){Serial.println(_SCT_1_CPOP); _stou1=1;}} else {_stou1=0;}
}
bool _isTimer(unsigned long startTime, unsigned long period )
{
unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
}
void _SCT_1positiveCoutFunction()
{ _SCT_1_CPOP = _SCT_1_CPOP +1;
} [/spoiler]
ESP8266 прерывания
Добавлено: 27 июл 2019, 18:20
ecoins
Проверил Ваш скетч, и он у меня работает - кнопочку нажимаю на D4 - светодиод загорается, отпускаю - тухнет.
Проверял на NodeMCU-0.9
По Вашей ситуации - я её понимал до испытаний, но все же промоделировал - примерно так как Вы написали - перезагрузка, сообщения немного отличаются.
Теперь о причинах - они связаны с особенностью загрузки программы в ESP8266 при включении питания.
Требования к загрузке ESP8266 загруженного скетча: состояния пинов должны быть D3(0)=1; D4(2)=1; D8(15)=0.
В Вашем случае Ваша кнопка (или вход нормально замкнут) и потому ESP8266 не может загрузить скетч.
Поставьте нормально открытый контакт на D4(2) - куда Вы подключили кнопку, и будет работать.
А лучше выбрать другой пин.
Успехов.
ESP8266 прерывания
Добавлено: 28 июл 2019, 09:26
Vibe
спасибо за ответ,
дело не в загрузке. плата WeMos Mini и nodemcu. они рабочие, и скетч грузится при подключений. проверяю дописав код мигания светодиода. к пинам не подключал ничего. держу на usb проводе в воздухе. диод мигает ровно столько сколько прописал паузу на задержку начала работы скоростного счетчика. если удаляю его блок, все начинает работать как нужно.
ESP8266 прерывания
Добавлено: 28 июл 2019, 12:09
ecoins
Вы все же попробуйте сменить пин led с D4 на D5.
ESP8266 прерывания
Добавлено: 29 июл 2019, 21:08
Vibe
я наверно что то не до понимаю, но могу уверить что проверил все ноги и даже с минимальным кодом. скоростной счетчик на ESP не работает!!!
проверял прям так как на картинках.
может кто то подскажет как обойти этот счетчик другими методами?