ШИМ

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

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

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

Re: ШИМ

Сообщение hgost » 27 июн 2017, 15:57

т.е. получается, что причина исключительно в записи 0 в CMPA и ни синхронизация, ни мертвое время, ни TZ здесь не при чем?
причина в том что события перезаписи теневого регистра в активный и CTR=CMPA приходятся на 1 такт. Сначала происходит перезапись, и "старое" значение CMPA=0 уже не срабатывает, система ждет нового события CMPA=2000.
Наиболее логичным выходом из ситуации мне видится перенос разрешения ШИМ (снятия запрета TZ) из прерывания CTR=ZERO в CTR=PRD
Да, должно помочь. На рисунке, который я привел в предыдущем сообщении CHA и CHB - сигналы ШИМ без влияния TZ, можете ориентироваться на их поведение.

Аватара пользователя
Лашкевич
Сообщения: 95
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Contact:

Re: ШИМ

Сообщение Лашкевич » 27 июн 2017, 17:57

Самое интересное -
Да и раньше аналогично настраивал ШИМ на TMS320F28335, там проблем не было.

Мы проверили, в тексасе сделано точно также в плане загрузок теневых регистров. Сначала происходит загрузка теневого, а потом проверяется равенство уставки сравнения. И, точно также, если уставка CMPA была равно нулю и стала равно чему-то там, то при нуле счетчика таймера события CTR=AUp не генерится. Было бы крайне интересно, если бы топикстартер проверил тот же код на тексасе - действительно ли есть различия в работе ШИМ или всё-таки всё дело в нюансах софта?
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/

Аватара пользователя
MR.Smith
Сообщения: 76
Зарегистрирован: 25 апр 2016, 10:56

Re: ШИМ

Сообщение MR.Smith » 27 июн 2017, 19:29

Лашкевич писал(а):
27 июн 2017, 17:57
Самое интересное -
Да и раньше аналогично настраивал ШИМ на TMS320F28335, там проблем не было.

Мы проверили, в тексасе сделано точно также в плане загрузок теневых регистров. Сначала происходит загрузка теневого, а потом проверяется равенство уставки сравнения. И, точно также, если уставка CMPA была равно нулю и стала равно чему-то там, то при нуле счетчика таймера события CTR=AUp не генерится. Было бы крайне интересно, если бы топикстартер проверил тот же код на тексасе - действительно ли есть различия в работе ШИМ или всё-таки всё дело в нюансах софта?
Возможно я здесь и не прав (по памяти делал). Я повторю опыт на дельфине, самому очень интересно.

scorp86
Сообщения: 5
Зарегистрирован: 19 сен 2017, 19:13
Предприятие: Частное лицо

Re: ШИМ

Сообщение scorp86 » 19 сен 2017, 19:27

Здравствуйте! Не могли бы Вы прояснить один пока не очень понятный момент из технического описания? На с. 103, в таблице 14.3 указано распределение приоритетов событий при счёте вверх-вниз. Приоритету 5 соответствует событие "CTR = CMPB (счет вверх) при счете вниз или CTR = CMPB (счет вниз) при счете вверх". Что означает "счет вверх при счете вниз" и "счет вниз при счете вверх"? Когда возникают эти события? Спасибо!

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

Re: ШИМ

Сообщение hgost » 20 сен 2017, 11:50

scorp86 писал(а):
19 сен 2017, 19:27
Здравствуйте! Не могли бы Вы прояснить один пока не очень понятный момент из технического описания? На с. 103, в таблице 14.3 указано распределение приоритетов событий при счёте вверх-вниз. Приоритету 5 соответствует событие "CTR = CMPB (счет вверх) при счете вниз или CTR = CMPB (счет вниз) при счете вверх". Что означает "счет вверх при счете вниз" и "счет вниз при счете вверх"? Когда возникают эти события? Спасибо!
Добрый день!
данный пункт описывает ситуации, когда в программе возникают ситуации по типу CMPA=CMPB=ZERO или CMPA=CMPB=PRD, а прописаны реакции на события как CAU, CBU так и CAD, CBD. Т.е при счете вверх-вниз при CMPA=CMPB=ZERO, досчитав до нуля возникнут события CAD, CAU, CBD, CBU, ZERO. А вот в каком приоритете выполнится обработка этих событий и описано в таблице 14.3

scorp86
Сообщения: 5
Зарегистрирован: 19 сен 2017, 19:13
Предприятие: Частное лицо

Re: ШИМ

Сообщение scorp86 » 20 сен 2017, 15:12

hgost писал(а):
20 сен 2017, 11:50
Т.е при счете вверх-вниз при CMPA=CMPB=ZERO, досчитав до нуля возникнут события CAD, CAU, CBD, CBU, ZERO.
Если я правильно понял, то в режиме "вверх-вниз" значение "0"(ноль) счётчик проходит только в фазе "Вверх" (см. рис. 14.8), т.е. в приведённом Вами случае будут иметь место не все перечисленные Вами события, а только CAU, CBU и ZERO. Верно?

scorp86
Сообщения: 5
Зарегистрирован: 19 сен 2017, 19:13
Предприятие: Частное лицо

Re: ШИМ

Сообщение scorp86 » 20 сен 2017, 16:02

Также интересует ситуация, когда для какого-либо события в качестве действия прописано "00 - Нет реакции".
Например, счётчик работает в режиме "вверх-вниз". Заданы CMPA и CMPB, при этом CMPA=CMPB. Для события CTR=CMPB в регистре CBU прописано действие "00 - Нет реакции", а для события CTR=CMPA в регистре CAU прописано действие "11 - Инверсия PWMA/PWMB".
Что будет с выходом ШИМ, как только в фазе "Вверх" счётчик досчитает до значения CTR=CMPA=CMPB?
1) Не будет ничего, т.к. у события CTR=CMPB приоритет выше чем у события CTR=CMPA, а в качестве действия записано "00 - Нет реакции"
2) Выход ШИМ инвертируется, т.к. настройка "00 - Нет реакции" для события CTR=CMPB делает его неактуальным, при этом следующее по приоритету событие - CTR=CMPA, для которого прописано действие "11 - Инверсия​ PWMA/PWMB"
3) ?

scorp86
Сообщения: 5
Зарегистрирован: 19 сен 2017, 19:13
Предприятие: Частное лицо

Re: ШИМ

Сообщение scorp86 » 21 сен 2017, 10:28

Подскажите, пожалуйста, какое действие будет выполняться в режиме счёта вниз в случае, когда CMPA/CMPB >= TBPRD, при достижении счётчиком CTR=TBPRD? То, что прописано для события CTR=TBPRD (PRD)? Или те, что прописаны для событий CTR=CMPA (CAD), CTR=CMPB (CBD)?
Спасибо.

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

Re: ШИМ

Сообщение hgost » 21 сен 2017, 12:09

Если я правильно понял, то в режиме "вверх-вниз" значение "0"(ноль) счётчик проходит только в фазе "Вверх" (см. рис. 14.8), т.е. в приведённом Вами случае будут иметь место не все перечисленные Вами события, а только CAU, CBU и ZERO. Верно?
Коментарий выше был несколько некорректен. Да, Вы абсолютно правы, возникнут именно эти события.
Также интересует ситуация, когда для какого-либо события в качестве действия прописано "00 - Нет реакции".
Когда у события не выставлена реакция, оно не оказывает влияние на список приоритетов событий. Т.е даже если случается событие, у которого высший приоритет, но выставлено "Нет реакции", обрабатываться будут события с низшим приоритетом, но настроенным событием реакции.
На самом деле события с приоритетами 5 и 6 (таблица 14.3) не могут возникать в реальных условиях.

Таблицу 14.1 (счет вверх) следует дополнить, 5 приоритет (низший) будет иметь событие CTR = ZERO
Таблицу 14.2 (счет вниз) следует дополнить, 5 приоритет (низший) будет иметь событие CTR = PRD
какое действие будет выполняться в режиме счёта вниз в случае, когда 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 (имеет самый низкий приоритет, но является единственным возникшим на данный момент)

scorp86
Сообщения: 5
Зарегистрирован: 19 сен 2017, 19:13
Предприятие: Частное лицо

Re: ШИМ

Сообщение scorp86 » 26 сен 2017, 16:13

hgost писал(а):
21 сен 2017, 12:09
Таблицу 14.1 (счет вверх) следует дополнить, 5 приоритет (низший) будет иметь событие CTR = ZERO
Таблицу 14.2 (счет вниз) следует дополнить, 5 приоритет (низший) будет иметь событие CTR = PRD
Если будете корректировать ТО, обратите также внимание на рис. 14.8. По-моему поведение PWMA/PWMB не соответствует приведенной около рисунка настройке CAD=00b (нет реакции), CAU=11b (инверсия). Для данной диаграммы скорее всего подойдёт CAU=10b, CAD=01b.

В случае возникновения самого приоритетного (программного) события выходы PWMA/PWMB поменяют свое значение мгновенно или синхронно с TBCLK?

Ответить

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

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

Сейчас этот форум просматривают: Bing [Bot] и 2 гостя