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