ШИМ

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

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

hgost
Сообщения: 61
Зарегистрирован: 14 дек 2015, 12:07
Предприятие: АО НИИЭТ
Откуда: НИИЭТ
Контактная информация:

Re: ШИМ

Сообщение hgost »

По-моему поведение PWMA/PWMB не соответствует приведенной около рисунка настройке CAD=00b (нет реакции), CAU=11b (инверсия). Для данной диаграммы скорее всего подойдёт CAU=10b, CAD=01b.
Да, спасибо за поправку, Вы все верно заметили.
В случае возникновения самого приоритетного (программного) события выходы PWMA/PWMB поменяют свое значение мгновенно или синхронно с TBCLK?
Смотря что понимать под мгновенным изменением. TBCLK может быть получен в результате деления системного тактового сигнала PCLK. События типа CTR=CMPA наступают по сигналу TBCLK. Программные события наступают по PCLK. Это нельзя назвать мгновенной реакцией, но в случае использования делителя для TBCLK, реакция на программные события (AQSFRC) может быть быстрее чем на аппаратные (CTR=CMPA).
hgost
Сообщения: 61
Зарегистрирован: 14 дек 2015, 12:07
Предприятие: АО НИИЭТ
Откуда: НИИЭТ
Контактная информация:

Re: ШИМ

Сообщение hgost »

какое действие будет выполняться в режиме счёта вниз в случае, когда CMPA/CMPB >= TBPRD, при достижении счётчиком CTR=TBPRD?
Вот именно в такой формулировке вопроса возможно 2 варианта:
- CMPA = CMPB = TBPRD. Произойдет событие во время того как CTR = CMPA = CMPB = TBPRD. А согласно таблице 14.2 будет обрабатываться событие CTR = CMPB (имеет приоритет 3, выше остальных)
- CMPA/CMPB > TBPRD. Произойдет событие во время того как CTR = TBPRD (счетчик просто не дойдет до событий А и В). Соответственно будет обрабатываться событие CTR = TBPRD (имеет самый низкий приоритет, но является единственным возникшим на данный момент)
Небольшая поправка - если CMPA или CMPB >= TBPRD, то события CMPA/CMPB не будут возникать только при счете вверх. При счете вниз или вверх-вниз, события CTR=CMPA/CMPB будет возникать в момент CTR=TBPRD, а порядок выполнения реакции на события будет выбираться согласно таблицам 14.2-14.3
scorp86
Сообщения: 7
Зарегистрирован: 19 сен 2017, 19:13
Предприятие: Частное лицо

Re: ШИМ

Сообщение scorp86 »

hgost писал(а): 28 сен 2017, 10:14 Небольшая поправка - если CMPA или CMPB >= TBPRD, то события CMPA/CMPB не будут возникать только при счете вверх. При счете вниз или вверх-вниз, события CTR=CMPA/CMPB будет возникать в момент CTR=TBPRD, а порядок выполнения реакции на события будет выбираться согласно таблицам 14.2-14.3
Правильно ли я понимаю, что при счёте вниз или вверх-вниз и при CMPA/CMPB > TBPRD (именно больше) наступление ситуации CTR=TBPRD приравнивается к ситуации как если бы CTR=CMPA/CMPB (даже несмотря на то, что в этом случае счетчик CTR реально никогда не дойдёт до CMPA/CMPB) и в первую очередь будут исполняться реакции, прописанные в CBD и CAD?

В техническом описании на с.103 в самом низу рассмотрены случаи CMPA/CMPB <= TBPRD и CMPA/CMPB >= TBPRD. Исходя из Ваших рассуждений выше для первого случая знак неравенства вероятно должен быть "<", а не "<="

На с.104 для режима счета вверх-вниз сказано:
"- если CMPA/CMPB >= TBPRD (счёт вверх), то событие произойдёт при CTR=TBPRD"
Но в режиме счета "вверх-вниз" в фазе "вверх" значение счётчика CTR никогда не станет равным TBPRD исходя из рис. 14.8

Эта же строчка, процитированная выше, затем повторяется ещё раз чуть ниже, когда рассматривается фаза "вниз" в режиме "вверх-вниз". Вероятно в скобках должно быть написано "счет вниз".
hgost
Сообщения: 61
Зарегистрирован: 14 дек 2015, 12:07
Предприятие: АО НИИЭТ
Откуда: НИИЭТ
Контактная информация:

Re: ШИМ

Сообщение hgost »

scorp86 писал(а): 23 ноя 2017, 11:39 Правильно ли я понимаю, что при счёте вниз или вверх-вниз и при CMPA/CMPB > TBPRD (именно больше) наступление ситуации CTR=TBPRD приравнивается к ситуации как если бы CTR=CMPA/CMPB (даже несмотря на то, что в этом случае счетчик CTR реально никогда не дойдёт до CMPA/CMPB) и в первую очередь будут исполняться реакции, прописанные в CBD и CAD?
Да, так и будет.

По поводу остальных моментов:
Возможно, описание в ТО слишком запутанное, и неоднозначное, из-за различия в трактовке понятия "событие". Попытаюсь описать другими словами.
Есть ситуации, когда CMPA/CMPB > TBPRD (строго больше). Назовем эту ситуацию CMPlimit. Событие CMPlimit может наступить только в режимах счета "вниз" или "вверх-вниз". Наступит оно когда CTR=TBPRD, что в этих режимах уже считается счетом вниз. Поэтому реакция на него будет задаваться полями CAD и CBD. Приоритет события CTR=TBPRD ниже чем у событий CMPA/CMPB/CMPlimit (таблицы 14.2-14.3 и уточнения к ним из сообщения выше) поэтому в первую очередь выполнятся обработчики CBD и CAD. Если они не заданы, выполнится обработчик PRD.
При счете "вверх" ни в каких режимах событие CMPlimit не возникнет. Если CMPA=CMPB=TBPRD то обработчики будут выполняться в соответствии с приоритетом, описанным в таблицах 14.1-14.3 и уточнениях к ним из сообщения выше.
scorp86
Сообщения: 7
Зарегистрирован: 19 сен 2017, 19:13
Предприятие: Частное лицо

Re: ШИМ

Сообщение scorp86 »

Здравствуйте!

В главе о блоке Модулятор (п. 14.7) вы привели структурную схему (рис. 14.4), из которой видно, что:
  • 1) схема логического ИЛИ объединяет первый OSHT (как правило широкий) импульс и частоту PSCLK;
    2) полученная модулирующая последовательность объединяется с входным сигналом по схеме логического И.
К сожалению, в ТО не нашёл диаграмм, которые бы показали взаимное положение первого импульса и частоты PSCLK.
Если понимать эту схему буквально, то получается, что частота PSCLK вырабатывается всегда, когда есть SysCLK и при этом никак не связана с первым импульсом OSHT с формирователя импульсов. Таким образом, при определённой длительности и настройках скважности может получиться ситуация, когда первый импульс OSHT "перекроется" схемой ИЛИ с частотой PSCLK, а схема И "обрежет" часть импульса PSCLK (см. рис. а, нижний сигнал - выходной).

а)

Код: Выделить всё

                _____________________
PWMx___________/		     \_________
				     
	        _________	     
OSHT___________/         \_____________________
				     
	    _____	_____       _____
PSCLK _____/     \_____/     \_____/     \_____

                ______________	     _
PWMA___________/              \_____/ \_________

Скажите, эту ситуацию нужно иметь в виду и учитывать при настройке модулятора или же в момент прихода первого импульса блок самостоятельно перезапускает генератор PSCLK и выдерживает необходимые временнЫе интервалы как на рис. б?



б)

Код: Выделить всё

                _____________________
PWMx___________/		     \_________
				     
	        _________	     
OSHT___________/         \_____________________
				     
                                 _____	     _____       _____
PSCLK___________________________/     \_____/     \_____/     \_____

                _________        _____       _____
PWMA___________/         \______/     \_____/     \_____
blessedt
Сообщения: 34
Зарегистрирован: 25 фев 2019, 00:09
Предприятие: АОКБ Импульс

Re: ШИМ

Сообщение blessedt »

Доброго времени суток!
Хотелось бы продолжить тему, поднятую товарищем Лашкевичем в незапамятные времена.
viewtopic.php?f=37&t=538&p=3458&hilit=aqsfrc#p3458
1. В описании регистра AQCSFRC и при поиске этого регистра по тексту описания не получается найти, когда именно (в какой момент времени) применятся настройки, которые он конфигурирует. У тексаса есть специальное поле RLDCSF регистра AQSFRC, которое настраивает поведение регистра AQCSFRC (параметры теневой загрузки). В данном ТО написано, что RLDCSF трогать нельзя, но как при этом работает AQCSFRC я не нашел.

2. В описании регистра AQSFRC про поле ACTSFB написано, что это действие с сигналом на выходе, но не указано, когда это действие выполняется. Нужно указать что-то типа, "действие при получении сигнала формирования выхода полем OTSFB" или как-то так, иначе трудно догадаться, как регистр AQSFRC работает и как им пользоваться. Или более подробно расписать в тексте ТО. Аналогично нужно дополнить про поля OTSFA и ACTSFA. Также написать, как у этого регистра с "теневыми" значениями - имеются ли они, и в какой момент применяются его настройки.
Очень хотелось бы понять, какова длительность действия функции программной установки значений выходов ШИМ? Когда срабатывает программная установка?
Не очень хочется разбираться методом научного тыка.
Аватара пользователя
Лашкевич
Сообщения: 372
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Контактная информация:

Re: ШИМ

Сообщение Лашкевич »

Ну тут два варианта, либо мгновенно, либо по периоду таймера. Вроде бы мы проверяли, что мгновенно срабатывает, хотя в тех применениях, как обычно бывает, без разницы: программная блокировка ШИМ делается всё равно с задержкой порядка периода ШИМ на вызов прерывания, на обработку чего там нужно, поэтому при частоте ШИМ порядка 5кГц и выше критичность этого вопроса отпадает.
Но да, ответ НИИЭТ бы не помешал... И правка ТО.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/
blessedt
Сообщения: 34
Зарегистрирован: 25 фев 2019, 00:09
Предприятие: АОКБ Импульс

Re: ШИМ

Сообщение blessedt »

Лашкевич писал(а): 06 сен 2021, 13:13 Ну тут два варианта, либо мгновенно, либо по периоду таймера. Вроде бы мы проверяли, что мгновенно срабатывает, хотя в тех применениях, как обычно бывает, без разницы: программная блокировка ШИМ делается всё равно с задержкой порядка периода ШИМ на вызов прерывания, на обработку чего там нужно, поэтому при частоте ШИМ порядка 5кГц и выше критичность этого вопроса отпадает.
Но да, ответ НИИЭТ бы не помешал... И правка ТО.
Спасибо большое за ответ, Максим!
Но меня больше интересует, сколько времени после срабатывания команда имеет эффект =) Один период? Вдруг Вы знаете ^_^
hgost
Сообщения: 61
Зарегистрирован: 14 дек 2015, 12:07
Предприятие: АО НИИЭТ
Откуда: НИИЭТ
Контактная информация:

Re: ШИМ

Сообщение hgost »

blessedt писал(а): 03 сен 2021, 15:38 Очень хотелось бы понять, какова длительность действия функции программной установки значений выходов ШИМ? Когда срабатывает программная установка?
Не очень хочется разбираться методом научного тыка.
Добрый день.
Программное событие наступит по событию CTR=ZERO, но только при установленном бите OTSFx (при сброшенном бите программное событие не наступит). При этом если настроено событие CTR=ZERO в AQCTLx, программное событие его "перебьет". Эффект, вызванный программным событием будет прерван любым другим возникшим событием.
blessedt
Сообщения: 34
Зарегистрирован: 25 фев 2019, 00:09
Предприятие: АОКБ Импульс

Re: ШИМ

Сообщение blessedt »

Спасибо, понял! =)
Ответить

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