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

как убрать моргание диодов при подаче питания на esp-12f

Arthur

Active member
Почитайте хоть форумы по МК. А то вы начнете опять древние холивары по поводу кто круче Atmelили … Нет больше Atmel – не пользуется спросом в эмбедед.
Да и не думал холиварить - Я не фанат Atmel, хоть с них и начинал...
 

vad7

Active member

pvvx

Активный участник сообщества
I2S в вебсвалке с самого начала не работал, проверил уже. :)
А он там разве был? :confused: Он был в MP3.
В web-свалке кроме описания указателя на регистры i2s ничего по данном вопросу нет.
Не нужен он мне там. Кодеки в качестве DAC плохо работают.
 

pvvx

Активный участник сообщества
Как Вы это смогли найти? :)
Поиск по "rtl8711" на Ali выдаёт всего 1 результат, но зато по "rtl8711" выдало 3 результата.
Вы что, все возможные комбинации в поиске перепробовали? :)
Вам список названий модулей дан в нескольких темах. Перебираете по очереди. :)
Module RTL00(RTL8710AF), F11AMIM13 (RTL8711AM), F11AFIM13-B1 (RTL8711AF)
PADI (RTL8710AF), F10AFIM13-B1 (RTL8710AF), TinyCon2005-A-BE (RTL8711AF),
WFM-400 (RTL8711AM), WFM-410 (RTL8711AF), WFM-250 (RTL8195AM),
AW-CU238, AW-CU239 (RTL8711AM), AW-CU245, AW-CU245, AW-CU245 (RTL8711AM/RTL8195AM/RTL8711AF),
WG6611 (RTL8711AM), RAK473 (RTL8711AM), RAK474, RAK476 (RTL8711AF), ...
Это только половина - многие лень вставлять и искать производителей...
 

pvvx

Активный участник сообщества
Ну да, теперь это так можно обосновать. :)
Просто, что-то не учли, с кем не бывает.
В mp3 же не урезанный SDK.
С другой стороны, как вообще I2S можно отключить...
Я что-то не пойму - вам нужен i2s - возьмите и впишите. При чем тут web?
Вы бегаете за мной с какой-то непонятной никому вашей бедой?
Кто и чего не учел? При чем тут урезанный или не урезанный SDK?
Вы можете выразитьcя технически правильно или надо догадываться по вашим путанным высказываниям?
 

pvvx

Активный участник сообщества
Цена чипа $0.9
Текущий SDK поддерживает:
8711AM
8195AM
8711AF
8710AF
8711AN - неизвестный зверь
8710AM
Эти - #define RTL8195A_SUPPORT 1
BN - #define RTL8711B_SUPPORT 1
Ferralabs - Realtek показала на CES 2017 новинки для "умного дома"

Cost-Effective Wi-Fi IoT SoC (RTL8711BN, RTL8710BN)
Realtek’s RTL8711BN/RTL8710BN SoC comes in a miniature module package size (5x5 QFN). It provides simultaneous connection to multiple cloud services and features eXecute In Place (XIP), run-time security, and code flash protection.
 
Последнее редактирование:

vad7

Active member
Я что-то не пойму - вам нужен i2s - возьмите и впишите. При чем тут web?
В других темах писал уже подробнее:
При любом доступе к памяти (регистрам) I2S, например,
CLEAR_PERI_REG_MASK(I2SCONF, I2S_I2S_RESET_MASK);

Вылетает ексепшн LoadProhibitedCause:
Fatal exception (28):
epc1=0x40230bd7, epc2=0x00000000, epc3=0x00000000, excvaddr=0x02190000, depc=0x00000000

Этот же код на UDK работает нормально.
 
Последнее редактирование:

Arthur

Active member
Цена чипа $0.9
Текущий SDK поддерживает:
8711AM
8195AM
8711AF
8710AF
8711AN - неизвестный зверь
8710AM
Эти - #define RTL8195A_SUPPORT 1
BN - #define RTL8711B_SUPPORT 1
Ferralabs - Realtek показала на CES 2017 новинки для "умного дома"

Cost-Effective Wi-Fi IoT SoC (RTL8711BN, RTL8710BN)
Realtek’s RTL8711BN/RTL8710BN SoC comes in a miniature module package size (5x5 QFN). It provides simultaneous connection to multiple cloud services and features eXecute In Place (XIP), run-time security, and code flash protection.
Что-то не нашёл ни на таобао, ни на али, по запросам RTL8711BN и 8711BN...
  • 抱歉!没有找到与“RTL8711BN”相关的宝贝,我们为您找到了:“rtl 8711”的搜索结果
 

pvvx

Активный участник сообщества
В других темах писал уже подробнее:
При любом доступе к памяти (регистрам) I2S, например,
CLEAR_PERI_REG_MASK(I2SCONF, I2S_I2S_RESET_MASK);

Вылетает ексепшн LoadProhibitedCause:
Fatal exception (28):
epc1=0x40230bd7, epc2=0x00000000, epc3=0x00000000, excvaddr=0x02190000, depc=0x00000000

Этот же код на UDK работает нормально.
И ?
беда то в чем? Криво написали программу или не те опции трансляции даете?
Web то и я тут при чем? Должен научить писать на СИ или как пользоваться компилятором?
Номер ошибки и адрес никому, кроме вас ничего не скажут. Исходники существуют только у вас, а команда перевода в асм кодов в вашем проекте в батничке и в полученном листинге можно поглядеть где происходит протектед в вашем коде.
 

Arthur

Active member
Обстоятельно расписали...
Прочёл раздел "Основные цели данной "свалки":", но так и не понял одного - какое практическое применение может быть у этой штуки? В плане коммерческого проекта, Я имею в виду...
Кто-нибудь что-нибудь на ней уже сделал, что смог продать потом и получить более-менее солидный профит?
 

vad7

Active member
И ?
беда то в чем?
Web то и я тут при чем?
Модуль падает на указанной строчке в момент записи в область памяти (регистры) I2S.
При чем здесь моя программа? Не важно вообще где этот код находится и в какой версии свалки - падает всегда.
Я не знаю уже как подробнее описать - берем любую версию свалки, вставляем в любое место код доступа к I2S и на первой команде доступа к регистрам I2S - эксепшен.
Тот же код вставляем в любой пример из UDK - работает.

#include "hw/i2s_reg.h"

#define i2c_bbpll 0x67
#define i2c_bbpll_en_audio_clock_out 4
#define i2c_bbpll_en_audio_clock_out_msb 7
#define i2c_bbpll_en_audio_clock_out_lsb 7
#define i2c_bbpll_hostid 4


rom_i2c_writeReg_Mask(i2c_bbpll, i2c_bbpll_hostid, i2c_bbpll_en_audio_clock_out,
i2c_bbpll_en_audio_clock_out_msb, i2c_bbpll_en_audio_clock_out_lsb, 1);

CLEAR_PERI_REG_MASK(I2SCONF, I2S_I2S_RESET_MASK); // <- exception here

SET_PERI_REG_MASK(I2SCONF, I2S_I2S_RESET_MASK);
CLEAR_PERI_REG_MASK(I2SCONF, I2S_I2S_RESET_MASK);

WRITE_PERI_REG(I2SCONF, (READ_PERI_REG(I2SCONF) & 0xf0000fff)|
(((26&I2S_BCK_DIV_NUM )<<I2S_BCK_DIV_NUM_S)|
((5&I2S_CLKM_DIV_NUM)<<I2S_CLKM_DIV_NUM_S)|
((1&I2S_BITS_MOD) << I2S_BITS_MOD_S ) ) );

PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, FUNC_I2SO_BCK);
SET_PERI_REG_MASK(I2SCONF, I2S_I2S_TX_START);

Old reset: Fatal exception (28):
epc1=0x402307c2, epc2=0x00000000, epc3=0x00000000, excvaddr=0x02190000, depc=0x00000000

Дамп:
CLEAR_PERI_REG_MASK(I2SCONF, I2S_I2S_RESET_MASK); // <- exception here
402307bb: ffe521 l32r a2, 40230750 <dbg_set+0x90>
402307be: 2258 l32i.n a5, a2, 8
402307c0: 2238 l32i.n a3, a2, 8
402307c2: 0348 l32i.n a4, a3, 0
402307c4: 037c movi.n a3, -16
 

pvvx

Активный участник сообщества
Old reset: Fatal exception (28):
epc1=0x402307c2, epc2=0x00000000, epc3=0x00000000, excvaddr=0x02190000, depc=0x00000000

Дамп:
CLEAR_PERI_REG_MASK(I2SCONF, I2S_I2S_RESET_MASK); // <- exception here
402307bb: ffe521 l32r a2, 40230750 <dbg_set+0x90>
402307be: 2258 l32i.n a5, a2, 8
402307c0: 2238 l32i.n a3, a2, 8
402307c2: 0348 l32i.n a4, a3, 0
402307c4: 037c movi.n a3, -16
epc1=0x402307c2 -> l32i.n a4, a3, 0
Снимок1270.gif
Видите -
Снимок1271.gif
никаких падений при чтении данного регистра...
Сообразили где ошибка у вас?
Может ещё код бейсика с Синклера web-свалка должна поддерживать?
Уточняю - в web-свалке, ради экономии размера кода и повышения производительности не поддерживаются макросы и прочие обращения к регистрам вызывающие длинный и никчемный код, обходя недоделанность бесплатного gcc на данный процессор. Просто другая концепция обращения к портам ради оптимизации - это расписано во множестве сообщений на форуме... даже в темах UDK.
Вам следует поменять заголовки и инклуды или немного модифицировать их, чтобы процессор использовал работу с регистрами со смещением и не вставлял каждый раз memw, который ему не нужен - он не многоядерный, и не плодил пачками на каждый адрес обращения константы в памяти. Если сделаете правильно - то будет загружен всего один указатель и далее команды работы с ним со смещениями, а не сотни лишних команд и загрузок указателей, которые в сегменте кода данный GCC оптимизировать не умеет и его обошел через линкер :) Компилятор физически не знает где эти регистры - у него есть только указатели на массивы которые он положит в память всего один раз и будет вынужден использовать команды работы со смещением, тем самым оптимизируя и уменьшая размер кода. Это типа гланды через ... но оптимизация работает только через неё с бесплатным GCC.
Вы пытаетесь запустить код от Espressif, использующих платный компилятор GCC. На имеющихся он вызывает совершенно неоптимальный код. Детям то всё равно и они его разносят и пихают куда угодно не о чем не думая. Web свалка это не позволяет :p
Если у вас совпали названия из хидеров и что-то там скомпилилось - какое это отношение имеет к web-свалке? :)
 
Последнее редактирование:

vad7

Active member
@pvvx, другими словами, опуская привычный уже хамоватый тон pvvx:
в свалке нужно закомментить место описания констант I2S в esp8266.h и взять i2s_reg.h из примера espressif mp3 decoder.
После этого заработало!

PS. Вы хоть обновите на githab, чтоб другие потом не мучались...
 

pvvx

Активный участник сообщества
@pvvx, другими словами, опуская привычный уже хамоватый тон pvvx:
в свалке нужно закомментить место описания констант I2S в esp8266.h и взять i2s_reg.h из примера espressif mp3 decoder.
После этого заработало!

PS. Вы хоть обновите на githab, чтоб другие потом не мучались...
Не буду - web-свалка делалась не ради пользования, а ради поглядеть - потянет ли данный кубик к 60 одновременно открытых TCP и файловых указателей и подобного... Т.е. в целях опытов и нахождения ограничений и даже не для копирования - для этого там всё не доделано - взявший может увидеть, что аналогичное действие сделать можно и нужно, но иначе и более оптимизированно. Т.е. она не должна превратится в готовое изделие без серьезных доработок... Дальнейшее развитие проекта упало на глюках WiFi в ESP. А вы настойчиво пытаетесь её использовать не по назначению :( Давно уже должны другие написать нормальный web сервер.
 
Сверху Снизу