Eddy_Em 1 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба 46 minutes ago, C2000 said: Чем вам этот код для быстрого запуска (создания тестового проекта) не нравится? В чем проблема его потом под свой стиль переделать? Тем, что его невозможно собрать! 47 minutes ago, C2000 said: CMSIS это библиотека ядра, как она вам поможет работать с периферией? В ней же (от ST) декларируются все нужные мне регистры. Больше мне ничего не надо! 17 minutes ago, AlexandrY said: И все говорит что звук он получит скверного качества, джитер в 1 и более мкс. Микросекунду вы на слух никак не отличите! Особенно учитывая то, что звуковые "файлы" будут с частотой дискретизации килогерц 8... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
C2000 3 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба 42 minutes ago, AlexandrY said: Вы не показали главного - осциллограммы. Без этого вашим утверждениям верить нет оснований. Нет доказательтва работы. С другой стороны также понятно что в лучшем случае DMA можно заставить работать абсолютно детерминировано. Но такой случай не интересен. Найдите худший случай. Это важнее. Мой вариант был для реального плейера читающего из SD карты и воспроизводящего на DAC-е, с одновременной работой DMA по USB и ADC. Это широко распространенная простенькая конфигурация и она как раз автору и нужна. И все говорит что звук он получит скверного качества, джитер в 1 и более мкс. Вполне на слух уже различимо. Светодиодная картинка тоже может начать дрожать. Словом чип выбран не по теме и здесь нужна вещь посерьезней. Нормальный чип. Просто его нужно правильно приготовить))) Во вторых DAC это не GPIO, все же не стоит сравнивать аналоговый выход с цифровым. Осциллограмму могу скинуть, только ведь скажите что я и ее подделал. P.S. Одновременная работа по DMA подразумевала что у более критичного канала приоритет выше? Или с одним приоритетом работали? Интересует не худший (можно в burst режим перевести один из каналов о чем ранее писал), а правильный вариант Ранее были сомнения по одновременной работе прерывания и DMA по этому их и реализовал, но согласен надо добавить еще одни канал DMA с более низким приоритетом, который будет непрерывно писать MemToMem. Позже сделаю. Я прошивку выложил, если кто сомневается можете в живую сами посмотреть что к чему. Это самый честный вариант Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба В "Martin T., The Insiders Guide to the STM32 ARM based Microcontroller(2008)" в главе "4.2.3 Direct Memory Access" довольно подробно расписан механизм работы DMA. Несложная арифметика дает 7..10 тактов на следующую транзакцию. Т.е. если делать единичные DMA-запросы, то эффект можно и на 3-м такте получить. Но если жарить по-полной, то я меньше 12 тактов не планирую, все равно работать не будет. В теории досконально не разбирался, но на практике 12 тактов наблюдал и побороть не смог. Кста, Проверить-то совсем не сложно: по первому сравнению таймера делаем OC таймера на вывод пина, и запрос DMA на запись в BSRR "1", по второму каналу тоже самое, но запись "0". Наблюдаем на трехканальном анализаторе, измеряем задержку и джитер. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
C2000 3 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба ... 17 minutes ago, adnega said: Но если жарить по-полной, то я меньше 12 тактов не планирую, все равно работать не будет. Почему? Даже если +-6 тактов. На частоте 48 МГц. Да и на 16 МГц (не понятно только из-за чего это ограничение) можно до 1 МГц разогнать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба 1 минуту назад, C2000 сказал: Все уже сделано. 12 тактов это при правильно выставленном синхроимпульсе +-6. Это помешает нормальной работе? Ничего. Работать будет. Да, будут дрожать фронты, но это не критично. Я давно об этом уже написал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
C2000 3 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба 29 minutes ago, adnega said: В "Martin T., The Insiders Guide to the STM32 ARM based Microcontroller(2008)" в главе "4.2.3 Direct Memory Access" довольно подробно расписан механизм работы DMA. Несложная арифметика дает 7..10 тактов на следующую транзакцию. Картинка не совсем корректна, так как запись в порт не планируется "прям подряд")) И задержка на передачу данных в порт самого канала DMA после того как он выиграл арбитраж, всегда одна и таже, т.е. ее из времени джитера можно вычеркнуть. Так что не будет там и 12 тактов, при правильной конфигурации каналов. Получаем 5 тактов, а это уже почти те самые +-2 о которых я говорил в начале))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба 51 минуту назад, C2000 сказал: Картинка не совсем корректна, так как запись в порт не планируется "прям подряд")) На частоте 48МГц интервал 0.35 мкс, это порядка 16 тактов. Не "прям подряд", но близко. Я рекомендую F4, а еще лучше F3/G4. Там еще бодрее будет. Картинка - это к вопросу, что DMA не мгновенный, а в некоторых случаях десятки тактов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
C2000 3 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба 3 minutes ago, adnega said: Картинка - это к вопросу, что DMA не мгновенный, а в некоторых случаях десятки тактов. В каких случаях? Максимальный джиттер (доп. задержка которую нельзя заранее предсказать) 5 тактов = +-2.5, задержка самого канала DMA не в счёт она всегда одна и та же. 5 minutes ago, adnega said: Я рекомендую F4, а еще лучше F3/G4. Там еще бодрее будет. А лучше IMX четырёхъядерный, и Linux на него накатить. Вообще круто будет. Светодиодами управлять само то!!!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба 1 hour ago, C2000 said: Осциллограмму могу скинуть, только ведь скажите что я и ее подделал. Но без осцилолграмм вашим утверждениям тем более никакого доверия. Худший случай тоже не можете назвать. Пока ваша позиция похожа на позу страуса. Типа достаточно засунуть голову в песок и джитера не будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
C2000 3 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба 1 minute ago, AlexandrY said: Худший случай тоже не можете назвать. Выньте голову из песка и прочитайте на один пост выше Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба 3 часа назад, C2000 сказал: Для просветления соберите тестовый проект и всё увидите Что тестировать? Что 2*2=4? Вы и это тоже "тестовыми проектами" проверяете? 2 часа назад, C2000 сказал: Ну и что из написанного там не позволит выдавать данные в порт частотой в мегагерц или два? Там для таких как Вы даже диаграмму нарисовали где всё подробно разжевали. Про задержки до 18тактов и про то, что они могут быть ещё больше, если обращение идёт к APB-периферии. И что такое "выдавать данные в порт частотой в мегагерц"? Это из лексикона домохозяек. Выражайтесь техническим языком. Я не знаю что такое "выдавать данные в порт частотой в мегагерц". Я знаю что такое джиттер. О котором и говорил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
C2000 3 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба 1 minute ago, jcxz said: Что тестировать? Что 2*2=4? Вы и это тоже тестовыми проектами проверяете? Я уже писал что когда человеку нахватает знаний и опыта и ему нечего сказать, он начинает заниматься болтовней, дабы отвлечь окружающих от своего слабоумия. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба 2 минуты назад, C2000 сказал: В каких случаях? Предлагаю этот вопрос закрыть, т.к. он всплыл от неуверенности работоспособности связки GPIO+TIM+DMA. Связка работоспособна. 2 минуты назад, C2000 сказал: А лучше IMX четырёхъядерный, и Linux на него накатить. Вообще круто будет. Светодиодами управлять само то!!!!! Обвязка? потребление? цена, наконец? Мы серийно используем F030 для управления светодиодными матрицами, в самых простых случаях. Правда, сейчас (уже несколько лет) перешли на F051. Большинство транспортных табло делаем на нем. Я на практике знаю, что из Cortex-M0 можно по максимуму выжать. Но это для крупных серий. Я ТС рекомендую взять МК "по-толще", все на нем отладить, а при необходимости сменить МК или семейство. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба 15 minutes ago, C2000 said: Выньте голову из песка и прочитайте на один пост выше Ага, продолжайте в том же духе. Когда че-то пойдет не так суйте свою бинарную прошивку неизвестно от чего и утвержадайте что она и есть истина. И никогда не показывайте осциллограм, а то так и спалиться можно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба А что за бинарная прошивка? Где? К какому МК или плате? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться