Миландр

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

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




Начать новую тему  Ответить на тему  [ 4 сообщения ] 
Автор Сообщение
 Заголовок сообщения: Приостановка ШИМ генератора
СообщениеДобавлено: 2022-янв-13 14:03 
Не в сети

Зарегистрирован: 2018-мар-20 09:55
Сообщения: 34
Организация: ООО Ока4
В контроллере 1986ВЕ91Т порт PD8 используется как TMR2_CH1(PORT_FUNC_ALTER) и выдает импульсы ШИМ генератора.
Можно ли на 100 мс изменить MDR_PORTD->FUNC так чтобы PD8 изменил функцию на PORT_FUNC_PORT с приостановкой выдачи импульсов генератора ШИМ, затем переключить MDR_PORTD->FUNC назад так чтобы FD8 имел функцию PORT_FUNC_ALTER, генератор ШИМ? Не будут ли значительные переходные процессы?


Вернуться к началу
 Заголовок сообщения: Re: Приостановка ШИМ генератора
СообщениеДобавлено: 2022-янв-13 16:00 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 680
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
Открыть обращение пользователя Zkm8
Zkm8 писал(а): *
В контроллере 1986ВЕ91Т порт PD8 используется как TMR2_CH1(PORT_FUNC_ALTER) и выдает импульсы ШИМ генератора.
Можно ли на 100 мс изменить MDR_PORTD->FUNC так чтобы PD8 изменил функцию на PORT_FUNC_PORT с приостановкой выдачи импульсов генератора ШИМ, затем переключить MDR_PORTD->FUNC назад так чтобы FD8 имел функцию PORT_FUNC_ALTER, генератор ШИМ? Не будут ли значительные переходные процессы?
Закрыть
Здравствуйте!

Переходные процессы будут происходить только на уровне настроек скорости нарастания фронтов у передатчиков GPIO (регистр PWR), то есть при переключении функции порта с функции таймера на функцию порта, работа таймера не остановится (если только в коде не будет сделано обратное), внутри работы блока таймера он всё также будет готов отдать свой сигнал на выход канала, который настроен в режим ШИМ, переключение функции работы порта просто физически отключит подведение этого ШИМ-сигнала на передатчик GPIO, соответственно в эти заявленные Вами 100 мс выход может управляться в режиме порта, а далее без каких-либо проблем можно вернуться на отдачу ШИМ-сигнала.

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

Информационный портал отдела технической поддержки support.milandr.ru


Вернуться к началу
 Заголовок сообщения: Re: Приостановка ШИМ генератора
СообщениеДобавлено: 2022-янв-13 16:42 
Не в сети

Зарегистрирован: 2009-сен-21 12:39
Сообщения: 598
Режим порта можно и не переключать, в примере ниже на выходе ШИМ заданием параметра pwm_mode можно вывести всегда "0" или всегда "1"
// --------------------------------------------------------------------------
// Смена режима выхода ШИМ по каналу CH1
// Таймер == MDR_TIMER1, MDR_TIMER2, MDR_TIMER3
// pwm_mode = режим работы выхода ШИМ (TIMER_CH_CNTRL_OCCM)
// 3 == перекл при CNT == CCR (на выходе меандр с частотой 2*ARR)
// 4 == всегда "0"
// 5 == всегда "1"
// 6 == "1->0, 1->0" (CNT < CCR && DIR == 0)
// 7 == "0->1, 0->1" (CNT < CCR && DIR == 0)
// --------------------------------------------------------------------------
void TimerCH1_changePWM_Mode(MDR_TIMER_TypeDef *MDR_TIMERx, u8 pwm_mode)
{
MDR_TIMERx->CH1_CNTRL = pwm_mode << TIMER_CH_CNTRL_OCCM_Pos;
}


Вернуться к началу
 Заголовок сообщения: Re: Приостановка ШИМ генератора
СообщениеДобавлено: 2022-янв-13 17:27 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 680
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
Открыть сообщение пользователя ЧумА
ЧумА писал(а): *
Режим порта можно и не переключать, в примере ниже на выходе ШИМ заданием параметра pwm_mode можно вывести всегда "0" или всегда "1"
// --------------------------------------------------------------------------
// Смена режима выхода ШИМ по каналу CH1
// Таймер == MDR_TIMER1, MDR_TIMER2, MDR_TIMER3
// pwm_mode = режим работы выхода ШИМ (TIMER_CH_CNTRL_OCCM)
// 3 == перекл при CNT == CCR (на выходе меандр с частотой 2*ARR)
// 4 == всегда "0"
// 5 == всегда "1"
// 6 == "1->0, 1->0" (CNT < CCR && DIR == 0)
// 7 == "0->1, 0->1" (CNT < CCR && DIR == 0)
// --------------------------------------------------------------------------
void TimerCH1_changePWM_Mode(MDR_TIMER_TypeDef *MDR_TIMERx, u8 pwm_mode)
{
MDR_TIMERx->CH1_CNTRL = pwm_mode << TIMER_CH_CNTRL_OCCM_Pos;
}
Закрыть
Здравствуйте!

Большое спасибо за дополнение.

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

Информационный портал отдела технической поддержки support.milandr.ru


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 4 сообщения ] 

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


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

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


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

Перейти: 

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