• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Новая реализация софтового ШИМ

Shara

New member
Изучая тему подключения четырёх сервоприводов к ESP8266, наткнулся на кастомную открытую реализацию софтового ШИМ, обеспечиваающую лучшую управляемость и эффективность. @pvvx, что скажете?

Статья
Github
 

pvvx

Активный участник сообщества
А я тут при чем? :) Обычный софт-шим на прерываниях от таймера, гуляющий/бьющий от использования ets_intr_lock() во многих процедурах SDK... не поддерживающий sleep и прочие режимы энергосбережения WiFi. Т.е. простейшая долбилка GPIO по прерыванию таймера.
 

de1m

New member
А я тут при чем? :) Обычный софт-шим на прерываниях от таймера, гуляющий/бьющий от использования ets_intr_lock() во многих процедурах SDK... не поддерживающий sleep и прочие режимы энергосбережения WiFi. Т.е. простейшая долбилка GPIO по прерыванию таймера.
А как работает оригинальный шим? Так-же?

Мне пришлось этот использовать, так как оригинальный работает только в диапазоне 0-90%, но он иногда моргает, что мне не очень нравится
 

pvvx

Активный участник сообщества
А как работает оригинальный шим? Так-же?

Мне пришлось этот использовать, так как оригинальный работает только в диапазоне 0-90%, но он иногда моргает, что мне не очень нравится
У 'оригинального' есть возможность использования NMI - тогда практически не моргает. Этот тоже можно включить на NMI...
 

de1m

New member
Похоже, что в этом есть какой-то минус раз они его по умолчанию не включают?
По-моему я где-то читал, что тогда другие прерывания не работают?
 

pvvx

Активный участник сообщества
Похоже, что в этом есть какой-то минус раз они его по умолчанию не включают?
По-моему я где-то читал, что тогда другие прерывания не работают?
Плохо читали. В NMI нельзя делать длительную обработку в самом прерывании - сбивает WiFi. Больше ограничений нет.
 

de1m

New member
Ага, ну на мигание диодом я думаю это пойдёт. Я ещё раз исходник посмотрел, но непоятно где это можно включить. Не подскажите как можно включить?
 

pvvx

Активный участник сообщества
Ага, ну на мигание диодом я думаю это пойдёт. Я ещё раз исходник посмотрел, но непоятно где это можно включить. Не подскажите как можно включить?
В стандартном SDK используйте NmiTimSetFunc(func)
или UDK -> C:\Espressif\ESP8266_SDK\driver_lib\driver\hw_timer.c
Что за вас всё искать? :)
Объясняю:
Берете программу, которая ищет в файлах *.h;*.c слово "NMI".
Натравливаете на каталог с SDK.
Получаете:
C:\Espressif\ESP8266_SDK\driver_lib\driver\hw_timer.c
C:\Espressif\ESP8266_SDK\include\ets_sys.h
Или так:
Снимок2.gif
 
Последнее редактирование:
Сверху Снизу