• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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
 
Последнее редактирование:
Сверху Снизу