Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Общие баги/глюки/проблемы в пакете Sming

Тема в разделе "Sming Open Source Framework", создана пользователем JustACat, 23 мар 2015.

  1. JustACat

    JustACat Moderator Команда форума

    Сообщения:
    568
    Симпатии:
    121
    verzi, а, так у вас же там еще и ШИМ, чего-то я вчера упустил этот момент. Да, думаю, что с ШИМ'ом могут быть проблемы... Честно говоря, я шим не пробовал на ESP - что ADC, что PWM обычно делаю чем-то снаружи...
    Тут нужно выяснять детальнее, подождем @anakod'а.
     
  2. verzi

    verzi Новичок

    Сообщения:
    23
    Симпатии:
    1
    Обидно что столкнулся с проблемой в таком месте в котором ее совсем не ожидал. В nodemcu шим более менее стабильный, а тут такое. Сейчас пробую прикрутить ардуино мини для управления шимом.
     
  3. anakod

    anakod Moderator Команда форума

    Сообщения:
    314
    Симпатии:
    100
    verzi, я все еще считаю что дело в чем-то другом.
    1. Попробуйте сменить GPIO2 на другой пин (подобную проблему кто-то уже наблюдал ранее)
    2. Для ШИМ есть встроенная функция analogWrite, Ваш код не очень похож на классический ШИМ. Вы уверены что это правильный подход?
    3. Приведите полный выходной лог работы программы с COM порта
     
  4. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.441
    Симпатии:
    1.320
    @anakod Имеющийся ШИМ на прерывании по таймеру работать правильно не может. В новых SDK чаше встречается ets_intr_lock().
    Отличие NodeMCU и sming = СИ и C++. В pvPortMalloc, vPortFree и т.д. стоит ets_intr_lock() и если C++ часто запрашивает память для объектов, то дело такое...

    И кто-бы рассказал, чем GPIO2 отличается от другого порта ? :)
     
    Последнее редактирование: 11 май 2015
  5. verzi

    verzi Новичок

    Сообщения:
    23
    Симпатии:
    1
    Другие пины я пробовал. Использую как раз analogWrite. Тот код что я привел состоит собственно из примера FtpServer и слегка модифицированного Basic_Blink. Просто использую не digitalWrite, а analogWrite. Подобных примеров полно в мире ардуино. В моменты когда идет передача данных по ftp (да и по http тоже собственно) начинает люто моргать. Проблемы с железом я могу полностью исключить, потому что сразу после этого кода заливал прошивку на lua, использующую и шим и передачу данных. Светодиод при этом ведет себя адекватно.
     
  6. anakod

    anakod Moderator Команда форума

    Сообщения:
    314
    Симпатии:
    100
    Насколько помню в более свежих СДК реализация ШИМ в примерах от китайцев тоже была обновлена но я еще не вникал.

    Т.е. на новых СДК ШИМ будет работать хуже чем на старых?

    Кстати, насколько я понимаю, в чипе есть еще как минимум один аппаратный ШИМ? Вы не подскажите где можно почитать о нем информацию?

    Да, прерывания могут быть причиной. Но поверьте Си++ память не выделяет сам по себе. И new фактически эквивалентен malloc. Неужели NodeMCU построен только на статических объектах?

    В главном топике проскакивало - у кого-то были проблемы. (Может быть с питанием?)


    UPD И еще, я бы пожалуй, предложил отключить вывод отладочной информации в Serial, мне кажется это может оказать очень существенное влияние в данном вопросе.
     
    Последнее редактирование: 13 май 2015
  7. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.441
    Симпатии:
    1.320
    Не уверен, но есть подозрения. Надо пробовать - поставить тест на прерывание аппаратного таймера 0 на 10 us с коммутацией какого I/O и смотреть логическим анализатором или осциллографом пропуски.

    Практически - да, только на статических. Память запрашивается очень редко и большими кусками. А кол-во кусков может сказаться на времени их разбора с отключенными прерываниями в процедурах mem... Тут надо глядеть реализацию распределителя памяти...
    Когда измерял потребление, то показалось или так и есть - когда идут запросы памяти, то потребление модулем сильно повышается. От этого и подозрения... Ведь всё в системе построено на вызове ets_run(), а там (в ROM-BIOS) всё стоит на waiti, ожидая прерывания и далее выполнения назначенного системного callback-а и снова на waiti.
    Вот тут вечно сидит CPU:
    Код (Text):
    1.  
    2. ROM:40000F65                     waiti           0
    3. ROM:40000F68                     call0           ets_intr_unlock
    4. ROM:40000F6B                     j               loc_40000F4F
    The WAITI (Wait for Interrupt) instruction, which is a part of the Interrupt Option, saves
    power by setting the current interrupt level, powering down the processor’s logic, and
    waiting for an interrupt.
     
    Последнее редактирование: 13 май 2015
  8. waskez

    waskez Новичок

    Сообщения:
    18
    Симпатии:
    3
    Проблему ШИМ решил с помощью NE555 (временно). Настроил на 38 kHz и дёргаю GPIO2 выход RESET NE555.
     
    JustACat нравится это.
  9. anakod

    anakod Moderator Команда форума

    Сообщения:
    314
    Симпатии:
    100
    Прекрасно, выложите потом свои наработки посмотреть?
     
  10. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.212
    Симпатии:
    388
    Недавно появился такой документ 0B-ESP8266 Hardware User Guide EN там на странице 18 сказано, что ESP8266 поддерживает IRDA на GPIO5
    documentation (раскрыть)

    The functionality of IRDA interfaces can be implemented via software programming. NEC coding,
    modulation, and demodulation are used by this interface. The frequency of modulated carrier signal
    is 38KHz, while the duty ratio of the square wave is 1/3. The length of data transmission, which is
    around 1m, is determined by two factors: one is the maximum value of rated current, the other is
    internal current-limiting resistance value in the infrared receiver. The larger the resistance value, the
    lower the current, so is the power, and vice versa. The transmission angle is between 15° and 30°,
    and is mainly determined by the radiation direction of the infrared receiver.
    Notes:
    Among the eight interfaces mentioned above, most of them can be multiplexed. Pin definitions that
    can be defined is not limited to the eight ones herein mentioned, customers can self customise the
    functions of the pins according to their specific application scenarios. Functions of these pins can be
    implemented via software programming and hardware.

    Может ваш проект можно сделать более изящно, хоть и ESP-01 для этого и не очень удачный кандидат :)
     
    JustACat нравится это.
  11. verzi

    verzi Новичок

    Сообщения:
    23
    Симпатии:
    1
    Все так же не работает Wi-Fi. Тут на четвертой странице об этом было. Приходится ставить Espressif-ESP8266-DevKit-v2.0.2-x86.exe. С более новыми версиями к роутеру не подключается.
     
  12. anakod

    anakod Moderator Команда форума

    Сообщения:
    314
    Симпатии:
    100
    verzi, было в старой версии Sming, т.к. Espressif сломал совместимость с Open LWIP: https://github.com/kadamski/esp-lwip/issues/7
    В последних версиях Sming все ок, т.к. сейчас он временно переведен на закрытую версию LWIP. Как тестировали?

    UPD Возможно у Вас старая версия Make файла скопированная из предыдущей версии Sming? В таком случае достаточно заменить "openlwip" на "lwip", но можно обновить и makefile целиком.
     
  13. verzi

    verzi Новичок

    Сообщения:
    23
    Симпатии:
    1
    Вчера установил последнюю версию сминга через choco. Проект мой основан на примере meteo control, т.е. настройка сети от туда. И собственно Wi-Fi не заработал. Раньше писали что он сломан в новой версии sdk, 1.0.1b кажется. Make файл точно, старый. Сейчас попробую сделать как Вы сказали. Спасибо.
     
  14. verzi

    verzi Новичок

    Сообщения:
    23
    Симпатии:
    1
    Заменил "openlwip" на "lwip", Wi-Fi заработал, но минут через 5 esp виснет. Пробовал откатиться на старый sdk, тоже самое. Если вернуть openlwip обратно (естественно со старым sdk), то все ОК.
    1.png
    Почитал то что раньше написали. Надо было конечно с этого начинать. В общем моя проблема уже не нова, как я понял. Буду пока openlwip использовать.
     
    Последнее редактирование: 18 май 2015
  15. JustACat

    JustACat Moderator Команда форума

    Сообщения:
    568
    Симпатии:
    121
    @anakod, есть идеи, что с этим делать и как быть? Сам пока сижу на старом SDK... И думаю, стоит ли обновляться.
    Но хотелось бы для новых пользователей что-то решить, кто с нуля ставит (и, соответственно, автоматом получает именно новую версию SDK).
     
  16. Okadzaki

    Okadzaki Новичок

    Сообщения:
    24
    Симпатии:
    2
    Нашел глюк в SystemClock. При установке таймзоны +3 (3.0 задавал) , от полученного времени из NTP оно отнимает 3 часа, а не инкрементирует. При установке -3, всё работает как положено.
    Time : 24.05.2015 21:11:43
    UTC Time:25.05.2015 00:11:43

    При:
    SystemClock.setTimezone(-3.0);
     
  17. anakod

    anakod Moderator Команда форума

    Сообщения:
    314
    Симпатии:
    100
    Да там в пулл реквестах были ошибки. Но не беспокойтесь, по этой части уже зреет новый комит :)
     
    Okadzaki нравится это.
  18. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.441
    Симпатии:
    1.320
    @anakod - запустил свой правленый OpenLwip v1.4.0 со своим web с кусками от SDK 1.1.0 + новый свой eagle_lwip_if.c. На первый взгляд всё работает и смещения в структурах соответствуют.
    Могу кинуть куда, только всё в куче, всю свалку web c Openlwip 1.4.0... В общей версии я пока не использую правленый Openlwip 1.4.0...
    Кинул пока тут: Версия с OpenLwIP 1.4.0 на SDK 1.1.0
     
    Последнее редактирование: 26 май 2015
  19. anakod

    anakod Moderator Команда форума

    Сообщения:
    314
    Симпатии:
    100
    pvvx, большое спасибо. Да мне было бы очень интересно, если Вы подскажите что нужно менять, я бы хотел отправить пулл-реквест или просто подсказку автору проекта (т.к. он сам не смог разобраться), а мне бы хотелось чтобы этот проект был продолжен и в дальнейшем включен в новый открытый SDK как замена эспрессифскому черному ящику.
     
  20. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.441
    Симпатии:
    1.320
    Главный файл дан - eagle_lwip_if.c. Передайте его kadamski и всё.
    Описать что менял не знаю как - просто загнал коды в IDA, взял его старый файл и переписал чтобы совпадали имена по дизасму SDK 1.1.0 для его СИ. Каждая версия SDK от китайцев всегда имеет отличия... :) Я уже говорил - мне всё равно какой язык программирования - пару часов макс потыкаться и можно на нем писать :) Коды и алгоритмы у автоматов сочиненных людьми мало отличаются... Призма восприятия всегда одна и та-же. Исключения очень редки.
    Файл asm-a того куска из IDA тоже приложил - eagle_lwip_if.ida.asm.
    Да, а чем вам не равится Lwip v1.4.0? Столь обязательно 1.4.1? :)
     
    Последнее редактирование: 26 май 2015

Поделиться этой страницей