Пікірлер
@fdfkljlk3367
@fdfkljlk3367 Күн бұрын
это какая-то запрещенка, почти как ЦП))
@user-ix1rs6bn5i
@user-ix1rs6bn5i 4 күн бұрын
Добрый. Покупайте, сразу меняйте патрон, что бы убрать биение, ремонтировать кнопки и т.д. Фирма неплохо делает инструмент и аккумуляторы, НО почему за такие деньги еще нужно изголяться. Может самой фирмой нужно убирать свои косяки.
@ВиталийТыртышный-т8о
@ВиталийТыртышный-т8о 8 күн бұрын
😅ролик интересный , но щелчки по плате как серпом по одному месту. Просмотр разделил на два раза.
@ivanivanov6559
@ivanivanov6559 18 күн бұрын
огромный плюс😊
@МастерБалдырган
@МастерБалдырган 20 күн бұрын
А можно настукивать хотя бы ритм💁‍♂️
@vladp7478
@vladp7478 Ай бұрын
А есть обновление для этой магнитолы?
@VadRov
@VadRov Ай бұрын
Теоретически, должно существовать несколько версий ПО под эту плату. Однако я этим вопросом не озадачивался.
@vladp7478
@vladp7478 Ай бұрын
@VadRov в будущем будет видео по обновлению?
@htd7814
@htd7814 Ай бұрын
Я вьетнамец и не понимаю по-русски, пересматривал его снова и снова, но так и не понял: Я не понимаю, в каком формате входной звук, на какой пин и на какой порт он идет на STM32F4. пожалуйста, помогите Спасибо
@VadRov
@VadRov Ай бұрын
Dữ liệu âm thanh trong ví dụ này được tạo trong bộ đệm nằm trong RAM của bộ vi điều khiển. Đây là các tín hiệu sin và cosin ở kênh âm thanh trái và phải của pcm5102a. PLL I2S được cấu hình ở tần số 44100 Hz, độ rộng khung lấy mẫu âm thanh là 16 bit. Đây chỉ là trình điều khiển mẫu để kết nối DAC bên ngoài. Nếu bạn đặc biệt quan tâm đến việc phát lại âm thanh, hãy xem dự án trình phát video, sử dụng tính năng phát lại âm thanh được mã hóa mp3 từ tệp avi: github.com/vadrov/stm32f4_fast_optimized_avi_player_osd
@htd7814
@htd7814 Ай бұрын
@@VadRov Cảm ơn bạn rất nhiều
@viktorcistjakov2697
@viktorcistjakov2697 Ай бұрын
дятел.
@murakhin
@murakhin Ай бұрын
Подскажи пожалуйста, как в Ситроен магнитола rd4, убрать сд и вместо сд припаять мп3 модуль, чтобы магнитола работала как заводская. У Ситроен и Пежо магнитола связана процессором с бортовым компьютером.
@murakhin
@murakhin Ай бұрын
Невозможно слушать- щелкает и щелкает весь видосик
@avr_stm_pro2955
@avr_stm_pro2955 Ай бұрын
Доброе время суток! Хочу переписать ваш драйвер xpt 2046 под серию stm32h7 не могу понять в функции где идёт опрос по spi в частности по флагу RXNE в серии h7 его нет ,и на spi два регистра данных у f4 один как это все организовать хз
@VadRov
@VadRov Ай бұрын
Приветствую. Там все должно быть очень несложно (RM очень помогает), но со своими нюансами, главный из которых FIFO. Флаги называются по-другому и, действительно, два регистра данных по-разному называемых (на прием SPI_RXDR и передачу SPI_TXDR. В F4 их тоже два, но в записи они именуются просто одноименно DR). Кроме этого, есть и другие различия в настройке и наименованиях, расположении контрольных бит (в т.ч., флаговых: например, TXP, RXP статусного регистра SR, информирующих о готовности к передаче/приему информационного пакета). Под такую железку даже как-то жалко использовать xpt2046 с резистивным тачскрином. Напрашивается что-то емкостное с анализом до 5 касаний. 🙂
@avr_stm_pro2955
@avr_stm_pro2955 Ай бұрын
@VadRov спасибо 👍
@avr_stm_pro2955
@avr_stm_pro2955 Ай бұрын
@@VadRov хочу запустить дисплей 800x480 nt35510
@MrDred91
@MrDred91 2 ай бұрын
У меня дисплей с ST7789V внутри(240х320). Вы в видео говорите, что полярность Clock в SPI нужно ставить в Hight, но с другой библиотекой у меня работает только в Low. Разве могут отличаться ST7789 и ST7789V? Даташит вроде один на все ST7789. Вашу библиотеку так и смог подключить. Не подскажите, куда копать? Видимо я что-то делаю не так.
@VadRov
@VadRov Ай бұрын
К какому MCU подключаете?
@MrDred91
@MrDred91 Ай бұрын
К f411ceu6, использовал вашу новую библиотеку
@VadRov
@VadRov Ай бұрын
@@MrDred91 , подтяжку линий spi к питанию (pull_up) делали?
@VadRov
@VadRov Ай бұрын
Попробуйте этот проект для данного MCU: drive.google.com/file/d/1pHNDM6Lu4bAQuD1-xPyvwAucWCF7nRKr/view?usp=sharing
@MrDred91
@MrDred91 Ай бұрын
Нет, подтяжку не делал. Спасибо за ссылку, попробую!
@gorchits
@gorchits 2 ай бұрын
Не пойму что у меня за проблема, миллион раз все перепроверил. STM32F407VET6 + ST7789, компилирую и каждый раз разная картинка. То куска буквы нет, то черный экран, то вообще синий был почему то. Говорю про этот код: LCD_Handler *lcd = LCD; //указатель на первый дисплей в списке LCD_Init(lcd); LCD_Fill(lcd, COLOR_RED); LCD_WriteString(lcd, 0, 0, "Hello, world!", &Font_15x25, COLOR_YELLOW, COLOR_BLUE, LCD_SYMBOL_PRINT_FAST);
@VadRov
@VadRov 2 ай бұрын
Подтяжка линий spi к питанию есть? /* SPI1 GPIO Configuration PA5 ------> SPI1_SCK PA7 ------> SPI1_MOSI */ GPIO_InitStruct.Pin = LCD_SCL_Pin|LCD_SDA_Pin; GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; GPIO_InitStruct.Pull = LL_GPIO_PULL_UP; /* Подтяжка к питанию есть */ GPIO_InitStruct.Alternate = LL_GPIO_AF_5; LL_GPIO_Init(GPIOA, &GPIO_InitStruct); Полярность тактового сигнала spi (см. в настройках spi параметр CPOL - Clock Polarity) - HIGH ?
@VadRov
@VadRov Ай бұрын
Вот проект собрал под этот MCU+spi st7789: drive.google.com/file/d/183g06RgY7biFJ2kUptKJUNzSPKF4oTXB/view?usp=sharing Заработало с первого раза.
@gorchits
@gorchits Ай бұрын
@@VadRov Спасибо большое за проект! Запустил проект вышла такая штука, разбираюсь с ней: No source available for "Reset_Handler() at 0x8000794" .
@VadRov
@VadRov Ай бұрын
@@gorchits , причина, наверное, в версии CubeIDE. У меня версия 1.15, а firmware для F4 версии 1.27.1
@gorchits
@gorchits Ай бұрын
@@VadRov странно, поставил версию 1.15 и firmaware F4 1.27.1. Ничего не выводится на экран, в этот раз при каждой компиляции. После того как запускаю в режиме дебагинга выскакивает "Reset_Handler() at 0x8000794" и No source available for "main() at 0x8000298"
@MartaTrisna
@MartaTrisna 2 ай бұрын
can we use this as usb audio out for laptop?
@VadRov
@VadRov 2 ай бұрын
@@MartaTrisna No. A low-level DAC driver is considered here. This driver can be the basis for building a USB audio device (external sound card). Based on the microcontroller and DAC specified in the video, this is possible, but you will need to add some amount of program code.
@mebel.avakot
@mebel.avakot 2 ай бұрын
Всем доброго времени суток! Подскажите, кто пользуется данным лобзиком, нормально ли его приобрести для того, чтобы выпиливать отверстие под мойку под варочную в столешнице кухонной?
@VadRov
@VadRov 2 ай бұрын
Нормально, но с пылесосом в руках. 🙂
@vladimirr.1260
@vladimirr.1260 2 ай бұрын
Как честный человек, подписался.
@VadRov
@VadRov 2 ай бұрын
🙂
@arnoldtakacs8263
@arnoldtakacs8263 2 ай бұрын
Hi, can I use ILI9488 instead of ILI9341 ? What do I need to rewrite in the code for that purpose? Thank you.
@VadRov
@VadRov 2 ай бұрын
Hello. You can use a display with an ILI9488 controller, which will be connected to the microcontroller via the SPI interface. But you should take into account that such displays, as a rule, have a resolution of 480x320 pixels. Demonstrating video on a display of such a resolution will require significant performance from the microcontroller. In addition, the speed of the SPI interface will not be enough for the required refresh rate of the image on the display. Accordingly, to solve such a problem, you will need a display with a parallel interface, and the microcontroller itself must support this interface (FSMC) in hardware (or the interface will have to be emulated in software - you will need a microcontroller with a significant number of free GPIO pins). That is, you will need to transfer the project to another hardware base (a microcontroller with greater performance with the FSMC interface). In addition, you should remember that the ILI9488 display controller does not support 16-bit R5G6B5 color when connected via SPI. Thus, this mode will have to be emulated, which will further reduce performance.
@arnoldtakacs8263
@arnoldtakacs8263 2 ай бұрын
@@VadRov Thank you for the reply, I was thinking about using STM32F407VET6 microcontroller which in advance has lot of free GPIO's. What do you think about using this line of microcontroller?
@VadRov
@VadRov 2 ай бұрын
@@arnoldtakacs8263 , I think that the specified microcontroller can theoretically be suitable for solving the problem of playing AVI video with a resolution of 480x320 pixels. Moreover, it contains an SDIO interface, which will allow working with an SD card at a speed of about 10 Mb/sec. This microcontroller can be easily overclocked to 200-220 MHz if necessary. You can also consider microcontrollers of the H5 family (for example, STM32H562RGT6) based on the Cortex-M33 core, which is more productive than the Cortex-M4 core.
@arnoldtakacs8263
@arnoldtakacs8263 2 ай бұрын
@@VadRovThe truth is I'm not very good at programming in C, but I want to learn programming in C, I don't want to give up, if I could I would write something on my own on any stm32f microcontroller, but your project AVI player that you have made make me inspirational about making my own mp4 or mp3 player. But when I want to start to code something on my own I stop nearly at the beginning, it is so hard for me to code something like an mp3 player. But your project is very good. If I could just learn the basics or something about using mp3 helix decoder but when I want to glue together these parts of code there are millions of errors of the compiler.
@VadRov
@VadRov 2 ай бұрын
@@arnoldtakacs8263 , I think everything has its time. If your enthusiasm does not fade, you will gradually advance in learning C. The main thing is not to stop. :)
@arnoldtakacs8263
@arnoldtakacs8263 2 ай бұрын
Thank you, very good project you helped me a lot!!!! Thumbs up!
@Alexcymantrene
@Alexcymantrene 2 ай бұрын
Огромное спасибо! Дай бог вам здоровья! Сделал на 411, все работает! Лайк, подписка! Кладезь знаний
@Dmitry737
@Dmitry737 2 ай бұрын
Примените стандартную тему и стандартные виджеты. Мне помогло
@VictorLarsen-fy9ls
@VictorLarsen-fy9ls 2 ай бұрын
А не подскажите на чем, как пишутся программы для MP3 плееров? Например контроллер ATJ2085, указано в даташите что поддерживает инструкции Z80. Я так понимаю что тоже на ассемблере. Или на другом языке можно? И как графический интерфейс там программируется чтоб на экранчик плеера оно выводило?
@VadRov
@VadRov 2 ай бұрын
Судя по спецификации, "ATJ2085 integrates 8-bit MCU with on-chip ICE support. Instruction set is compatible with Z80", чип содержит микроконтроллер, ядро которого по инструкциям совместимо с 8-разрядным Z80. Писать программы можно либо на ассемблере Z80, либо на C (с поддержкой компилятора для z80 - keil, как вариант). В чипе встроен LCM драйвер (интерфейс 8080), значит, можно подключить дисплей с параллельным интерфейсом, например, LCM1602K или тот же дисплей на контроллере ili9341 и аналогичных. Кроме того, есть интерфейс I2C, значит, можно дисплей подключить и по этому интерфейсу. Есть драйвер внешней памяти, значит, можно подключить дисплей с интерфейсом 8080, выделив для него некоторую область памяти. Дальше разбираться не стал. Сейчас много микросхем-кодеков, у которых есть интерфейс для связи с внешним микроконтроллером, что удобнее, чем этот чип, как о нем сказано в спецификации: "все в одном, что очень идеально". Кроме того, здесь надо иметь полную документацию на этот чип, чтобы знать, как писать для него программы и как эти программы в него зашивать. Наверняка, есть (была) специализированная IDE от разработчика/изготовителя чипа. Без кучи дополнительной документации этот чип бесполезен для разработчика. На деле реализовать mp3 плеер проще и функциональнее на том же микроконтроллере stm32 начального уровня, что вполне хватит для работы программного декодера.
@VictorLarsen-fy9ls
@VictorLarsen-fy9ls 2 ай бұрын
@@VadRov Спасибо, стало ясней!) Да то я хочу восстановить свой старый MP3 плеер на этом чипе, у него что-то с питанием. Мне нравилась в нем анимация танцующего человечка когда музыка играет. Хочу ее глянуть может для своих проектов каких-то. Полез посмотрел контроллер и подумал может можно памяти еще добавить, а то там всего 1ГБ. В документации на 4 странице указано что он вроде как до 2ГБ поддерживает External up to 2(cs) x 64M/128M/256M/512M/1G/2G bytes Nand type Flash. 2(cs) это два чипа или какой-то тип памяти? А дальше в конце 17 странице указано ATJ2085 can support NAND type flash from 32M to 1G bytes то есть он только до 1ГБ и поддерживает. Или второй чип памяти подключается если 37 ногу СЕ2 на другой чип кинуть на той же шине? Потому что дисплей и чип памяти фактически на одну шину подключены, только разные сигналы CE1, CE2, CE3. На I2C там подключен радиомодуль ТЕА5767. Да, мне тоже показалось что вроде как для разработки информации мало. Но я думал что может я просто не специалист и поэтому этого мне не хватает, а вот спецы как-то все понимают.
@user-nj7qd5dz6c
@user-nj7qd5dz6c 2 ай бұрын
😮😮😮😮
@IdeaFX
@IdeaFX 3 ай бұрын
Да чтоб тебе сосед непрерывно по батарее стучал каждый раз когда ты смотришь кино! Ну невозможно же смотреть!
@VadRov
@VadRov 3 ай бұрын
"Слушай, ты что такой злой? У тебя папа, мама был?..." Нет у меня соседей по "человейнику", т.к. в собственном доме живу. 😂
@nik-wg4zz
@nik-wg4zz 3 ай бұрын
Здравствуйте, почему вы думаете, что стук на второй передаче не брак, смотрел в обзорах и на многих не слышал стуков
@VadRov
@VadRov 3 ай бұрын
Потому что это не первый мой шуруповерт данной модели, и все они до сих пор исправно работают, в т.ч., аккумуляторы (что особенно приятно). Стук присутствует при работе в "холостую" на второй скорости, в тот момент, когда мы резко отпускаем кнопку. Под нагрузкой такое не наблюдается. Подобный стук не признак дефекта (проверено годами на личном опыте). Длительным использованием нескольких экземпляров данной модели выявлены только следующие проблемы: - закусывание оснастки в патроне (блокировка патрона - брак, и он лечится только заменой патрона в сборе); - поломка переключателя скоростей (как правило, шуроповерт работает в таком случае только на 2 скорости. Лечится заменой рычага.).; - подклинивание переключателя направления вращения (лечится либо заменой переключателя, либо его прочисткой - определяется путем дефектовки). Проблема наблюдается при профессиональном (фактически ежедневном) использовании, что, наверное, можно отнести к естественному износу. В остальном отличная модель. Надежная, безотказная, можно сказать. Удобно лежит в руке. В меру противоударная (несколько раз падали шуруповерты с большой высоты - выжили).
@nik-wg4zz
@nik-wg4zz 3 ай бұрын
@@VadRov благодарю, сегодня был в магазине Все инструменты, хотел приобрести такую модель, смутил треск при остановке на второй передаче. И ещё одно, когда нажимаешь на кнопку на аккумуляторе , светодиод светится 3 секунды, на видео в Ютуб, гаснут сразу. Вот я и задумался
@urichaplin1424
@urichaplin1424 3 ай бұрын
Я хочу сделать простой видеоплеер ( без менюшек и аудио. тупо дал видео файл и он его крутит без звука). есть ли у тебя пример ?
@VadRov
@VadRov 3 ай бұрын
А какие проблемы убрать все "лишнее" из этого исходника? Минут на пять от силы.
@maximkulaev1598
@maximkulaev1598 3 ай бұрын
Каждое утро таким занимаюсь
@urichaplin1424
@urichaplin1424 3 ай бұрын
тут парнишка своровал твой проект kzbin.info/www/bejne/r4Ope5emgNmshassi=CI1zhYNFgokQ_nIJ
@VadRov
@VadRov 3 ай бұрын
@@urichaplin1424 , 🙂 не своровал, а повторил и автора указал. Я проект выпускал под MIT-лицензией. Любой желающий может свободно распространять любыми доступными способами, в т. ч., изменять код по своему желанию при условии указания автора исходника.
@urichaplin1424
@urichaplin1424 3 ай бұрын
@@VadRov как пожелаешь. я считаю что он должен был дать твой гитхаб а не свой и он не написал что весь проект целиком скопипастил. там нет и строчки его кода.
@t1ltmare
@t1ltmare 4 ай бұрын
У меня 2 ошибки и 3 предупреждения Помогите, пожалуйста user_diskio_spi.c ../FATFS/Target/user_diskio_spi.c:100: error: unterminated #else 100 | #ifdef SD_USE_DMA *** [FATFS/Target/subdir.mk:22: FATFS/Target/user_diskio_spi.o] Error 1 "make -j20 all" terminated with exit code 2. Build might be incomplete. Предупреждения ../FATFS/Target/user_diskio_spi.c:116:13: warning: 'SPI_DMA_TransmitReceive' defined but not used [-Wunused-function] 116 | static void SPI_DMA_TransmitReceive(SPI_TransferType type, const BYTE* buff, uint16_t buff_size) | ^~~~~~~~~~~~~~~~~~~~~~~ ../FATFS/Target/user_diskio_spi.c:88:13: warning: 'spi_rw' defined but not used [-Wunused-function] 88 | static BYTE spi_rw(BYTE wval) | ^~~~~~ ../FATFS/Target/user_diskio_spi.c:79:13: warning: 'set_sd_interface_speed' defined but not used [-Wunused-function] 79 | static void set_sd_interface_speed(uint8_t speed) | ^~~~~~~~~~~~~~~~~~~~~~
@VadRov
@VadRov 4 ай бұрын
Лучше воспользуйтесь вариантом работы c sd из проекта видеоплеера. Он основан на обновленной библиотеке FATFS: github.com/vadrov/stm32f4_fast_optimized_avi_player_osd/tree/main/FATFS
@VadRov
@VadRov 4 ай бұрын
Я обновил архив. Перекачайте.
@t1ltmare
@t1ltmare 4 ай бұрын
В общем, вымучил проект, заработало. Я копировал все коды автора себе, потом подправлял под свою распиновку, и вылезали новые ошибки. Пришлось вообще удалить файл system_stm32h7xx.c и ошибки ушли. Спасибо!
@KJIaBogaB
@KJIaBogaB 4 ай бұрын
Подскажите, как прошить такой контроллер полётником типа betaflight ? Я прошиваю например, всё шьется, хоть inav, хоть betaglight - но после перезагрузки чуда не случается и полётник на COM порту не появляется. Думаю, что нужно MSP настроить на какой-то UART - но как это сделать? или вовсе не в том дело?
@VadRov
@VadRov 4 ай бұрын
Чтобы все работало, как задумано, нужна соответствующая данному микроконтроллеру программа ("прошивка"). Т.е. программа ("прошивка") должна быть написана именно для этого микроконтроллера.
@KJIaBogaB
@KJIaBogaB 4 ай бұрын
@@VadRov Я перед прошивкой из списка выбрал полётники, которые с аббревиатурой f401... нашелся единственный - FPVCICLEF401 - его и прошил :) Ну вы поняли тему - может попробуете новое видео снять? Многим будет интересно :) Сейчас жду F405 RGT6, который на большинстве полётников типа speedybee F405 v3 или аналогичных стоит - может на нём сразу всё получится!
@KJIaBogaB
@KJIaBogaB 4 ай бұрын
@@VadRov Мне идет именно такой микроконтроллер из Китая, просто лежала плата с стм32ф401 - в бэтафлайте есть выбор полётника с таким контроллером - я его прошивку и брал. Просто думаю, что нужно с каким-то бубном поплясать, чтобы UART соединения с компом по USB заработал.. и плата увиделась после прошивки в компе как COM5 - STM32F401 что-то типа того, а она в обычном режиме никак не проявляет себя при подключении по USB
@АлександрЗубков-г6ж
@АлександрЗубков-г6ж 4 ай бұрын
Когда-то мы лабы делали в машинных кодах под учебно- отладочные машины. Не помню уже какой комплект. Сейчас есть Си, компиляторы и море библиотек.
@ruslanhanin2650
@ruslanhanin2650 4 ай бұрын
Какая картина не отстойная ,стандартная карзина
@eofmail
@eofmail 4 ай бұрын
А как это повторно инициализировать при смене sd-карты? FR_NOT_READY, помогает только апартный сброс контроллера.
@t1ltmare
@t1ltmare 4 ай бұрын
Эс Пи Ай ❌ Спи ✅ Лэйбл ❌ Лабел ✅
@Abd_As-Samad
@Abd_As-Samad 4 ай бұрын
Не возможно смотреть из за стука
@Seriyv0lk
@Seriyv0lk 4 ай бұрын
Плюсик)))
@Zurenio
@Zurenio 4 ай бұрын
😍😍
@Seriyv0lk
@Seriyv0lk 4 ай бұрын
Красавчик!
@NoName-dj6bd
@NoName-dj6bd 4 ай бұрын
Дребезг кнопок устраняется аппаратно. Пикушкой 220-680 пф на порту мк и резистором 10 ом, между портом и кнопкой. Экономия кода 100%. 👍
@VadRov
@VadRov 4 ай бұрын
Не уверен, что это решение обеспечивает 100% гарантию подавления дребезга. Все немного сложнее в аппаратном плане. Ну, и, если обратили внимание, тут не просто подавление дребезга, но и буферизация ввода, что позволяет, например, обрабатывать очередь событий. 🙂
@NoName-dj6bd
@NoName-dj6bd 4 ай бұрын
@@VadRov Этот метод прверен десятилетиями. Его в пособиях по программированию МК не раз публиковали. Я даже счётчик нажатий собирал для проверки. Из пару сотен нажатий ни одно сбоя.
@quest524
@quest524 4 ай бұрын
можно через пайтон ) просто ты не ас )
@Morpheus.theDreamlord
@Morpheus.theDreamlord 5 ай бұрын
А как в данном случае заменить 8битный формат вав файла на 16битный ? Я пробовал в функции заливки буффера вместо (*pData)>>7 писать просто p_pcm_buff [i] = p_pcm_buff[i+1] = *pdata ; Cам указатель pData у меня соотв. на uint16_t и массив с данными звука uint16_t wav[] ; В итоге вместо исходного семпла ( пытаюсь семпл бас бочки играть) выходит какой-то дико искаженный вариант . Если перевести этот же семпл в формат 8 бит и код не трогать - играет нормально , но с шумом поверх основного звука ( видимо понижение битности сказывается ). Причем одна программа которой переводил вав в код - HxD перегоняет данные в формате uint8_t , а другая может и 8 и 16 и с знакои и без знака . Но пробовал все варианты , и моно и стерео - так и не удалось воспроизвести в 16битном формате. Где может быть затык ? Я так понимаю вся соль в правильном заполнении буфера . Но вроде же проще некуда - бери из исходного массива 16 бит на семпл и кидай в промежуточный буффер , но что-то где-то не работает
@VadRov
@VadRov 4 ай бұрын
Вроде, все правильно делаете (если еще и указатель входных данных верно инкрементируете). Так же примите во внимание, что в данном случае i2s настраивается всего на частоту дискретизации 8000 Гц (и сэмпл должен быть получен для аналогичной частоты). Ожидать какого-то хорошего качества не приходится при таких настройках. Кстати, я экспериментировал и со стерео, и с 16-битами. Проблем, как помню, не было (с учетом изменения кода подготовки pcm буфера). Для преобразования использовал редактор Audacity. Заголовки отрезал в Hex Editor Neo.
@Morpheus.theDreamlord
@Morpheus.theDreamlord 4 ай бұрын
@@VadRov я изменил настройки pll под 44,1 kHz , так дело не в дискретизации , а именно в функции заполнения буфера, я еще игрался с разными вариантами , каждый раз звук был искажен , но по разному . Инкрементирую указатель +2 , я так понимаю мы этой строчкой копируем сначала семпл для левого канала , потом для правого (I+1) и смещаемся в цикле на два элемента к следующей паре семплов LR . Возможно проблема в программе с которой я вытягиваю аудиоданные в виде кода . Попробую Вашу связку , спасибо. Этот же семпл на плате Teensy точно так же из флеш памяти камня играет нормально, но там и утилита своя есть для преобразования в код , и готовая библиотека аудио . Вот пытаюсь ее функционал перенести на стм32. Мне от нее нужно всего навсего проигрывать семпл каждый раз когда срабатывает датчик ( триггер ) снимающий удар по бас бочке . Пробовал на есп32 , там был другой баг - при повторах семпла куда-то из звука девалась часть атаки в самом начале, причем в разных количествах.
@VadRov
@VadRov 4 ай бұрын
@@Morpheus.theDreamlord , не знаю какие проблемы у Вас возникают. Вроде, все просто. void Fill_pcmbuffer(void) { for (int i = 0; i < 2*128; i+=2) { if (!data_left) { pdata = (uint8_t*)music_kick.data; data_left = (uint32_t)music_kick.size; } /* //mono 8 бит p_pcm_buffer[i] = p_pcm_buffer[i+1] = (*pdata)<<7; pdata++; data_left--; */ //стерео 16 бит p_pcm_buffer[i] = *((int16_t*)pdata); pdata += 2; p_pcm_buffer[i+1] = *((int16_t*)pdata); pdata += 2; data_left -= 4; } //переходим к следующей половине PCM буфера p_pcm_buffer = (p_pcm_buffer == pcm_buffer) ? pcm_buffer + 256 : pcm_buffer; } И так для любого формата по аналогии. Типы указателей менять нет необходимости. Достаточно просто делать преобразование к типу в самой процедуре Fill_pcmbuffer.
@Morpheus.theDreamlord
@Morpheus.theDreamlord 4 ай бұрын
@@VadRov а разве указатель на data не uint16_t должен быть , если формат wav 44,1 и 16 бит ? Ибо вот этом походу и затык - одна прога переводит код в массив размером unsigned short , а другая unsigned char . Хотя вавка в одном и другом случае 16 бит на семпл . И этот нюанс я Гугле так и не выяснил , как правильно .
@Morpheus.theDreamlord
@Morpheus.theDreamlord 4 ай бұрын
@@VadRov то , что Вы написали выше работает , я это сразу уточнил в первом комментарии . Но работает этот код только если wav формате 44,1 8 bit/sample . И в этом случае в звуке присутствует фоновый шум . Но сам звук правильный , да . Вот если битность 16 начинается проблема . Может еще дело в формате little endian/big endian ? Wav вроде хранит двухбайтные семплы в little endian , а стм в какой последовательности должна их принимать ?
@sergshramm
@sergshramm 5 ай бұрын
Интересует!!! +++++
@sergshramm
@sergshramm 5 ай бұрын
Вещай дальше. Смотрим тебя внимательно.
@elektrik50hz07
@elektrik50hz07 5 ай бұрын
Доброго дня. Вопрос не по теме. Весной установил на карбюраторную классику зажигание с карбюраторной газели на базе эбу микас 7.1 243.3763 000-01. В память флеш герез комбилоадер залил двухрежемную прошивку(набор калибровок) т.к. у меня два вида топлива(газ-бензин). Память еепром не трогал. С калибровками чуть подразобрался,мотор поехал лучше. Понимаю так,что в еепром залита программа,которая управляет мотором,используя данные калибровок из флеш памяти. На данный момент непонятно,когда используются калибровки экономичного режима,а когда мощностного. Отсюда вопрос. Что посоветуете изучить для понимания этого вопроса.(хочу изучить работу программы) Ассемберов,как я понял несколько. И какими программами посоветуете пользоваться?
@VadRov
@VadRov 5 ай бұрын
Приветствую. Проясним немного. Во флэш записана программа управления двигателем. Это, так называемое ПЗУ микроконтроллера. Там же находятся калибровки для конкретного двигателя и конфигурация (комплектация): кондиционер, количество цилиндров, управление вентилятором и т.д.. В EEPROM же могут находится служебные параметры: VIN, модель двигателя, номер прошивки, пробег (опционально), поправка угла опережения зажигания, коэффициент коррекции СО, коэффициент коррекции топливоподачи ... и некоторые другие параметры (зарезервированные ячейки памяти). Двухрежимная прошивка предполагает наличие по сути двух аналогичных программ управления двигателем, но с разными калибровками. Переключение между прошивками осуществляется "на-лету", так, что микроконтроллер не замечает "подмены" (стек и регистры ЦПУ м/к не "портится"). Я не ЧИП-тюнер, а немного программист. Со своей стороны могу посоветовать изучать для программирования данного м/к официальную документацию на данный микроконтроллер. Для написания программ можно использовать, как я отмечал в видео по данной тематике, среду разработки Keil.
@elektrik50hz07
@elektrik50hz07 5 ай бұрын
@@VadRov Понятно. Погуглю. в этом направлении.Хочется разобраться самому. Чем больше пытаюсь разобраться в работе ЭБУ, тем больше вопросов появляется. Думаю это нормально. Сегодня набрёл на ваш канал. Для себя нашел ещё один ответ. С первым ЭБУ у меня с наступлением лета и жары появилась проблема. Когда корпус блока становился тёплым,вторая прошивка переставала работать. Купил другой блок,с ним работает машина адекватно. Думаю,причина в микросхеме флеш памяти или соседней,которая работает с флеш. Зимой времени будет больше. Попробую перепаять.
@COMMUNIST239
@COMMUNIST239 5 ай бұрын
Сам сейчас изучаю ассемблер для х86-виндовс(MASM32). Посмотрел в ваш код и не увидел ни одной инструкции MOV. А как тогда на спектруме работали с регистрами?
@VadRov
@VadRov 5 ай бұрын
Мнемоника для разных архитектур, как правило., разная. Для z80 аналогом MOV является мнемоника LD (от LOAD).
@Zurenio
@Zurenio 5 ай бұрын
Dear friend... Wonderful...!!! Can I donate with PayPal ? (from Italy)
@VadRov
@VadRov 5 ай бұрын
Thank you. There is no need to donate. 🙂
@v7bdv7bd34
@v7bdv7bd34 5 ай бұрын
Супер тетрис! Даже многие новее выглядели на много хуже.
@Zurenio
@Zurenio 5 ай бұрын
🥰😍🤩👏👏👏🙏🙏🙏🙏
@cafedead
@cafedead 5 ай бұрын
15:21 Если проверяемый командой BIT бит сброшен, то флаг нуля будет установлен, т.е. бит Z флагового регистра будет установлен, а не сброшен. Типа, ноль. Если проверяемый бит установлен, то флаг нуля будет сброшен. Типа, не ноль. Ну и по конструкции switch/case вы привели не совсем корректный аналог на ассемблере. switch/case был введен в языки высокого уровня как раз для того, чтобы реализовать возможность процессоров табличного перехода, иначе хватало бы портянки из ifов. Табличный переход - это когда на этапе компиляции или вами вручную создается таблица адресов начала кода обработки каждого case, на один из которых затем одной инструкцией по вычисленному адресу происходит переход. В современных процессорах есть для этого одна инструкция, например jmp dword ptr [addrTable + ecx*4], но вот JP (HL) у Z80, несмотря на ее многообещающий синтаксис, увы, сама по себе не предоставляет весь этот комплексный функционал вычитывания адреса из пары ячеек с адресом HL, и к ней требуется дополнительный код, который тем не менее будет отрабатывать быстрее, чем ваша портянка сравнений и условных переходов при некотором количестве вариантов case. Суть идеи в том, чтобы сразу переходить к исполнению нужной секции кода, затрачивая на это небольшое и фиксированное количество тактов, а не идти к ней по долгой цепочке проверок с непредсказуемым количеством затраченных тактов на эти операции. Например, LD BC,tableAddr; загружаем адрес начала таблицы переходов в BC, в таблицу прекомпилируем адреса меток для каждой секции case, т.е. tableAddr defw case_0, case_1,... case_n, далее то, что в параметре switch, считаем в HL, удваиваем ADD HL,HL, добавляем одно к другому ADD HL,BC, загружаем адрес из таблицы с вычисленным смещением LD E,(HL); INC HL; LD D,(HL); EX DE,HL; и совершаем один переход с помощью JP (HL). Для несуществующих и запредельных значений и секции default можем добавить перед этим одно сравнение и один условный переход на метку default, и в таблице забиваем для неперечисленных значений адресом метки default. Ваша же связка из сравнений cp NN и условных переходов jr z,... - это не совсем то, что задумывалось авторами switch/case. Чем это тогда отличается от портянки ifoв? Ничем... Вы привели медленный деоптимизированный вариант, к которому приходит компилятор, когда бездари используют switch/case неправильно. Мой вариант - 50 тактов (если обрабатываем дефолты, то чуть больше) для любого кейса, хоть сотню их заведите, а ваш вариант: 14 тактов для первого же кейса, для второго - 33 такта, для третьего - уже 52 такта, уже, очевидно, что неправильный путь избрали, он валиден только для пары кейсов в свиче. И это на Z80. На x86 потери от несделанных переходов вообще практически нет из-за предсказания ветвлений, и там мой вариант станет еще более эффективным, еще и одной инструкцией переходы делаю, а ваш вариант будет еще менее эффективным. Поэтому я посчитал важным сделать такое замечание, чтобы вы встали на путь истинный, и не учили людей плохому. Понимание этой механики дает возможность писать эффективный код и на любом языке высокого уровня...
@VadRov
@VadRov 5 ай бұрын
@@cafedead , замечание правильное. Но народ я не учу, так как не учитель. Оптимизация кода, о которой Вы упоминаете - это совсем другой уровень в познании ассемблера, потому что для начала необходимо этот самый ассемблер изучить. Всё правильно, но всему, как говорится, своё время.
@AVK130174
@AVK130174 5 ай бұрын
IGBT так то биполярник по факту, правильно говорить наверно n-p-n а не n-канальный
@VadRov
@VadRov 5 ай бұрын
Если помню, то здесь я говорил так, как написано в спецификации на данный транзистор 🙂
@ПашТел
@ПашТел 5 ай бұрын
Я вот также психонул и сам поменял дисплей