ШИМ

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

Модераторы: pip, _sva_

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

Re: ШИМ

Сообщение hgost » 26 сен 2017, 17:43

По-моему поведение PWMA/PWMB не соответствует приведенной около рисунка настройке CAD=00b (нет реакции), CAU=11b (инверсия). Для данной диаграммы скорее всего подойдёт CAU=10b, CAD=01b.
Да, спасибо за поправку, Вы все верно заметили.
В случае возникновения самого приоритетного (программного) события выходы PWMA/PWMB поменяют свое значение мгновенно или синхронно с TBCLK?
Смотря что понимать под мгновенным изменением. TBCLK может быть получен в результате деления системного тактового сигнала PCLK. События типа CTR=CMPA наступают по сигналу TBCLK. Программные события наступают по PCLK. Это нельзя назвать мгновенной реакцией, но в случае использования делителя для TBCLK, реакция на программные события (AQSFRC) может быть быстрее чем на аппаратные (CTR=CMPA).

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

Re: ШИМ

Сообщение hgost » 28 сен 2017, 10:14

какое действие будет выполняться в режиме счёта вниз в случае, когда 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
Сообщения: 6
Зарегистрирован: 19 сен 2017, 19:13
Предприятие: Частное лицо

Re: ШИМ

Сообщение scorp86 » 23 ноя 2017, 11:39

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
Сообщения: 55
Зарегистрирован: 14 дек 2015, 12:07
Предприятие: АО НИИЭТ
Откуда: НИИЭТ
Contact:

Re: ШИМ

Сообщение hgost » 23 ноя 2017, 15:49

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 и уточнениях к ним из сообщения выше.

Ответить

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

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

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