Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Simulinc Embedded coder
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
Misile_Inc
Хотел с помощью Simulinc Embedded Coder сформировать синусоиду на выводе ePWM для микроконтроллера TMS320F2808, но не обнаружил компонента таймера для C280x процессоров. Как быть, откуда брать временную базу для синусоиды и вообще, как работать с таймером?
Спасибо!
evg123
Цитата(Misile_Inc @ Oct 1 2012, 13:55) *
Хотел с помощью Simulinc Embedded Coder сформировать синусоиду на выводе ePWM для микроконтроллера TMS320F2808, но не обнаружил компонента таймера для C280x процессоров. Как быть, откуда брать временную базу для синусоиды и вообще, как работать с таймером?
Спасибо!

Там этой компоненты и не будет. Самый простой вариант - взять компоненту PWM (которую не используете), настроить её как следует и задействовать от неё события в качестве таймера (естественно, отключить те ноги, на которые она потенциально может выводиться от этой PWM). На прерывания от этой PWM завести блочок обработки прерываний. Вот он и будет срабатывать у вас как таймер.
В родных матлабовских примерах так сделано (см. ассинхронный скедьюлинг или шедьюлинг - не знаю как правильно произносить). Второй путь - написать свою s-функцию, которая задействует свободный тайммер при инициализации (ненулевой! ,так как нулевой - изначально используется в движке сгенерированного кода для организации реалтайма), опять же разрешить от него прерывания и завести их на блочок обработки прерываний. Я шел по первому пути (юзаю 28335) - всё было гут.
Misile_Inc
Цитата(evg123 @ Oct 19 2012, 14:19) *
Там этой компоненты и не будет. Самый простой вариант - взять компоненту PWM (которую не используете), настроить её как следует и задействовать от неё события в качестве таймера (естественно, отключить те ноги, на которые она потенциально может выводиться от этой PWM). На прерывания от этой PWM завести блочок обработки прерываний. Вот он и будет срабатывать у вас как таймер.
В родных матлабовских примерах так сделано (см. ассинхронный скедьюлинг или шедьюлинг - не знаю как правильно произносить). Второй путь - написать свою s-функцию, которая задействует свободный тайммер при инициализации (ненулевой! ,так как нулевой - изначально используется в движке сгенерированного кода для организации реалтайма), опять же разрешить от него прерывания и завести их на блочок обработки прерываний. Я шел по первому пути (юзаю 28335) - всё было гут.

Спасибо за отклик sm.gif Я уже пошел примерно по 1 пути- использую PWM, которым управляю ключами, от него вызываю все функции. Пока частоту PWM не предполагается менять, а там посмотрим - возможно придется пожертвовать одним каналом.
Написание S - функции пока что представляется очень проблематичным (плохо знаком с МатЛабом - полез по прихоти заказчика).
Misile_Inc
evg123, а не подскажите, как засинхронизировать таймеры модулей ePWM?
Устанавливаю галочку в настройках, разрешающую формирование выходного сигнала синхронизации, а выходного порта у элемента не появляется.
Misile_Inc
Еще один вопрос:
В демо- примере "Asinchronous Sheduling" есть компонент "PWM Duty Cycle Control Signal", внутри которого находится обычный счетчик "Counter Free running" с sample time "0.001". Каким образом выполняется его синхронизация, в каких попугаях дано его sample time?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.