Прошивка TCP2UART переходника с настройкой по Web

pvvx

Активный участник сообщества
у меня уарт настроен на 4мбита, вроде с этим проблем нет.
если всетаки доберусь и сделаю софтовое слежение за RTS, обязательно отпишусь о тестах.
Уже тестировалось десятки раз и в этом уже нет особого смысла, т.к. сама SDK в части WiFi + ограничения в HT20 WiFi + отсутствие DMA на UART + мало RAM, гласят - ESP8266 устарел.
 

aneox

Member
подскажите еще пожалуйста, RTS нога GPIO 15. при включении сейчас притянута резистором 10к к земле. Убирать его и будет работать внутренняя подтяжка есп? Вроде некоторый модули без подтяжки GPIO15 на землю не включаются или я ошибаюсь?
 

pvvx

Активный участник сообщества
подскажите еще пожалуйста, RTS нога GPIO 15. при включении сейчас притянута резистором 10к к земле. Убирать его и будет работать внутренняя подтяжка есп? Вроде некоторый модули без подтяжки GPIO15 на землю не включаются или я ошибаюсь?
Данный резистор, до 10 кОм, на GND не мешает. Без него модуль будет стартовать неверно...
Если установлен более 10 кОм, то внутренняя подтяжка пересиливает и в некоторых случаях модуль перезагружается неверно - виснет...
Возможно использование SWAP пинов UART... Но ESP8266 ужасен в плане стартовых комбинаций на GPIO - про это много раз писалось...
 

Encrypt

Member
Подскажите, возможно как-то отправлять отладочную инфу c esp8266 по wifi в монитор порта?
 

kab

New member
Подскажите, возможно как-то отправлять отладочную инфу c esp8266 по wifi в монитор порта?
А не проще "отладочную инфу" отправлять в файл на флэш - вместо (или вместе) с мемуарами?
А то ведь понадобится еще одно ESP, переходник UART, это подключить к компу, на новом ESP поднять вебсервер и принимать "отладочную инфу", перенаправляя её в serial.write
 

kab

New member
А не проще "отладочную инфу" отправлять в файл на флэш - вместо (или вместе) с мемуарами?
А то ведь понадобится еще одно ESP, переходник UART, это подключить к компу, на новом ESP поднять вебсервер и принимать "отладочную инфу", перенаправляя её в serial.write
Хотя, наверно, на самом компе можно поднять вебсервер, эмулировать COM порт, и переправлять "отладочную инфу" туда. Хотя за такой вариант я бы не взялся
 

Andy Korg

Moderator
Команда форума
@Andy Korg
Ну можно тогда более развернутый пример на источниках, доступных Вам?
Уточните пожалуйста, что вы хотите? Что бы на странице html периодически выскакивала информация которая попадает на порт UART1 ?
 

aneox

Member
Подскажите пожалуйста, что делаю не так.
Мне нужно чтобы по умолчанию, после сброса через ногу rx, flow control был активен и rts cts были настроены в обратном режиме(inverse)
Я полез в файл app/include/flash_eep.h и заменил строку 58, версия 0.5.9

было
Код:
#define UART0_REGCONFIG0DEF        0x000001C
стало
Код:
#define UART0_REGCONFIG0DEF        (0x000001C | 0x8000 | 0x100000 | 0x800000) //flow control with inverse
биты взял в том же файле

Код:
struct uartx_bits_config {
    uint32 parity         : 1;    //0  0x0000001
    uint32 exist_parity : 1;    //1  0x0000002
    uint32 data_bits     : 2;    //2..3  0x000000c
    uint32 stop_bits     : 2;    //4..5  0x0000030
    uint32 sw_rts         : 1;    //6  0x0000040 -
    uint32 sw_dtr         : 1;    //7  0x0000080 -
    uint32 tx_brk         : 1;    //8  0x0000100 -
    uint32 irda_dplx     : 1;    //9  0x0000200 -
    uint32 irda_tx_en     : 1;    //10 0x0000400 -
    uint32 irda_wctl     : 1;    //11 0x0000800 -
    uint32 irda_tx_inv     : 1;    //12 0x0001000 -
    uint32 irda_rx_inv     : 1;    //13 0x0002000 -
    uint32 loopback        : 1;    //14 0x0004000
    uint32 flow_en        : 1;    //15 0x0008000 rx + tx flow
    uint32 irda_en        : 1;    //16 0x0010000 -
    uint32 rxfifo_rst    : 1;    //17 0x0020000 -
    uint32 txfifo_rst    : 1;    //18 0x0040000 -
    uint32 rxd_inv        : 1;    //19 0x0080000
    uint32 cts_inv        : 1;    //20 0x0100000
    uint32 dsr_inv        : 1;    //21 0x0200000
    uint32 txd_inv        : 1;    //22 0x0400000
    uint32 rts_inv        : 1;    //23 0x0800000
    uint32 dtr_inv        : 1;    //24 0x1000000
    uint32 swap            : 1;    //25 0x2000000 // swap uart0 pins (u0rxd <-> u0cts), (u0txd <-> u0rts)
} __attribute__((packed));
как бы все сработало, но, все настройки стали сбрасываться к дефолтным при отключении и подачи питания.
меняю имя точки, все гуд, дергаю питание, имя сбрасывается
снятие галок flow control, rts inverse, cts inverse не помогает
 

pvvx

Активный участник сообщества
как бы все сработало, но, все настройки стали сбрасываться к дефолтным при отключении и подачи питания.
Отключите сброс настроек в меню или перепишите под свой вариант.
void ICACHE_FLASH_ATTR test_pin_clr_wifi_config(void) из web_iohw.c, вызывается в user_main.c : if(syscfg.cfg.b.pin_clear_cfg_enable) test_pin_clr_wifi_config();
 

aneox

Member
Отключите сброс настроек в меню или перепишите под свой вариант.
void ICACHE_FLASH_ATTR test_pin_clr_wifi_config(void) из web_iohw.c, вызывается в user_main.c : if(syscfg.cfg.b.pin_clear_cfg_enable) test_pin_clr_wifi_config();
в том то и дело, снимаю галку Checking pin WiFi cfg reset, дергаю питание, галка на месте.
Похоже модуль не сохраняет настройки во флеш, попробую другой
 

pvvx

Активный участник сообщества
в том то и дело, снимаю галку Checking pin WiFi cfg reset, дергаю питание, галка на месте.
Похоже модуль не сохраняет настройки во флеш, попробую другой
При первой прошивке желательно очистить область сохранения настроек в Flash (обычно область за 0x79000 в Flash). Глюки там возможны, если до того там имеются какие-то данные - FEEP боится их стирать - FEEP полной очистки не производит, т.к. расчет идет на то, что область работает с разными прошивками и хранит разные конфиги, например сохранения от другой прошивки с другими ID...
 
Последнее редактирование:

aneox

Member
При первой прошивке желательно очистить область сохранения настроек в Flash (обычно область за 0x79000 в Flash). Глюки там возможны, если до того там имеются какие-то данные - FEEP боится их стирать - FEEP полной очистки не производит, т.к. расчет идет на то, что область работает с разными прошивками и хранит разные конфиги, например сохранения от другой прошивки с другими ID...
похоже действительно глюк, прошил еще раз, все нормально, извиняюсь за ложную тревогу)

такое стирание надежно?
Код:
esptool.py --port /dev/tty.wchusbserial1a150 erase_flash
вообще стираю всегда, потому как скрипт прошивки у меня такой

Код:
#!/bin/bash
esptool.py --port /dev/tty.wchusbserial1a150 erase_flash
echo "need module restart"
sleep 5
esptool.py --port /dev/tty.wchusbserial1a150 write_flash 0x00000 0x00000.bin 0x07000 0x07000.bin
 

pvvx

Активный участник сообщества
похоже действительно глюк, прошил еще раз, все нормально, извиняюсь за ложную тревогу)
Тревога не ложная. На всех платах NodeMCU и прошивках такое явление является нормой. Там RESET подается два раза и четко попадает на сохранение настроек WiFi самой SDK, приводящее к полному дальнейшему бардаку в китайском WiFi драйвере. Не лечиться (свойство китай-SDK части сохранения конфигов WiFi). Средство только одно: как только увидели надпись NodeMCU - сразу в помойку, т.к. там обычно ещё встроено дцать глюков (наверно специально, чтобы "начинающие" не скучали :) ). Данные схемотехнического решения по ноге RESET скорированы и во многие другие dev-board по концепции Arduino.
 
Последнее редактирование:

aneox

Member
Тревога не ложная. На всех платах NodeMCU и прошивках такое явление является нормой. Там RESET подается два раза и четко попадает на сохранение настроек WiFi самой SDK, приводящее к полному дальнейшему бардаку в китайском WiFi драйвере. Не лечиться. Средство только одно: как только увидели надпись NodeMCU - сразу в помойку, т.к. там обычно ещё встроено дцать глюков (наверно специально, чтобы "начинающие" не скучали :) ).
нет нет, модуль есп-12 голый, ресет дергаю в ручную, прижав гпио-0 к земле перед этим, для стирания, и тоже самое перед прошивкой
 

pvvx

Активный участник сообщества
нет нет, модуль есп-12 голый, ресет дергаю в ручную, прижав гпио-0 к земле перед этим, для стирания, и тоже самое перед прошивкой
Видимо вручную и повторили это. Сохранения настроек в SDK не рассчитывает на отключение питания или RESET. Слишком слабая проверка и не все входные параметры сохранения проверяются при старте.
 
Сверху Снизу