Денис
Ну можно и так. Я хотел не удаляя файл подчистить содержимое... Можно и так
Andrew
usb-i2s нормально отрабатывает?
Да. Там всё огонь. Сделано на STM32F4 USB Audio Card сделан
Andrew
Но буду сегодня все перепроверять сначала до конца
romanetz
частота wclk сигнала какая нужно? (44.1/48)?
Andrew
Все как требуется
romanetz
и на цапу с i2s играет норм?
Andrew
и на цапу с i2s играет норм?
Вот это не проверял, кстати
Andrew
Отличный поинт попробовать туда завести
romanetz
там ещё щелчки должны быть - разрыв фазы синусоиды
Andrew
Щелчки есть да
Andrew
По 4-5 в секунду
romanetz
а в каком месте синхронизация bt и usb происходит? конечную точку обратной используешь в usb-i2s?
romanetz
Да. Там всё огонь. Сделано на STM32F4 USB Audio Card сделан
возьми с вегалаба "дешёвый usb транспорт для саморазвития"
romanetz
там можно внешний мастерклок сделать и/или даже i2s slave
romanetz
обратная связь там есть
Andrew
а в каком месте синхронизация bt и usb происходит? конечную точку обратной используешь в usb-i2s?
Сложный вопрос для моего уровня. Все, на что мен хватило - связать кусками код, чтобы это заработало. Могу вечером код кинуть в git, на все общее освистание)))
Andrew
там можно внешний мастерклок сделать и/или даже i2s slave
Вот MCLK не юзается, может быть и из-за этого
Andrew
Юзается WS (LRCLK) , DIO, BCK
Andrew
Может и в этом дело...
Andrew
Спасибо за наводку)
Slava
Вячеслав скинь код. Спасибо.
if(response.length() < 60) { //Serial.println("response.length()="+String(response.length())+" = "+String(response)); return 0; } //if (response.indexOf("{\"ok\":true,\"result\":[]}") == 0){return 0;} //Serial.println("response.length()="+String(response.length())+" = "+String(response)); //Serial.println("------------------------------------------------------------------"); if(response.length() > 500) { response = response.substring(0,response.indexOf("message")+9); response += "\"-оч. длинное сообщение, не пролезло\"}]}"; } //Serial.println("response.length()="+String(response.length())+" = "+String(response)); //Serial.println("------------------------------------------------------------------"); //delay(10000); // Parse response into Json object DynamicJsonBuffer jsonBuffer; JsonObject &root = jsonBuffer.parseObject(response); if (root.success()) { //Serial.println("root.success()"); if (root.containsKey("result")) { uint32_t resultArrayLength = root["result"].size(); if (resultArrayLength > 0){ resultArrayLength = 1; uint32_t newMessageIndex = 0; for (uint32_t i = 0; i < resultArrayLength; i++){ JsonObject &result = root["result"][i]; if (processResult(result, newMessageIndex)){newMessageIndex++;} } //closeClient(); return newMessageIndex; } //closeClient(); return 0; } } //closeClient(); return 0;
Slava
Вячеслав скинь код. Спасибо.
если кратко то так... if(response.length() > 500) { response = response.substring(0,response.indexOf("message")+9); response += "\"-оч. длинное сообщение, не пролезло\"}]}"; }
SetPf
Господи, какое же блевотное дерьмо эти xRingBuffer, выблев китайца.
SetPf
Добавил его в кьюсет, словил дичавую багу, потом оказалось что гнидорукие китайцы даже алгоритм добавления в кьюсет не смогли фриртосовский сохранить и намарали какую-то свою обертку.
SetPf
Пользуйтесь православными StreamBuffers
Slava
ОК
но лучше бы сделать так..., самому выделять из текста ответа значение update_id после result до обработки ответа джейсоном и присваивать last_message_received = update_id с пропуском обрабоки джейсоном.
Andrew
частота wclk сигнала какая нужно? (44.1/48)?
Очень кажется что сформированный sample rate с компа как раз 48, а шлётся 44.1 Вылезает underflow.
Andrew
в дескрипторах что?
Сейчас пока нет отладки под рукой, вечером буду отлаживаться
Andrew
Потом напишу, как найду расхождение
romanetz
914/1000=44100/48000;
romanetz
ну как бы да )
Andrew
думаю, потом статейку для людей накропать да исходниками поделиться
romanetz
надо в дескрипторах убрать возможность выбора частоты, если устройство этого реально не поддерживает
Andrew
А то у меня сейчас франкенштейн из обрывочныйх кусков кода нашкрябанных по интернетам
romanetz
я уже кропал в 15 году
Andrew
я уже кропал в 15 году
Именно USB Audio Card -> I2S -> BT A2DP?
romanetz
usb асинхронный
Andrew
А, ну я зелёный, мне еще ковырять и ковырять))
romanetz
насколько я знаю, на тот момент - первый опенсорсный проект в рунете такого рода
Andrew
насколько я знаю, на тот момент - первый опенсорсный проект в рунете такого рода
Охуенчик, я тоже что стоит делиться людьми своими поделками
Andy
Господи, какое же блевотное дерьмо эти xRingBuffer, выблев китайца.
Хмм, про багу можно в issue в github писать, тут бесполезно.
SetPf
Хмм, про багу можно в issue в github писать, тут бесполезно.
да там не бага, там просто в отличии от дефолтных фриртосовских очередей - рингбуфер нельзя напрямую в сет пихать
SetPf
надо через спец апи его
Dmitry
Привет всем К esp32 nextion кто нибудь подключал? Библиотека родная ардуиновская работает?
SetPf
Родная некстоновская библиотека насколько мне известно - лютейшее говно, просто обертки над строковыми командами.
Алексей
SetPf
Там типо управление строками - нахрена там вообще библиотека?
Dmitry
Так и есть, но работает
Dmitry
Для удобства, особенно когда страниц и элементов много
Dmitry
Ничего колхозить не надо, в ней есть конечно ошибки, по ходу исправляю когда нахожу
SetPf
когда страниц и элементов много там надо пилить абстракции, иначе будет мокоронный пздц.
SetPf
Тут вроде был кто то кто еще с ним работал.
SetPf
Он вроде пробовал эту либу, может ответит.
Dmitry
на меге все отлично, сделал проект и не один. Но уперся в RAM
SetPf
Хз я на 4кб рама сижу с 30 страницами и 200 параметрами рилтаймовыми.
Dmitry
что то я видимо не так делал😁
SetPf
рам где кончился в некстоне или МК?
Dmitry
МК
Dmitry
nextion еще запас большой
SetPf
тогда наверное да
SetPf
Но у меня конвенция - имя страницы и имя переменной не занимает больше 4х символов.
SetPf
Обмен с дисплеем только хекс-символами и соответственно интеджерами, никаких строк.
Dmitry
я понял, а у меня строки сплошные получаються, вот отсюда и ноги растут
SetPf
В итоге на 1 страницу выходит 5 байт (имя + кол-во параметров) На один параметр 10 байт - (имя + тип + значение 2х байтовое + флаги) Ну и хранится это дело в ПЗУ. Т.е. в озу занимает 2б-значение * 200 - 400 байт + переменные для обслуживания (буферы всякие и тп) байт 500-600 в общем.
SetPf
В ПЗУ таблицы наверно 2-4кб жрут, но и хрен с ним, это пзу, его много.
SetPf
SetPf
Короче вот такая хрень происходит иногда.
SetPf
В либах есп выполнение натыкается на ассерт, начинает ассертить и внезапно сваливается в аборт во время Впринта
SetPf
Это не хрена не весело.
SetPf
SetPf
Вот момент один когда вылетает.
SetPf
Кто внутрянку знает - чому так?