Страница 3 из 4

Re: ШИМ

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

Re: ШИМ

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

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

Re: ШИМ

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

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

Re: ШИМ

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

Re: ШИМ

Добавлено: 20 сен 2017, 11:50
hgost
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

Re: ШИМ

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

Re: ШИМ

Добавлено: 20 сен 2017, 16:02
scorp86
Также интересует ситуация, когда для какого-либо события в качестве действия прописано "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) ?

Re: ШИМ

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

Re: ШИМ

Добавлено: 21 сен 2017, 12:09
hgost
Если я правильно понял, то в режиме "вверх-вниз" значение "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 (имеет самый низкий приоритет, но является единственным возникшим на данный момент)

Re: ШИМ

Добавлено: 26 сен 2017, 16:13
scorp86
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?