Миландр

Ключевым подразделением нашей компании
является Центр Проектирования интегральных микросхем
Текущее время: 2021-окт-22 22:19

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 285 сообщений ]  На страницу « 112 13 14 15 1619 »
Автор Сообщение
СообщениеДобавлено: 2020-окт-31 23:09 
Не в сети

Зарегистрирован: 2018-мар-18 15:49
Сообщения: 267
Организация: StartMilandr.ru
R Max писал(а): *
1) при любом обращении через битовые поля значение размазывается по байтам, то есть пишется какой-либо бит, а он повторяется 4 раза,
Если это про то, что тут написано https://github.com/StartMilandr/MDR_Pack_v6/wiki
то я не нашел способа объяснить компилятору, чтобы он STRB инструкции не использовал при записи в регистр (при выставлении битового поля)

С HSE наверное отсюда же ноги растут, посмотрите что в итоге оказывается в регистрах. Либо это Errata 2004 - https://startmilandr.ru/doku.php/doc:mk:mkee:ask1
На отладочной поэтому приходилось после подачи питания дополнительно Reset подавать, если память не изменяет.


Вернуться к началу
СообщениеДобавлено: 2020-ноя-01 02:23 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 293
StartMilandr писал(а): *
R Max писал(а): *
1) при любом обращении через битовые поля значение размазывается по байтам, то есть пишется какой-либо бит, а он повторяется 4 раза,
Если это про то, что тут написано https://github.com/StartMilandr/MDR_Pack_v6/wiki
то я не нашел способа объяснить компилятору, чтобы он STRB инструкции не использовал при записи в регистр (при выставлении битового поля)

С HSE наверное отсюда же ноги растут, посмотрите что в итоге оказывается в регистрах. Либо это Errata 2004 - https://startmilandr.ru/doku.php/doc:mk:mkee:ask1
На отладочной поэтому приходилось после подачи питания дополнительно Reset подавать, если память не изменяет.
StartMilandr

GRAND MERCI!!! :D

Всё заработало, по 1) да в листинге LDRB/STRB - галочка enum is int помогает (раньше на это внимание не обращал, потому что всегда писал в битовые поля false/true (а они int походу) либо как в bitband);
по 2) фокус с кнопкой S5 (Reset) на отладочной плате работает :mrgreen: - действительно это errata 4.

P.S. Во вложении рабочий проект...поправил ещё логику работы с портами)...


Вложения:
esila.rar [852.68 КБ]
175 скачиваний

_________________
Hack the Planet!
Вернуться к началу
СообщениеДобавлено: 2021-фев-23 18:40 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 293
Появились следующие вопросы:

1. Чему равны максимальная частота тактирования АЦП и максимальная частота сэмплирования АЦП ?

2.1. Как синхронизировать работу контроллеров ШИМ 2, 6, 7, 8, чтобы начала их периодов счёта были одинаковыми при одинаковых периодах счёта (вообще нужен режим работы как на обычном таймере TMR - 4 пары (стойки) ключевых транзисторов: (СH1 + CH1n), (СH2 + CH2n), (СH3 + CH3n), (СH4 + CH4n) ?
2.2 По умолчанию контроллеры ШИМ уже синхронизированы по тактовой частоте микроконтроллера (PCLK) ?
2.3 Можно ли как-то синхронизировать модуль ШИМ с обычным таймером TMR, например чтобы получить режим работы 3 пары (стойки) ключевых транзисторов: (СH1 + CH1n), (СH2 + CH2n), (СH3 + CH3n) + (PWM1_A +PWM1_B) с тем же самым периодом счёта.

3. Как синхронизировать работу (например запуск преобразований между первыми в парах АЦП - ADC00, ADC01, ADC02) всех контроллеров АЦП 1, 2, 3 ?

_________________
Hack the Planet!


Вернуться к началу
СообщениеДобавлено: 2021-фев-24 10:57 
Не в сети

Зарегистрирован: 2014-дек-22 11:21
Сообщения: 29
R Max писал(а): *
2.1. Как синхронизировать работу контроллеров ШИМ 2, 6, 7, 8, чтобы начала их периодов счёта были одинаковыми при одинаковых периодах счёта (вообще нужен режим работы как на обычном таймере TMR - 4 пары (стойки) ключевых транзисторов: (СH1 + CH1n), (СH2 + CH2n), (СH3 + CH3n), (СH4 + CH4n) ?
На старт миландре указан способ: сначала конфигурируются таймеры, потом одной записью в RST запускается тактирование модулей.


Вернуться к началу
СообщениеДобавлено: 2021-фев-24 20:15 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 293
EvILOne писал(а): *
R Max писал(а): *
2.1. Как синхронизировать работу контроллеров ШИМ 2, 6, 7, 8, чтобы начала их периодов счёта были одинаковыми при одинаковых периодах счёта (вообще нужен режим работы как на обычном таймере TMR - 4 пары (стойки) ключевых транзисторов: (СH1 + CH1n), (СH2 + CH2n), (СH3 + CH3n), (СH4 + CH4n) ?
На старт миландре указан способ: сначала конфигурируются таймеры, потом одной записью в RST запускается тактирование модулей.
Если про эту информацию https://startmilandr.ru/doku.php/doc:doclist:timers, то это не то, но всё равно Спасибо, тоже было интересно почитать !)

Не до конца понятна логика работы синхронизации модулей ШИМ - что необходимо записать в регистры ШИМ, чтобы собрать цепочку модулей ШИМ в определённой последовательности....и что значит фраза "для синхронизации таймера с другими таймерами системы" ....какой системы...системы модулей ШИМ, или сюда же можно включить обычные таймеры TMR ?? ...и я так понимаю в первом синхронном запуске модулей ШИМ должен как-то поучаствовать бит однократного программного импульса синхронизации-запуска SWSYNC ??
Открыть
Вложение:
[ attachment ]
Безымянный.jpg [ 224.13 КБ | 3278 просмотров ]
Вложение:
[ attachment ]
3.jpg [ 218.04 КБ | 3278 просмотров ]
Закрыть

_________________
Hack the Planet!


Вернуться к началу
СообщениеДобавлено: 2021-мар-02 16:28 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 448
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
R Max писал(а): *
Появились следующие вопросы:

1. Чему равны максимальная частота тактирования АЦП и максимальная частота сэмплирования АЦП ?

2.1. Как синхронизировать работу контроллеров ШИМ 2, 6, 7, 8, чтобы начала их периодов счёта были одинаковыми при одинаковых периодах счёта (вообще нужен режим работы как на обычном таймере TMR - 4 пары (стойки) ключевых транзисторов: (СH1 + CH1n), (СH2 + CH2n), (СH3 + CH3n), (СH4 + CH4n) ?
2.2 По умолчанию контроллеры ШИМ уже синхронизированы по тактовой частоте микроконтроллера (PCLK) ?
2.3 Можно ли как-то синхронизировать модуль ШИМ с обычным таймером TMR, например чтобы получить режим работы 3 пары (стойки) ключевых транзисторов: (СH1 + CH1n), (СH2 + CH2n), (СH3 + CH3n) + (PWM1_A +PWM1_B) с тем же самым периодом счёта.

3. Как синхронизировать работу (например запуск преобразований между первыми в парах АЦП - ADC00, ADC01, ADC02) всех контроллеров АЦП 1, 2, 3 ?
Здравствуйте!

Приношу извинения за задержку с ответом, потребовалось время, чтобы проверить отдельный блок ШИМ на отладочной плате микроконтроллера 1986ВК018.

>> 1. Чему равны максимальная частота тактирования АЦП и максимальная частота сэмплирования АЦП ?

Частота выборки - 2 Мвыб/с. Частота тактирования - не более 128 МГц.

>> 2.1. Как синхронизировать работу контроллеров ШИМ 2, 6, 7, 8, чтобы начала их периодов счёта были одинаковыми при одинаковых периодах счёта (вообще нужен режим работы как на обычном таймере TMR - 4 пары (стойки) ключевых транзисторов: (СH1 + CH1n), (СH2 + CH2n), (СH3 + CH3n), (СH4 + CH4n) ?

Обратите, пожалуйста, внимание, что в данном случае не подойдет способ, который описывает синхронный запуск таймеров, хотя потенциально это можно было сделать в поведенческом описании, заведя все биты запуска счёта ШИМ EN_CLK в один общий регистр по аналогии с таймерами - здесь же на каждый из девяти блоков ШИМ свой регистр с делителем DIV и битом EN_CLK, при этом важно учесть, что общее тактирование каждого из блоков ШИМ задаётся в регистре PER1_CLK. Способ не подойдет по той причине, что так или иначе будет рассинхрон запуска из-за обращения к разным регистрам, которые лежат по разным адресам. Но поскольку блок многофункциональный, и его возможности естественным образом поражают, по всем блокам ШИМ есть возможность синхронизации.

Для простого понимания прикладываю к посту рисунок 76 "Синхронизация блоков ШИМ" из текущей версии спецификации на микроконтроллер. Синхронизация позволяет управлять значением основного счёта таймера и направлением счёта каждого из блоков ШИМ, и когда в описании раздела "Управление событиями синхронизации" речь идёт о таймерах системы, то подразумеваются именно таймеры внутри блоков ШИМ. Синхронизация выполняется по синхросигналу, при этом синхросигналом может выступать либо внешний сигнал, который подведен только на блок ШИМ 0 (то есть первый), либо программно выставленный бит SWSYNC, при этом важно разрешить возможность его работы выставлением бита SWSYNC_MODEI в регистре TBCTL. Допустим, Вами сконфигурированы два блока ШИМ: ШИМ 7 и ШИМ 8. Блоки считают, выдают что-то на каналах А и B (можно спокойно решить задачу прямого и инверсного сигнала ШИМ), но из-за отсутствия синхронизации сигналы будут сдвинуты друг относительно друга, и чтобы блоки синхронизировать между собой, достаточным условием будут выступать следующие действия: необходимо в регистре TBCTL седьмого и восьмого ШИМ выставить бит PHSEN (бит отвечает за загрузку основного регистра счётчика значения из регистра фазы смещения TBPHS), при этом по умолчанию в регистре TBPHS находятся нули. Теперь посмотрите, пожалуйста, на приложенный рисунок. Исходя из данных на нём, синхросигнал должен выставляться на седьмом блоке ШИМ, поскольку он пройдет на восьмой блок. Проще всего, имея два способа, его сформировать программно, для этого необходимо выставить бит SWSYNC_MODEI в регистре TBCTL, а далее бит SWSYNC. Выставление бита SWSYNC сформирует однотактный импульс синхронизации, который распространится на блок ШИМ семь и восемь, таким образом, по этому сигналу основной счётчик обоих блоков заполнится одинаковым значением из регистра TBPHS седьмого блока ШИМ, а поскольку там нули по умолчанию, запишутся именно они, но теперь оба блока будут выдавать ШИМ одновременно. Из этого можно сделать вывод, что синхронизировать блоки ШИМ 7 и 8, включая программный бит синхронизации с восьмого блока - попросту невозможно.

Вами предложена интересная конфигурации блоков ШИМ: 2, 6, 7 и 8. Хитрость заключается в том, что если смотреть на рисунок, можно видеть, что только блок ШИМ 0 может выдавать синхросигнал по всем другим блокам ШИМ, то есть если произойдет программная выдача синхросигнала со второго блока ШИМ, то он не дойдет до шестого блока из-за того, что такой коммутации аппаратно нет. Если выдать программный синхросигнал с шестого блока ШИМ, то он распространится только на блоки семь и восемь (при условии, что запись из регистра фазы смещения TBPHS разрешена битом PHSEN), но не распространится на второй блок ШИМ. Решается данная задача выдачей синхросигнала с нулевого блока ШИМ, при этом для данной связки даже не требуется тактирование промежуточных блоков (1, 5), он в любом случае сделает так, чтобы сигналы ШИМ начали выдаваться синхронно по интересующим блокам. Вернувшись в начало описания работы процесса синхронизации, необходимо сказать о внешнем выводе в функции EPWMxSYNCI - это внешний сигнал синхронизации. То есть по уровню на данном входе, все блоки ШИМ, где выставлены биты PHSEN, будут синхронизированы между собой. К слову, когда аппаратной связи блока таймеров общего назначения и ШИМ нет, а Вам необходимо наладить между блоками коммутацию, можно воспользоваться данным выводом и попробовать синхронизировать счёт по какому-либо событию. Для других конфигураций достаточно программно выставленного синхросигнала. Обращаю Ваше внимание также на то, что при рассмотрении для упрощения понимания работы, мной опущены некоторые настройки блока синхронизации (например, можно менять направление счёта, а сам синхроимпульс может идти не просто напрямую по цепочке из приложенного рисунка, а по какому-то событию, подробнее можно посмотреть в описании бита SYNCOSEL).

>> 2.2 По умолчанию контроллеры ШИМ уже синхронизированы по тактовой частоте микроконтроллера (PCLK) ?

Да, это именно так.

>> 2.3 Можно ли как-то синхронизировать модуль ШИМ с обычным таймером TMR, например чтобы получить режим работы 3 пары (стойки) ключевых транзисторов: (СH1 + CH1n), (СH2 + CH2n), (СH3 + CH3n) + (PWM1_A +PWM1_B) с тем же самым периодом счёта.

Согласно ответу на вопрос 2.1, теоретически это можно сделать, подведя внешний сигнал синхронизации на нулевой блок ШИМ по какому-то событию таймера общего назначения.

>> 3. Как синхронизировать работу (например запуск преобразований между первыми в парах АЦП - ADC00, ADC01, ADC02) всех контроллеров АЦП 1, 2, 3 ?

Синхронизацию между парой АЦП в одном из трёх блоков АЦП можно произвести при помощи настройки регистра ADC_SYNC_CTRL (см. подраздел 18.24.4 ADC_SYNC_CTRL текущей версии спецификации). Синхронизация же трёх блоков АЦП может быть достигнута также при помощи блока ШИМ следующим образом:

Различные блоки ШИМ могут формировать запрос на преобразование каждого из шести АЦП (см. таблицу 46 "Распределение запросов преобразований" текущей версии спецификации). Выдачу запроса на АЦП с блока ШИМ можно настроить в регистре ETSEL, где необходимо разрешить выдачу импульса синхронизации АЦП EPWMxSOCA(B), а также событие, по которому запрос будет выставлен - регистр SOCB(A)SEL, где для удобства можно настроить выдачу импульса по событию TBCTR = TBPRD. Таким образом, если с нулевого блока ШИМ выполнить синхронизацию между всеми блоками ШИМ, то можно организовать одновременное выполнение преобразований на шести АЦП.

Актуальная версия спецификации на микроконтроллер 1986ВК018 всегда доступна для загрузки на информационном портале отдела технической поддержки компании Миландр по ссылке - в поиск необходимо ввести слово "Электросила".

Обращаю Вашу внимание также на наличие статьи по работе с блоком захвата в микроконтроллере 1986ВК018, который также может выдавать сигнал ШИМ.

Благодарим за обращение.
Открыть картинку
Вложение:
[ attachment ]
synch.png [ 12.65 КБ | 3024 просмотра ]
Закрыть

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
СообщениеДобавлено: 2021-мар-02 19:33 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 293
Lampadov

Большое-большое Спасибо за развёрнутый ответ !!!

Теперь стало понятно, будем пробовать на практике. ... То что синхронизировать блоки ШИМ, предварительно запустив необходимые номера блоков и подав потом программный импульс синхронизации, причём с 0 таймера, это было вроде бы понятно, а вот момент (абзац) с PHSEN я проглядел, а ...так хитро (интересно) конечно сделано, т.е. как я понял теперь, можно подогнать все блоки ШИМ к друг другу (сфазировать их), причём на определённую величину времени. Вопроc c запуском АЦП от обычных таймеров был к оценке потенциальных возможностей микроконтроллера, чтобы например уменьшить количество задействованных модулей ШИМ, а использовать их для каких либо других задач.
Цитата:
Способ не подойдет по той причине, что так или иначе будет рассинхрон запуска из-за обращения к разным регистрам, которые лежат по разным адресам.
...да, я наблюдал разбежку между несфазированными блоками ШИМ 400-450 нс.
Цитата:
Вами предложена интересная конфигурации блоков ШИМ: 2, 6, 7 и 8
... она возникла из схемотехники отладочной платы - контакты PB10, PB14, PB16 на разъёме ЖК-индикатора, чтобы вместо него подкинуть силовой драйвер трёхфазного электродвигателя, а 8 для АЦП, как в документе STMicroelectronics UM1052 "User Manual STM32F PMSM single/dual FOC SDK v4.3" https://www.st.com/resource/en/user_man ... ronics.pdf, рисунок Figure 42: PWM and ADC synchronization.
Цитата:
при этом для данной связки даже не требуется тактирование промежуточных блоков (1, 5)
...за информацию спасибо, как раз тоже хотел узнать этот момент =)...
Цитата:
Обращаю Вашу внимание также на наличие статьи по работе с блоком захвата в микроконтроллере 1986ВК018, который также может выдавать сигнал ШИМ.
:shock: :D ..однако, получается, что данный микроконтроллер потенциально может крутить не просто два вентильных электродвигателя, а 3 3-фазных (9 модулей ШИМ), 4 (полный H-мост) или 8 (полумост) двигателей постоянного тока (4 модуля TMR) и ещё 2 или 4 ДПТ (4 модуля CAP) ... МОЩНО !!! :mrgreen:

P.S. :wink: кажется придумал вариант получше с АЦП - в каждом ШИМ же есть B-канал компаратора ! ..так что можно обойтись 3 модулями ШИМ...

_________________
Hack the Planet!


Вернуться к началу
СообщениеДобавлено: 2021-мар-03 10:23 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 448
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
R Max писал(а): *
Lampadov

Большое-большое Спасибо за развёрнутый ответ !!!

Теперь стало понятно, будем пробовать на практике. ... То что синхронизировать блоки ШИМ, предварительно запустив необходимые номера блоков и подав потом программный импульс синхронизации, причём с 0 таймера, это было вроде бы понятно, а вот момент (абзац) с PHSEN я проглядел, а ...так хитро (интересно) конечно сделано, т.е. как я понял теперь, можно подогнать все блоки ШИМ к друг другу (сфазировать их), причём на определённую величину времени. Вопроc c запуском АЦП от обычных таймеров был к оценке потенциальных возможностей микроконтроллера, чтобы например уменьшить количество задействованных модулей ШИМ, а использовать их для каких либо других задач.
Цитата:
Способ не подойдет по той причине, что так или иначе будет рассинхрон запуска из-за обращения к разным регистрам, которые лежат по разным адресам.
...да, я наблюдал разбежку между несфазированными блоками ШИМ 400-450 нс.
Цитата:
Вами предложена интересная конфигурации блоков ШИМ: 2, 6, 7 и 8
... она возникла из схемотехники отладочной платы - контакты PB10, PB14, PB16 на разъёме ЖК-индикатора, чтобы вместо него подкинуть силовой драйвер трёхфазного электродвигателя, а 8 для АЦП, как в документе STMicroelectronics UM1052 "User Manual STM32F PMSM single/dual FOC SDK v4.3" https://www.st.com/resource/en/user_man ... ronics.pdf, рисунок Figure 42: PWM and ADC synchronization.
Цитата:
при этом для данной связки даже не требуется тактирование промежуточных блоков (1, 5)
...за информацию спасибо, как раз тоже хотел узнать этот момент =)...
Цитата:
Обращаю Вашу внимание также на наличие статьи по работе с блоком захвата в микроконтроллере 1986ВК018, который также может выдавать сигнал ШИМ.
:shock: :D ..однако, получается, что данный микроконтроллер потенциально может крутить не просто два вентильных электродвигателя, а 3 3-фазных (9 модулей ШИМ), 4 (полный H-мост) или 8 (полумост) двигателей постоянного тока (4 модуля TMR) и ещё 2 или 4 ДПТ (4 модуля CAP) ... МОЩНО !!! :mrgreen:

P.S. :wink: кажется придумал вариант получше с АЦП - в каждом ШИМ же есть B-канал компаратора ! ..так что можно обойтись 3 модулями ШИМ...
Большое спасибо за информацию, функционал в 1986ВК018 действительно огромен.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
СообщениеДобавлено: 2021-мар-03 11:36 
Не в сети

Зарегистрирован: 2014-дек-22 11:21
Сообщения: 29
Lampadov писал(а): *

Большое спасибо за информацию, функционал в 1986ВК018 действительно огромен.
А где про него можно почитать, так как на офф сайте нет ни слова о нем,а на форуме поиск выдает три последних сообщения из этой темы


Вернуться к началу
СообщениеДобавлено: 2021-мар-03 16:57 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1318
Откуда: АО "ПКК Миландр"
EvILOne писал(а): *
Lampadov писал(а): *

Большое спасибо за информацию, функционал в 1986ВК018 действительно огромен.
А где про него можно почитать, так как на офф сайте нет ни слова о нем,а на форуме поиск выдает три последних сообщения из этой темы
http://support.milandr.ru/products/mikr ... a-project/


Вернуться к началу
СообщениеДобавлено: 2021-мар-09 22:29 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 293
Вопрос такого плана, требуется программным опросом определить факты событий CTR=0, CTR=PRD, CTR=CMPA, CTR=CMPB модуля ШИМ, без разрешения прерывания ETSEL.INTEN=1 и выбора его типа ETSEL.INSEL=XXX. Это можно каким-либо образом сделать, т.е. есть ли регистр, аналогичный STATUS в блоке таймера TIMER?
B кстати говоря при записи в регистр PWM.ETPS в поле INTPRD любого значения, отличного от нуля, оно не меняется и остаётся равным нулю!

P.S. ....ннн-да...., чтобы понять, как работает модуль ШИМ, решил посмотреть тут https://niiet.ru/wp-content/uploads/202 ... 015_v4.pdf, нашёл это https://habr.com/ru/post/526890/, ...и решил вообще почитать оригинал https://www.ti.com/lit/ug/spru791f/spru ... e.com%252F
...предложение к разработчикам, может быть добавите ссылку в руководстве на описание исходной Texas Instruments ePWM IP-Core ? :wink:
...например я нашёл там примеры кода инициализации периферии и нужные мне рисунки, и понятно, для чего фазовращатели...
Открыть
Вложение:
[ attachment ]
spru791f_Страница_083.jpg [ 333.12 КБ | 2633 просмотра ]
Вложение:
[ attachment ]
spru791f_Страница_088.jpg [ 273.44 КБ | 2624 просмотра ]
Закрыть
....а здесь рассказано как АЦП и шунты токовые к таким ШИМ прикрутить...https://www.ti.com/lit/an/spract7/sprac ... e.com%252F

P.P.S. https://training.ti.com/getting-started ... pwm-module

_________________
Hack the Planet!


Последний раз редактировалось R Max 2021-мар-11 23:47, всего редактировалось 1 раз.

Вернуться к началу
СообщениеДобавлено: 2021-мар-10 16:42 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 448
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
R Max писал(а): *
Вопрос такого плана, требуется программным опросом определить факты событий CTR=0, CTR=PRD, CTR=CMPA, CTR=CMPB модуля ШИМ, без разрешения прерывания ETSEL.INTEN=1 и выбора его типа ETSEL.INSEL=XXX. Это можно каким-либо образом сделать, т.е. есть ли регистр, аналогичный STATUS в блоке таймера TIMER?
B кстати говоря при записи в регистр PWM.ETPS в поле INTPRD любого значения, отличного от нуля, оно не меняется и остаётся равным нулю!

P.S. ....ннн-да...., чтобы понять, как работает модуль ШИМ, решил посмотреть тут https://niiet.ru/wp-content/uploads/202 ... 015_v4.pdf, нашёл это https://habr.com/ru/post/526890/, ...и решил вообще почитать оригинал https://www.ti.com/lit/ug/spru791f/spru ... e.com%252F
...предложение к разработчикам, может быть добавите ссылку в руководстве на описание исходной TexasInstruments ePWM IP-Core ? :wink:
...например я нашёл там примеры кода инициализации периферии и нужные мне рисунки, и понятно, для чего фазовращатели...
Открыть
spru791f_Страница_083.jpgspru791f_Страница_088.jpg
Закрыть
....а здесь рассказано как АЦП и шунты токовые к таким ШИМ прикрутить...https://www.ti.com/lit/an/spract7/sprac ... e.com%252F

P.P.S. https://training.ti.com/getting-started ... pwm-module
Здравствуйте!

В основе микроконтроллера Электросила лежит аналогичный IP-блок блоку от Texas Instruments. Главному конструктору будет передано пожелание по дополнению спецификации, где это возможно сделать предметнее касательно блока на кристалле. В свою очередь, я также уточню информацию по регистру ETSEL, возможно, доступ к регистру осуществляется по специальному алгоритму, что на данный момент не отражено корректно в спецификации, либо же адрес регистра отражен в спецификации неправильно (в таком случае SFR-файл также позволяет выставлять значение не по тому смещению). Отдельного регистра (аналогично статусному регистру из блока таймеров общего назначения), кроме блока триггера событий ET, для отслеживания информации по работе блока ШИМ, нет.

После получения дополнительной информации, в этой ветке форума я сообщу о результатах.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
СообщениеДобавлено: 2021-мар-10 22:48 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 293
Я поподробнее почитал документ от TI - действительно линия прерывания одна, но это не особо критично! Просто если за основу векторного управления брать коды от STM32 - то там архитектура ближе к обычному таймеру TMR, а если архитектура ШИМ-модулей аналогично TI -соответственно надо смотреть коды TI.
Что касается регистра, смещения все правильные, с битами SOCAPRD, SOCBPRD - такая же картина, при записи любого числа они тут же сбрасываются в ноль, там походу теневой либо самосбрасываемый регистр... А логика работы с прерываниями на страницах 69-70 хорошо изложена...
Открыть
Вложение:
[ attachment ]
spru791f_Страница_069.jpg [ 700.76 КБ | 2538 просмотров ]
Вложение:
[ attachment ]
spru791f_Страница_070.jpg [ 342.54 КБ | 2538 просмотров ]
Закрыть

_________________
Hack the Planet!


Вернуться к началу
СообщениеДобавлено: 2021-мар-11 23:12 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 293
В спецификации в разделе АЦП походу неправильная таблица с сигналами SOC, в .h-файле adcsync.h из примера pwm_sync_adc из Software pack для Keil MDK 5 для МК 1986ВК01 (http://support.milandr.ru/products/mikr ... a-project/) другие константы.
Открыть
Вложение:
[ attachment ]
Trig.jpg [ 213.82 КБ | 2466 просмотров ]
Вложение:
[ attachment ]
Trig2.jpg [ 196.23 КБ | 2466 просмотров ]
Закрыть
Попутно вопрос - правильно ли я понимаю, что можно одновременно включить все биты 7 запросов от модулей ШИМ на запуск конкретного АЦП и, если они по времени разделены, то все запустят по очереди АЦП, т.е. архитектура аналогична трёхвходовым элементам "ИЛИ" у TI ?
Открыть
Вложение:
[ attachment ]
spru791f_Страница_067.jpg [ 401.93 КБ | 2466 просмотров ]
Закрыть

Ещё один момент в описании работы АЦП
Цитата:
В режиме однократного выполнения, контроллер осуществляет заданное в поле MAXCNV_ADC регистра ADC_CTRL преобразований, после чего останавливается, очищая бит STARTofCONV.
- судя по примеру и реальной работе отладочной платы, в поле MAXCNV регистров ADCx_CTRL надо записывать число на единицу меньше, т.е. одно преобразование в цепочке это (1-1) = 0!

В примере pwm_sync_adc есть такая функция
Открыть
uint32_t AdcGetSampleRate( ADCxControl *adc, uint8_t adcNum )
{
    uint8_t clkSource, delay;
    uint32_t sampleRate;
    
    if( adc == MDR_ADC0 )
        clkSource = ( MDR_CLK->ADC0_CLK >> 28 ) & 0x0F;
    else if( adc == MDR_ADC1 )
        clkSource = ( MDR_CLK->ADC1_CLK >> 28 ) & 0x0F;
    else if( adc == MDR_ADC2 )
        clkSource = ( MDR_CLK->ADC2_CLK >> 28 ) & 0x0F;
    
    if( adcNum == 0 )
        delay = ( adc->ADC0CTRL >> 24 ) & 0xFF;
    else
        delay = ( adc->ADC1CTRL >> 24 ) & 0xFF;
    
    sampleRate = CLK_GetSourceClk( clkSource ) / ( 70 + delay );
    
    return sampleRate;
}
Закрыть
- правильно ли я понимаю, что цифра 70 - это количество тактов АЦП на оцифровку сигнала, ... в регистрах ADC_Result после преобразования лежит похожая цифра - 66 тактов, вообще есть ли рисунок-циклограмма процесса работы преобразования АЦП с ориентировочным количеством тактов и временными соотношениями (величина количества тактов оцифровки нужна для правильного выбора точки сэмплирования при измерении токов на ключах инвертора...) ?

И ещё вопрос : АЦП умеет мерить напряжение от своего питания 3,3 В как опорного по аналогии с микроконтроллером 1986ВЕ9х (3,3 В ~ 4095 бит) ?

_________________
Hack the Planet!


Вернуться к началу
СообщениеДобавлено: 2021-мар-15 12:41 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 448
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
R Max писал(а): *
Я поподробнее почитал документ от TI - действительно линия прерывания одна, но это не особо критично! Просто если за основу векторного управления брать коды от STM32 - то там архитектура ближе к обычному таймеру TMR, а если архитектура ШИМ-модулей аналогично TI -соответственно надо смотреть коды TI.
Что касается регистра, смещения все правильные, с битами SOCAPRD, SOCBPRD - такая же картина, при записи любого числа они тут же сбрасываются в ноль, там походу теневой либо самосбрасываемый регистр... А логика работы с прерываниями на страницах 69-70 хорошо изложена...
Открыть
spru791f_Страница_069.jpgspru791f_Страница_070.jpg
Закрыть
Здравствуйте!

После уточнения информации у разработчика стало известно, что регистр ETPS контроллера ШИМ полностью доступен только на чтение, при этом поле INTPRD отсутствует. Вероятнее всего, разработчиком, после Вашего обращения, будет уточнено функциональное назначение данного регистра, и о принятом решении можно будет узнать с выходом обновленной версии спецификации. По вопросам из следующего поста отвечу отдельным сообщением на форуме.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 285 сообщений ]  На страницу « 112 13 14 15 1619 »

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти: 

Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB