Eddy_Em 2 21 июля, 2020 Опубликовано 21 июля, 2020 · Жалоба 1 minute ago, jcxz said: посмотреть на его джиттер. Выводил. Лично мне не страшно, что там сотня-другая наносекунд. Кроме того, после старта все уже идет более-менее слаженно, когда таймер пинает DMA. Но это я так - баловался с параллельной шиной, у меня нет ни одного реального рабочего проекта, где понадобилось бы дрыгать ногами при помощи DMA. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 21 июля, 2020 Опубликовано 21 июля, 2020 · Жалоба 1 hour ago, jcxz said: А теперь попробуйте вывести сигнал на GPIO. И посмотреть на его джиттер. Однако не угадали. То что джитер есть и ежу понятно. Вот если б точно назвали его, тогда другое дело. А джитер DMA на общей шине гораздо больше чем думается. Вот такой будет на шине 60 МГц и 180 МГц CPU при работе DMA по таймеру на DAC. Т.е. больше 767 ns Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 212 21 июля, 2020 Опубликовано 21 июля, 2020 · Жалоба 7 минут назад, AlexandrY сказал: при работе DMA по таймеру на DAC Потому что нет в STM32 адекватной такой задаче аппаратуры, т.е. выдача компаратором таймера сигнала загрузки ЦАП из буфера (освободившийся буфер суть запрос ПДП) и запись в компаратор следующего значения, соответствующего заданному периоду дискретизации, вычисленному посредством сумматора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
C2000 3 21 июля, 2020 Опубликовано 21 июля, 2020 · Жалоба Ну нашел час времени сгенерировал в CubeMX тестовый проект для STM32F030C8T. 1. Таймер запускает DMA с частотой 2Мгц, частота шины 48 МГц 2. DMA пишет данные в порты PB8 - PB15, периодически 0-1-0 и т.д. 3. В качестве GPIO_OUT настроены только PB8 и PB9 (обусловлено топологией платы которая есть под рукой). 4. На выводе PB14 синхро/тактовый импульс с таймера 5. Параллельно постоянно выполняется прерывание по таймеру TIM1 в котором переключается вручную порт PA15 (прерывание где то с частотой 1.3МГц быстрее оно просто не успевает выполнится). Все фронты выдерживаются чётко, ни какого дрожания в сотни наносекунд и в помине нет. Если кому интересно и есть плата / отладка с этим контроллером файл прошивки прилагается dma_gpio_tests.bin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 236 21 июля, 2020 Опубликовано 21 июля, 2020 · Жалоба 18 минут назад, C2000 сказал: Все фронты выдерживаются чётко, ни какого дрожания в сотни наносекунд и в помине нет. Смотреть надо ещё уметь. Хотя может у вас реально новое слово техники - DMA телепортирующий данные из источника в приёмник?! Без всяких шин и за 0 тактов. Срочно патентовать и грести бабосы лопатой!!! 18 минут назад, C2000 сказал: 5. Параллельно постоянно выполняется прерывание по таймеру TIM1 в котором переключается вручную порт PA15 (прерывание где то с частотой 1.3МГц быстрее оно просто не успевает выполнится). Эх, похоже патент обламывается и денежки уплывают... Всего лишь новый запрос прерывания возникает до завершения текущего ISR и CPU просто не выполняет стэкинга. А эпохальное открытие было так близко!.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
C2000 3 21 июля, 2020 Опубликовано 21 июля, 2020 · Жалоба 8 minutes ago, jcxz said: Смотреть надо ещё уметь. Ну Вы как я понимаю ни смотреть ни делать не умеете, можете только желчью плескаться. И высказывания Ваши все абсолютно голословные как и в этот раз. Возьмите и посмотрите и покажите людям как оно на самом деле)) А то "говорить" не мешки ворочать) Ну это бывает, когда у человека мало опыта и навыков он их компенсирует излишней болтовнёй 8 minutes ago, jcxz said: Без всяких шин и за 0 тактов. Про 0 никто и не говорил опять же вы оговариваете без причин Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 236 21 июля, 2020 Опубликовано 21 июля, 2020 · Жалоба 1 минуту назад, C2000 сказал: И высказывания Ваши все абсолютно голословные как и в этот раз. Как и Ваши тоже. 1 минуту назад, C2000 сказал: А то "говорить" не мешки ворочать) вот-вот.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
C2000 3 21 июля, 2020 Опубликовано 21 июля, 2020 · Жалоба .. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 21 июля, 2020 Опубликовано 21 июля, 2020 · Жалоба Аж интересно стало проверить джиттер на разных МК: у меня дома есть девборды на 051, 030, 042, 103 и 411. Есть старый код, но я его не соберу: там старая версия opencm3 используется, а я уже несколько лет как отказался от этой горе-библиотеки. Есть у кого готовый MWE на CMSIS, чтобы за 20 минут собрать и прошить? А то если с нуля ковыряться, это минимум часа на 2 в сниппетах и даташите рыться... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
C2000 3 21 июля, 2020 Опубликовано 21 июля, 2020 · Жалоба Для старта CubeMX что то можно галочками настроить что то придется руками допиливать 030 какой? я выложил прошивку для STM32F030C8T Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 236 21 июля, 2020 Опубликовано 21 июля, 2020 · Жалоба 31 минуту назад, Eddy_Em сказал: Аж интересно стало проверить джиттер на разных МК Думаете открыть что-то новое, не описанное в AN2548 от ST? Адептам "мгновенного DMA" особенно внимательно читать главы 5.3 и 5.4. До просветления. https://www.st.com/content/ccc/resource/technical/document/application_note/47/41/32/e8/6f/42/43/bd/CD00160362.pdf/files/CD00160362.pdf/jcr:content/translations/en.CD00160362.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 21 июля, 2020 Опубликовано 21 июля, 2020 · Жалоба 9 minutes ago, jcxz said: Думаете открыть что-то новое, не описанное в AN2548 от ST? Нет, думал успеть проверить хоть на одной-двух платах, пока спать не лягу. Мозг уже отказывается вдумчиво читать код из сниппетов и переделывать его, согласно RM. 36 minutes ago, C2000 said: CubeMX Спасибо, такого нам не нужно! Только нормальный код, для запуска которого хватит минимального набора заголовочных файлов и gcc. 15 minutes ago, jcxz said: Адептам "мгновенного DMA" особенно внимательно читать главы 5.3 и 5.4. Ничего нового. Ну, подумаешь, циклов 50 будет джиттер. И что? Это актуально только при попытке гонять мегагерцы. Обычно же скорости значительно меньше. Да и как-то это не так уж общепринято — ногами посредством DMA дрыгать. Для полноценных параллельных интерфейсов есть 100-ногие микроконтроллеры с FSMC… Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
C2000 3 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба 8 hours ago, Eddy_Em said: Ну, подумаешь, циклов 50 будет джиттер. И что? Не будет. Почему все какие-то цифры с потолка берут. То 16 тактов на вход в прерывание и сохранение контекста (хотя операция ни разу не атомарная), то теперь еще 50 тактов откуда-то выдумали))). Хватит выдумывать. Соберите же наконец-то проект и убедитесь что и на мегагерцах нет никаких проблем с выводом данных, при правильной конфигурации периферии. 8 hours ago, Eddy_Em said: Спасибо, такого нам не нужно! Только нормальный код, для запуска которого хватит минимального набора заголовочных файлов и gcc. Чем вам этот код для быстрого запуска (создания тестового проекта) не нравится? В чем проблема его потом под свой стиль переделать? Причем тут GCC (или не GCC)? 9 hours ago, Eddy_Em said: Есть у кого готовый MWE на CMSIS, чтобы за 20 минут собрать и прошить? CMSIS это библиотека ядра, как она вам поможет работать с периферией? И если Вы не отличаете ядро от периферии то за 20 минут точно ничего не соберете))) 8 hours ago, jcxz said: Адептам "мгновенного DMA" особенно внимательно читать главы 5.3 и 5.4. До просветления. Для просветления соберите тестовый проект и всё увидите 8 hours ago, Eddy_Em said: ... Это актуально только при попытке гонять мегагерцы. Обычно же скорости значительно меньше. Да и как-то это не так уж общепринято — ногами посредством DMA дрыгать. Ранее здесь выложил проект где DMA выводит данные в GPIO на 2 МГц. Тут было высказано мнение что вход и выход из прерывания будет сильно мешать работе DMA, поэтому параллельно генерируется прерывание на частоте 1.3МГц (которое в действительности никак не влияет на работу DMA) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
C2000 3 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба 8 hours ago, jcxz said: Адептам "мгновенного DMA" особенно внимательно читать главы 5.3 и 5.4. До просветления. Ну и что из написанного там не позволит выдавать данные в порт частотой в мегагерц или два? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 22 июля, 2020 Опубликовано 22 июля, 2020 · Жалоба 15 minutes ago, C2000 said: Ранее здесь выложил проект где DMA выводит данные в GPIO на 2 МГц. Тут было высказано мнение что вход и выход из прерывания будет сильно мешать работе DMA, поэтому параллельно генерируется прерывание на частоте 1.3МГц (которое в действительности никак не влияет на работу DMA) Вы не показали главного - осциллограммы. Без этого вашим утверждениям верить нет оснований. Нет доказательтва работы. С другой стороны также понятно что в лучшем случае DMA можно заставить работать абсолютно детерминировано. Но такой случай не интересен. Найдите худший случай. Это важнее. Мой вариант был для реального плейера читающего из SD карты и воспроизводящего на DAC-е, с одновременной работой DMA по USB и ADC. Это широко распространенная простенькая конфигурация и она как раз автору и нужна. И все говорит что звук он получит скверного качества, джитер в 1 и более мкс. Вполне на слух уже различимо. Светодиодная картинка тоже может начать дрожать. Словом чип выбран не по теме и здесь нужна вещь посерьезней. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться