К1921ВГ015 DMA+TMR

32-разрядные микроконтроллеры разработки АО "НИИЭТ"

Модераторы: ea, dav, bkolbov, Alis, pip, _sva_

dezna
Сообщения: 36
Зарегистрирован: 20 дек 2024, 08:23
Предприятие: avtomatica

Re: К1921ВГ015 DMA+TMR

Сообщение dezna »

ches писал(а): 04 фев 2025, 16:32
dezna писал(а): 04 фев 2025, 16:25 а если один раз уже сработало и все?
После этого нужно перенастроить канал. После выполнения передачи он перейдет в режим "недействительный" если не настроен циклический режим. Если настроен то перенастраивать не нужно. И далее все должно работать в как первый раз
видимо не ясно выразился...
количество передач грубо говоря 20, R_POWER = 0.
было 1 срабатывание и из-за этого одна передача по DMA.
DMA ждет следующего срабатывания, передача еще не окончена. повиснет ли DMA для всех остальных, или будет нормально работать?
или повиснет только если арбитраж через 2 срабатывания, а было только 1?
ches
Сообщения: 58
Зарегистрирован: 07 сен 2022, 17:08
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: К1921ВГ015 DMA+TMR

Сообщение ches »

dezna писал(а): 04 фев 2025, 16:37 количество передач грубо говоря 20, R_POWER = 0.
было 1 срабатывание и из-за этого одна передача по DMA.
DMA ждет следующего срабатывания, передача еще не окончена. повиснет ли DMA для всех остальных, или будет нормально работать?
или повиснет только если арбитраж через 2 срабатывания, а было только 1?
Доброе утро!
Если правильно понял, то после 1-й передачи запрос к каналу DMA на обработку данных был снят?
В таком случае канал не будет держать DMA и позволит другим каналам работать.

Параметр R_POWER будет иметь значение если после одной передачи запрос не был снят, тогда за ней будет следующая передача без переарбитрации. Если в это время на другом канале возникнет запрос он будет ждать до тех пор, пока первый канал не выполнит количество передач, заданное параметром R_POWER (при условии, что запрос на обработку данных к первому каналу все еще висит).
dezna
Сообщения: 36
Зарегистрирован: 20 дек 2024, 08:23
Предприятие: avtomatica

Re: К1921ВГ015 DMA+TMR

Сообщение dezna »

пытаюсь разобраться с системой тактирования...
PLLCLK1 нужен только для UART и SPI?
описан только SYSCLK, а HCLK и PCLK - нет!
по тексту встречается упоминание PCLKCFG0... но описания нет...
хотя они указаны как тактирование периферии...
на рисунке 4.1 они соединены в одно - это один сигнал? если один, то зачем тогда их вообще разделять? только путаете...
очень скудно описаны взаимосвязи...
очень не хватает общей блок-схемы тактирования...
можно взять как пример тут:
https://www.st.com/content/ccc/resource ... 171190.pdf
страница 93
нет возможности вставлять картинки.. нужно грузить в инет и вставлять ссылку... гемор... может я конечно что-то не понял...
dezna
Сообщения: 36
Зарегистрирован: 20 дек 2024, 08:23
Предприятие: avtomatica

Re: К1921ВГ015 DMA+TMR

Сообщение dezna »

ches писал(а): 05 фев 2025, 08:34 Доброе утро!
Если правильно понял, то после 1-й передачи запрос к каналу DMA на обработку данных был снят?
В таком случае канал не будет держать DMA и позволит другим каналам работать.

Параметр R_POWER будет иметь значение если после одной передачи запрос не был снят, тогда за ней будет следующая передача без переарбитрации. Если в это время на другом канале возникнет запрос он будет ждать до тех пор, пока первый канал не выполнит количество передач, заданное параметром R_POWER (при условии, что запрос на обработку данных к первому каналу все еще висит).
Доброго утра!
запрос приходит от ноги порта по фронту из 0 в 1.
счетчик длины импульса.
наполняю по DMA буфер (N-1 = 19 к примеру, режим основной без зацикливания). R_POWER ставлю 0.
если правильно понял, то если не было запросов от порта ни разу (не было перепадов), то DMA не повиснет.
если был, то DMA отработал и опять ждет нового запроса. в этом случае вроде не должен повиснуть?
только если я R_POWER задам не 0, тогда пока не пройдет заданное количество запросов, DMA будет висеть в этом канале?
dezna
Сообщения: 36
Зарегистрирован: 20 дек 2024, 08:23
Предприятие: avtomatica

Re: К1921ВГ015 DMA+TMR

Сообщение dezna »

ches писал(а): 04 фев 2025, 16:10
dezna писал(а): 04 фев 2025, 13:03 чтоб переллельно писать в оба регисра поодиночке из своих буферов?
Добрый день!
Можно в обработчике прерывания от CAPCOM[0] перенастраивать и программно запускать два (или более) канала DMA. Каждый будет брать данные из своего буфера и класть в свой необходимый регистр.
Останется только вопрос максимальной возможной частоты ШИМ при таком подходе
буду пробовать настроить 2 канала DMA на программный запрос и по флагу прерывания CAP0 дергать программный запрос.
только не из прерывания, а попробую вставить в vApplicationIdleHook от ОС. тогда не будут вызываться сохранение/восстановление регистров в стэк, что должно сэкономить время.
DMA сделать зацикленным, тогда и перезапускать не понадобится, только 1 раз настроить и дергать запрос.
вроде можно DMA дергать руками вместо периферии? никогда так не делал еще.
ches
Сообщения: 58
Зарегистрирован: 07 сен 2022, 17:08
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: К1921ВГ015 DMA+TMR

Сообщение ches »

dezna писал(а): 05 фев 2025, 08:51 если правильно понял, то если не было запросов от порта ни разу (не было перепадов), то DMA не повиснет.
если был, то DMA отработал и опять ждет нового запроса. в этом случае вроде не должен повиснуть?
Да, все верно, не повиснет
dezna писал(а): 05 фев 2025, 08:51 только если я R_POWER задам не 0, тогда пока не пройдет заданное количество запросов, DMA будет висеть в этом канале?
Только в случае, если после выполнения одной передачи запрос не будет снят. Тогда да, DMA будет занят этим каналом до тех пор, пока не выполнит количество передач, заданное полем R_POWER, затем переарбитрация.
Если же после выполнении одной-двух передач запрос снимается, DMA переключится на другой канал, несмотря на значение R_POWER
ches
Сообщения: 58
Зарегистрирован: 07 сен 2022, 17:08
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: К1921ВГ015 DMA+TMR

Сообщение ches »

dezna писал(а): 05 фев 2025, 09:05 вроде можно DMA дергать руками вместо периферии? никогда так не делал еще.
Да, можно программно запустить работу любого канала DMA с помощью регистра SWREQ
dezna
Сообщения: 36
Зарегистрирован: 20 дек 2024, 08:23
Предприятие: avtomatica

Re: К1921ВГ015 DMA+TMR

Сообщение dezna »

DMA вылетает с ошибкой канала, если пытаюсь читать значение MTIME...
адрес проверил, корректный 0x0200BFF8.
если заменяю адрес источника на созданную переменную, то все работает.
что делать?
так же пришлось включить в канале все защиты, тоже вылетал с ошибкой не сделав ни одной операции.
с комбинациями не экспериментировал, включил сразу все.
ches
Сообщения: 58
Зарегистрирован: 07 сен 2022, 17:08
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: К1921ВГ015 DMA+TMR

Сообщение ches »

dezna писал(а): 05 фев 2025, 08:45 пытаюсь разобраться с системой тактирования...
PLLCLK1 нужен только для UART и SPI?
В данном микроконтроллере PLL имеет два выхода.
Сигнал SYSPLL1CLK может использоваться для тактирования периферийных блоков (указаны на рисунке 4.4). В качестве системного тактового сигнала можно использовать SYSPLL0CLK.
dezna писал(а): 05 фев 2025, 08:45 описан только SYSCLK, а HCLK и PCLK - нет!
на рисунке 4.1 они соединены в одно - это один сигнал? если один, то зачем тогда их вообще разделять? только путаете...
В данной реализации микроконтроллера, из-за ограничения в максимальной системной частоте в 50 МГц, частоты этих сигналов равны.
В других реализациях они могут быть разными.
dezna писал(а): 05 фев 2025, 08:45 по тексту встречается упоминание PCLKCFG0... но описания нет...
А вот это действительно ошибка, такого регистра не существует. Спасибо что обратили внимание. Будет исправлено в следующей ревизии ТО.
dezna
Сообщения: 36
Зарегистрирован: 20 дек 2024, 08:23
Предприятие: avtomatica

Re: К1921ВГ015 DMA+TMR

Сообщение dezna »

ches писал(а): 05 фев 2025, 15:59 А вот это действительно ошибка, такого регистра не существует. Спасибо что обратили внимание. Будет исправлено в следующей ревизии ТО.
тогда можете так же отметить:
1. стр 102, п13.5 TMR32 с какого то в разделе TMR
2. в руководстве арифметика с плавающей запятой не описана практически никак, за исключением упоминания о ней как таковой.
3. на страницах 44 и 45 таблицы инструкций содержат одно и то же
это на вскидку, что помню
Ответить

Вернуться в «32-разрядные микроконтроллеры»