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

EspLua вместо NodeMCU

wifi.setchannel(13)
Понял, нужно выключить питание (просто короткий reset не помогает ),
дождаться когда на WiFi анализаторе пропадет Ваша AP.
включить питание.
Помогает длинный reset ~10cек.
Видимо нужен реконект AP.
 
Последнее редактирование:
Привет Pxxv!
Почему вылетает на перезагрузку после 10-20 байт на приеме UDP.
На старых версиях все работало устойчиво, где может быть проблема?
UDP2UART:
Код:
print("Server UDP Port:"..set.portD)
srv=net.createServer(net.UDP)
srv:listen(set.portD)
srv:on("receive", function(srv, pl) tmr.wdclr()  uart.write(0,pl) end)
uart.on("data",0,function(data) srv:send(data)end, 0)
 

pvvx

Активный участник сообщества
ЧуднО как то (все по китайски) , два раза из 10 сработало , нужно после создания AP переключать или до того?
У Вас в проекте TCP2UART весело каналы скачут, а здесь что то...:(
Может в коде что не правильно?
Если AP не включена то да - будет беда.
Это wifi_set_channel(n) не пробовали? (я пока нет, т.к. старое работает, соблюдая кривые последовательности установки)
 

pvvx

Активный участник сообщества
Почему вылетает на перезагрузку после 10-20 байт на приеме UDP.
На старых версиях все работало устойчиво, где может быть проблема?
Возможно связано с тем, что загнал что-то не то в IRAM с DATA_IRAM_ATTR. Чуть позже погляжу...
-------
Связано со скоростью передачи в UART. Происходит повторное вхождение - повторно запускается net_socket_received(), а Lua ещё не вывела предыдущие байты.
Беда с тем, что SDK 'работает' почти одновременно с тормозной Lua.
Надо или ставить семафоры или переписывать net.с
При 4 ms, вывод "1234567890\r\n", 115200 тянет:
4ms.gif
При 3 ms - переполняется.
Всё это было и так в NodeMCU особенно в TCP.
 
Последнее редактирование:

nikolz

Well-known member
У вас спрашивали на данном форуме, но вы практически ни разу не ответили и не привели примеров или решений (хоть как альтернативу). Только анекдоты и прочий спам, да недовольства на то, что у других, за всё что они берутся - выходит с решением задачи :p
Вы думкаете, что вас из-за чего-то другого тут держат :)
Отвечу классикой:
-----------------------------
- Хочу предложить вам, - тут женщина из-за пазухи вытащила несколько
ярких и мокрых от снега журналов, - взять несколько журналов в пользу
детей Германии. По полтиннику штука.
- Нет, не возьму, - кратко ответил Филипп Филиппович, покосившись на
журналы.
Совершенное изумление выразилось на лицах, а женщина покрылась
клюквенным налетом.
- Почему же вы отказываетесь?
- Не хочу.
- Вы не сочувствуете детям Германии?
- Сочувствую.
- Жалеете по полтиннику?
- Нет.
- Так почему же?
- Не хочу.
 

pvvx

Активный участник сообщества
@Vladimir555:
0ms.gif :)
Код:
portD = 12345
print("Server UDP Port:"..portD)
srv=net.createServer(net.UDP)
srv:listen(portD)
srv:on("receive", function(srv, pl) uart.write(0,pl) end)
uart.on("data",0,function(data) srv:send(data)end, 0)
-------
Отвечу классикой:
- Не хочу.
Спасибо. Понятно, что писать на Lua не умеете.
 
Последнее редактирование:

pvvx

Активный участник сообщества
@Vladimir555 Версия 20150721:
Код:
> =wifi.getchl()
1
> =wifi.setchl(13)
true
> =wifi.getchl()
13
> =wifi.setchl(22)
false
-----
С примером tcp2uart пока плохо:
tcp2urat_lua.gif
Передает TCP:WiFi->TX хорошо, а RX->WiFi сплошные ошибки (такова реализация процедуры приема с UART в Lua/NodeMCU)
 
Последнее редактирование:
pvvx,
L259
Код:
static int wifi_getchannel( lua_State* L )
wifi_get_chl() = wifi.getchannel() ?
зачем продублировали L259, и синтаксис поменяли, было же красиво,
я же Вам показывал wifi.setchannel(), wifi.getchannel() :(?
RX->WiFi сплошные ошибки
я уже писал нужно увеличит буфер TX, RX хотя бы до 1024,
но в этой ревизии прошивки почему то не помогает.
 

pvvx

Активный участник сообщества
я же Вам показывал wifi.setchannel(), wifi.getchannel() :(?
Не знаю, проверил другие команды и как без false, если использовать условие?
Такие вещи, как понатыкали китайцы return luaL_error( L, "wrong arg type" ); - это не дает возможности использовать if.
wifi_getchannel не заметил :)
я уже писал нужно увеличит буфер TX, RX хотя бы до 1024,
но в этой ревизии прошивки почему то не помогает.
И не поможет. Пытался увеличивать буфер до 4-х кило в IRAM для UART, но бросил. Там затыки ещё дальше и не один. (пока время и желания не хватило это исправить)
А в случае приема/передачи по UART может переполнятся и буфер Lua.
К примеру, куда девать принятые данные, если TCP отвечает с задержками (плохая или далекая связь) или тормозит приемник?
Это исправляется только с RTS/CTS (да и уже реализовано в Web свалке и AT прошивке).
И объясните разницу - 1 байт буфер или 10 килобайт для рабочего алгоритма? :)
Подсказка - только в общей скорости передачи, если есть RST/CTS
 
Последнее редактирование:

pvvx

Активный участник сообщества
Где в этом проекте RTS/CTS выведены?:p
В каком? В NodeMCU это не доделано изначально. Поковырялись и бросили :)
Я пока тоже не собираюсь это доделывать в Lua. Пусть пока будет хромая при вводе RX данных, а то вдруг всё и сразу починим - так не интересно :) Как-бы рабочие примеры даны в других проектах - пусть кто прикрутит :)
Лучше пока SSL либу 'поламаю' для себя, а то там тормоза и ничего не работает.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Хотел спросить, в ESP8266 ADC и PWM-аппаратный.
Семплы 10 бит на 20 кГц. потянут?
Нет. В NodeMCU всё программное и худшей реализации как только было возможно слепить. :)
Это же "OPEN рекламный soft" о чем речь :) Её писатели не шарят в аппаратной части чипа.
ADC в чипе по типу SAR. Полу-программный. Период получения замера по умолчанию ~20 кHz, но устанавливается и другой.
ШИМ аппаратный есть по типу дельта-сигма, но один, с возможностью включения на любой порт i/o. Строб для счетчиков 80MHz.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Привет!
В "свалке" примеры как достучаться есть.?
Конкретнее пишите к чему, тогда ответить можно. Пример набора короткого Wav в свалке есть. Доступ у аппаратному ШИМ тоже.
А так, к примеру, в чипе есть возможность вывода любой битовой последовательности на вывод GPIO3 c дискретностью в 12MHz бит с использованием DMA.
Например с двойным интегратором 'сигма-дельта' кодированный звук http://www.beis.de/Elektronik/DeltaSigma/DeltaSigma.html
Как в проигрывателе HTTP-mp3:
На тупейший фильтр RC, как на видео картинке и записан на саунд компа в ролике :)
Аналогично выводятся сигналы и для ws2812, со стробом в 83 ns (тоже задается, но 12 это вроде макс с кварцем 26MHz)
Espressif секретничает с оборудованием чипа, но большая часть уже известна.
А NodeMCU умеет только кое как шевелить I/O и использует чип на 1% (только CPU на бездарный код).
 
Последнее редактирование:
Привет Pvvx!
Конкретнее пишите к чему, тогда ответить можно
Конкретности пока нет, оцениваю возможности.
Аналогично выводятся сигналы и для ws2812, со стробом в 83 ns
Вот эта функция 83ns выдает по DMA на GPIO3?
Код:
ws2812_strip( uint8_t * buffer, uint16_t length )
Доступ у аппаратному ШИМ тоже.
ткните, что то не нашел. :(
 

pvvx

Активный участник сообщества
Последнее редактирование:

NeoroN

Member
Почитал вас и понял что проект еще не готов...
А так вполне интересно получается. Будем подождать.
 
Сверху Снизу