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

Нужна помощь Сброс модуля при выполнении onewire_search

3DMonstr

New member
Разработчики, требуется Ваша помощь. Я буквально пару дней назад приступил к изучению ESP и «влип» в одну проблему. При попытке произвести поиск устройств по 1-Wire (драйвер стянул из NodeMCU) модуль перезагружается. Понимаю, что это связано с длительной работой процедуры (18мс), хотя изначально грешил на GPIO (почему то у меня попытки назначить подтяжки тоже приводили к сбросу...). В результате заменил вызов onewire_search на пустой цикл задержки в 18мс, чтоб точно отделить мух от котлет. Результат — сброс модуля. Вот код «фонового цикла»:
static void ICACHE_FLASH_ATTR
MainLoop(os_event_t *events)
{
static char i = 0;
if (t10msFlag){
//Процедуры с периодом вызова в 10мс. Флаги могут пропадать из за долгого
//вызова. Критичные к джитеру вещи тут нельзя вызывать.

i++;
if (i & 0x80){
//DIRECT_WRITE_HIGH(13);
DIRECT_WRITE_HIGH(5);
}else{
//DIRECT_WRITE_LOW(13);
DIRECT_WRITE_LOW(5);
}

DSSensorsProc();

//Сбрасываем флаг
t10msFlag = 0;
}
//os_delay_us(1000);
system_os_post(MainLoopTaskPrio, 0, 0 );
}

Соответственно, таймер мне каждые 10мс взводит t10msFlag, функция DSSensorsProc — проходная, где самая большая задержка — как раз при вызове поиска. При этом сброс происходит в момент выхода из MainLoop. И сброс происходит не стразу, а модуль «тупит» пару секунд до перезагрузки. К сожалению, ничего толкового не нашел по решению этой пробелы. Посмотрел в NodeMCU, там поиск без всяких бубнов вызывается, в Ардуино он тоже без проблем работает.
Что можете посоветовать? Вот вывод на терминал:
J�
@�S:���N���Ds)�A#��Q*����������ɵ�starting...
Search finish!
Pause finish!
"��
�1s��j�:#����3}�9�BQ*�������љ����starting...
Search finish!
Pause finish!
"��
F�����`��R�
���BQ*�������������starting...
Search finish!
Pause finish!
��r��:6�;�;!G�A�S�H�BQ*����������ɵ�starting...
Search finish!
Pause finish!
 

3DMonstr

New member
Все, решил. Похоже, проблема в SDK. Переход на 1.3.0 помог, слегка допилил библиотеку. За 2 часа тестового прогона ни одного сброса.
 
Сверху Снизу