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