реклама на сайте
подробности

 
 
> Simulinc Embedded coder, Таймер для C280x
Misile_Inc
сообщение Oct 1 2012, 10:55
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 174
Регистрация: 30-08-11
Из: Санкт-Петербург
Пользователь №: 66 926



Хотел с помощью Simulinc Embedded Coder сформировать синусоиду на выводе ePWM для микроконтроллера TMS320F2808, но не обнаружил компонента таймера для C280x процессоров. Как быть, откуда брать временную базу для синусоиды и вообще, как работать с таймером?
Спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
evg123
сообщение Oct 19 2012, 10:19
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 353
Регистрация: 11-09-06
Из: Минск
Пользователь №: 20 282



Цитата(Misile_Inc @ Oct 1 2012, 13:55) *
Хотел с помощью Simulinc Embedded Coder сформировать синусоиду на выводе ePWM для микроконтроллера TMS320F2808, но не обнаружил компонента таймера для C280x процессоров. Как быть, откуда брать временную базу для синусоиды и вообще, как работать с таймером?
Спасибо!

Там этой компоненты и не будет. Самый простой вариант - взять компоненту PWM (которую не используете), настроить её как следует и задействовать от неё события в качестве таймера (естественно, отключить те ноги, на которые она потенциально может выводиться от этой PWM). На прерывания от этой PWM завести блочок обработки прерываний. Вот он и будет срабатывать у вас как таймер.
В родных матлабовских примерах так сделано (см. ассинхронный скедьюлинг или шедьюлинг - не знаю как правильно произносить). Второй путь - написать свою s-функцию, которая задействует свободный тайммер при инициализации (ненулевой! ,так как нулевой - изначально используется в движке сгенерированного кода для организации реалтайма), опять же разрешить от него прерывания и завести их на блочок обработки прерываний. Я шел по первому пути (юзаю 28335) - всё было гут.
Go to the top of the page
 
+Quote Post
Misile_Inc
сообщение Oct 24 2012, 06:40
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 174
Регистрация: 30-08-11
Из: Санкт-Петербург
Пользователь №: 66 926



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

Спасибо за отклик sm.gif Я уже пошел примерно по 1 пути- использую PWM, которым управляю ключами, от него вызываю все функции. Пока частоту PWM не предполагается менять, а там посмотрим - возможно придется пожертвовать одним каналом.
Написание S - функции пока что представляется очень проблематичным (плохо знаком с МатЛабом - полез по прихоти заказчика).

Сообщение отредактировал Misile_Inc - Oct 24 2012, 06:40
Go to the top of the page
 
+Quote Post
Misile_Inc
сообщение Oct 29 2012, 13:07
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 174
Регистрация: 30-08-11
Из: Санкт-Петербург
Пользователь №: 66 926



evg123, а не подскажите, как засинхронизировать таймеры модулей ePWM?
Устанавливаю галочку в настройках, разрешающую формирование выходного сигнала синхронизации, а выходного порта у элемента не появляется.

Сообщение отредактировал Misile_Inc - Oct 29 2012, 14:01
Go to the top of the page
 
+Quote Post
Misile_Inc
сообщение Oct 30 2012, 07:06
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 174
Регистрация: 30-08-11
Из: Санкт-Петербург
Пользователь №: 66 926



Еще один вопрос:
В демо- примере "Asinchronous Sheduling" есть компонент "PWM Duty Cycle Control Signal", внутри которого находится обычный счетчик "Counter Free running" с sample time "0.001". Каким образом выполняется его синхронизация, в каких попугаях дано его sample time?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 00:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01361 секунд с 7
ELECTRONIX ©2004-2016