Я извиняюсь за настойчивость, но это правда для меня важно.Это уже давно так. AP выкидывает неактивных клиентов. Китай фича.
Pvvx, возможно ли эту "фичу" убрать, или это нереально?
Я извиняюсь за настойчивость, но это правда для меня важно.Это уже давно так. AP выкидывает неактивных клиентов. Китай фича.
Конкретнее что там вам мешает?Я извиняюсь за настойчивость, но это правда для меня важно.
Pvvx, возможно ли эту "фичу" убрать, или это нереально?
Это я знаю, это не то.Отключение от AP ESP происходит когда station ESP соединяется с AP на другом канале. Канал меняется, а это SoftAP.
Сейчас еще раз проверил. Станцию ни к чему не подключаю. Подключаюсь только к АР.Вчера несколько часов был соединен свисток USB с AP и ничего не отключилось.
Поставьте старую версию SDK. У меня в винде такого не происходит и "чинить" нечего.1. Win10. При отсутствии обращений к страничке происходит отключение через примерно 3 минуты. "Свисток" - Realtek RTL8188EU. Пока обращения к страничке есть - соединение держится.
2. Андроид. Пока андроид не спит - соединение держится даже при отсутствии обращений к страничке. Как только засыпает - соединение пропадает. Но при пробуждении Андроид пересоединяется к АР сам, без дополнительных движений.
Поставил (1.5.2). Поведение такое же... значит, какой-то местный у меня эффект.Поставьте старую версию SDK.
Не в этом дело. Всё сложнее.@aloika, андроид наверно сам переподключается, а винда не хочет, может в ней какие настройки подкрутить.
Так как инициатор соединения не esp, то в ней ничего и не подкрутишь, по известной причине...
# ATPW=3
[MEM] After do cmd, available heap 101160+21992
# ATPN=TESP8266,0123456789
RTL8195A[Driver]: set ssid [TESP8266]
RTL8195A[Driver]: start auth to 1a:fe:34:fa:39:2d
RTL8195A[Driver]: auth success, start assoc
RTL8195A[Driver]: association success(res=1)
RTL8195A[Driver]: set pairwise key to hw: alg:4(WEP40-1 WEP104-5 TKIP-2 AES-4)
RTL8195A[Driver]: set group key to hw: alg:2(WEP40-1 WEP104-5 TKIP-2 AES-4) keyid:1
Interface 0 IP address: 192.168.3.2
Time at start 102310 ms.
[MEM] After do cmd, available heap 100000+21992
#
RTL8195A[Driver]: sta recv deauth reason code(2) sta:1a:fe:34:fa:39:2d
auto reconnect ...
RTL8195A[Driver]: set ssid [TESP8266]
RTL8195A[Driver]: start auth to 1a:fe:34:fa:39:2d
RTL8195A[Driver]: auth success, start assoc
RTL8195A[Driver]: association success(res=1)
RTL8195A[Driver]: set pairwise key to hw: alg:4(WEP40-1 WEP104-5 TKIP-2 AES-4)
RTL8195A[Driver]: set group key to hw: alg:2(WEP40-1 WEP104-5 TKIP-2 AES-4) keyid:1
Interface 0 IP address: 192.168.3.2
Time at start 160168 ms.
RTL8195A[Driver]: sta recv deauth reason code(6) sta:1a:fe:34:fa:39:2d
RTL8195A[Driver]: sta recv deauth reason code(6) sta:1a:fe:34:fa:39:2d
auto reconnect ...
RTL8195A[Driver]: set ssid [TESP8266]
RTL8195A[Driver]: start auth to 1a:fe:34:fa:39:2d
RTL8195A[Driver]: auth success, start assoc
RTL8195A[Driver]: association success(res=1)
RTL8195A[Driver]: set pairwise key to hw: alg:4(WEP40-1 WEP104-5 TKIP-2 AES-4)
RTL8195A[Driver]: set group key to hw: alg:2(WEP40-1 WEP104-5 TKIP-2 AES-4) keyid:1
Interface 0 IP address: 192.168.3.2
Time at start 231224 ms.
RTL8195A[Driver]: sta recv deauth reason code(6) sta:1a:fe:34:fa:39:2d
RTL8195A[Driver]: sta recv deauth reason code(6) sta:1a:fe:34:fa:39:2d
auto reconnect ...
RTL8195A[Driver]: set ssid [TESP8266]
RTL8195A[Driver]: start auth to 1a:fe:34:fa:39:2d
RTL8195A[Driver]: auth success, start assoc
RTL8195A[Driver]: association success(res=1)
RTL8195A[Driver]: set pairwise key to hw: alg:4(WEP40-1 WEP104-5 TKIP-2 AES-4)
RTL8195A[Driver]: set group key to hw: alg:2(WEP40-1 WEP104-5 TKIP-2 AES-4) keyid:1
Interface 0 IP address: 192.168.3.2
Time at start 271227 ms
ну так ведь:Поставил (1.5.2). Поведение такое же... значит, какой-то местный у меня эффект.
"Свисток" - Realtek RTL8188EU
Андроид сам может вайфай гасить когда спать ложится, в настройках нужно порыть и отключить это если не нужноБерем модуль RTL00 ... ESP выкидывает RTL
Там разговор не про Андроид, а WiFi SoC модуль с RTL871x.Андроид сам может вайфай гасить когда спать ложится, в настройках нужно порыть и отключить это если не нужно
function onOpen(evt) {
...
websocket.send("ovl$=0x245FF"); // ina226 CONFIG
function onMessage(evt) {
...
shunt = 2; // 2 мОм, 2512 - 1Вт максимум, sqrt(1/0,002)=22,36 А максимум для сопротивления
newval = (newval*2.5/shunt).toFixed(2); // Ток в мА, 2,5 мкВ/bit, 81,92 мВ максимум, 40,96 А предел измерения
...
newval = (newval*0.00125).toFixed(3); // Напряжение в В, 1,25 мВ/bit, 40,96 В предел измерения, 36В предел для ina226
if(i2c_init(ina_pin_scl, ina_pin_sda, 54)) { // (4,5,54); // 354
Наверно емкости или длина проводов мешают. 9 кОм мало для проводов более 10 см и нескольких устройств на 400 кГц I2C.Но когда цепляю на шину второе устройство, просто подключаю - без инициализации, пробовал температурный датчик - si7021 и i2c pwm - PCA9685, показания сбиваются, они начинают как-то мешать обмену по i2c, в чём может быть проблема?
Они предпочтительнее - там аппаратный I2C с DMARTL-ы до меня пока не дошли
reg_sct_bits_1(get_addr_gpiox_mux(MISO_PIN), 1<<GPIO_MUX_PULLUP_BIT, 0); // отключили PU у MISO
void ICACHE_FLASH_ATTR reg_sct_bits_1(volatile uint32 * addr, uint32 bits, uint32 val)
{
uint32 x = *addr;
if(val == 3) x ^= bits;
else if(val) x |= bits;
else x &= ~ bits;
*addr = x;
}
Длина минимальная, сантиметров 5 максимум. 9кОм мало в каком смысле, номинал нужно увеличить или уменьшить? i2c устройство прижимает линию к земле и чем больше скорость обмена тем меньше должно быть сопротивление подтяжки, чтобы фронт был круче.Наверно емкости или длина проводов мешают. 9 кОм мало для проводов более 10 см и нескольких устройств на 400 кГц I2C
volatile говорит компилятору не оптимизироватьзачем здесь volatile?
"Чтобы не засорять проект лишними именами, рекомендуется определять функции как статические. Это делается добавлением слова static перед заголовком функции. В результате чего областьПочему функция-обработчик прерывания определена как static void GPIOs_intr_handler(void) ?
Ну да, это понятно - просто сузить область видимости... А почему нет модификатора ICACHE_FLASH_ATTR ?"Чтобы не засорять проект лишними именами, рекомендуется определять функции как статические. Это делается добавлением слова static перед заголовком функции. В результате чего область
действия функции сужается и она становится доступной (видимой) только в текущем модуле (файле)." Романов Е. Л. http://ermak.cs.nstu.ru/cprog
По тому, что переменная указывает на регистр, а он имеет атрибут volatile. Компилятор при этом вставляет специальные команды, типа сброса "кешей" и т.д., кроме описанного в понятии volatile для СИ.Вопрос - зачем здесь volatile? А если без него, то что будет?
Обработчик прерывания не может размещаться в FLASH, поэтому и нет модификатора.Ну да, это понятно - просто сузить область видимости... А почему нет модификатора ICACHE_FLASH_ATTR ?
А не подскажете, где про это можно почитать подробнее?Обработчик прерывания не может размещаться в FLASH, поэтому и нет модификатора.
Так происходит и-зта того что флэш кэшируется и в какой то момент код обработчика прерываний может быть вытеснен из кэша. Когда возникает прерывание оно должно быть обработано немедленно и если в кэше этого кода нет - система упадет.
Учитывайте что во флэш не могут размещаться также и все функции вызываемые из обработчика прерываний.