Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Simulink. Генерация кода. SCI
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
SergQ
Подскажите, как настроить SCI для получения эха через DSP. Сейчас если сгенерить код и загрузить его в DSP, в SCI выводиться "ES " Светодиод на GPIO34 моргает нормально. Убрать недер и терминатор не получается - Симулинк ошибку выдает.
evg123
Цитата(SergQ @ Feb 22 2012, 16:56) *
Подскажите, как настроить SCI для получения эха через DSP. Сейчас если сгенерить код и загрузить его в DSP, в SCI выводиться "ES " Светодиод на GPIO34 моргает нормально. Убрать недер и терминатор не получается - Симулинк ошибку выдает.

Вы начните так : поставьте дискретное время (например раз в сек.) и просто передавайте байт, слово или long int в блок "DSC transmit". Со стороны компьютера на терминале вы должны видеть раз в сек. поступающие байты данных. Если это отработает - идите дальше.
То что у вас сейчас нарисовано - работать не будет. 1)нужен нульмодем чтобы замкнуть выход на вход 2)чтобы что-то получить надо что-то отправить, а у вас - наоборот - вы пытаетесь отправить то, что ещё не получили.
SergQ
Цитата
Вы начните так : поставьте дискретное время (например раз в сек.)
и просто передавайте байт, слово или long int в блок "DSC transmit". Со стороны компьютера на терминале вы должны видеть раз в сек. поступающие байты данных. Если это отработает - идите дальше.


Спасибо за помощь. Получилось.


Цитата
То что у вас сейчас нарисовано - работать не будет. 1)нужен нульмодем чтобы замкнуть выход на вход 2)чтобы что-то получить надо что-то отправить, а у вас - наоборот - вы пытаетесь отправить то, что ещё не получили.


я хотел сделать так:
из терминала отправляю символ, он уходит в ДСП и возвращается в терминал, где я его и должен увидеть.

На С для AVR это выглядело бы примерно так:
#pragma vector = USART_RXC_vect
__interrupt void USART_RXC_Interrupt(void)
{
UartTxByte(UDR);
}

Но мы в Simulink-e... и надо ли прерывание?
evg123
Цитата(SergQ @ Feb 23 2012, 18:48) *
я хотел сделать так:...

Есть пример:
Simulink Help->Simulink Coder-> DEMOS->Embedded Targets->Texas Instruments C2000->HIL Verification of IIR Filter via SCI
Я так понимаю, вы у себя его можете опробовать.
Там будут ответы на 99% вопросов.

По поводу ассинхронного ввода - в принципе никаких проблем судя по документации.
1. Разрешаете прерывание в "SCI Receive",
2. настраиваете длину FIFO на котором сгенерируется прерывание.
3. Сам блок "SCI Receive" вводите внутрь блока "Function-Call Subsystem"
4. Вставляетет в модель блок "C280x/C28x3x Hardware Interrupt",
5. направляете его выход на блок "Function-Call Subsystem" (см.п.3)
6. Выход подсистемы "Function-Call Subsystem" "синхронизируете" (поскольку она ассинхронная) блоком "Rate Transition"
и далее обрабатываете полученные данные по обстоятельствам.

Так, скорее всего должно получиться, надо пробовать. Здесь только работает метод проб и ошибок.
Всегда смотрите на сгенерированный код.
SergQ
Большое спасибо, прерывание, вообщем, работает.

Не получилось:
1. синхронизация блоком "Rate Transition".
Поместил блок "SCI transmit" в "Function-Call Subsystem" - работает.
Не понятно, какой ставить параметр "Output port sample time"

2. в терминал прихлдят нечитаемые символы.Не понятно, как избавиться то хедеров и терминаторов,
если они мне не нужны.


И главное, как открыть полученный код в CCS4 и воспользоваться дебагером с брек-поинтами?
XDS100V1 это позволяет?
Создавать проект вручную и прилинковывать файлы? Может проще как-то?
SergQ
Цитата
2. в терминал прихлдят нечитаемые символы.Не понятно, как избавиться то хедеров и терминаторов,
если они мне не нужны.

С ЭТИМ РАЗОБРАЛСЯ
SergQ
Подскажите, как вывести в SCI значение ADC, чтобы в терминале было видна строка типа
"adc 1 = 1233"
evg123
Цитата(SergQ @ Feb 25 2012, 13:51) *
Не получилось:
1. синхронизация блоком "Rate Transition".
Не понятно, какой ставить параметр "Output port sample time"

SCI Receive->Sample time: -1
Цитата(SergQ @ Feb 25 2012, 13:51) *
2. в терминал прихлдят нечитаемые символы.Не понятно, как избавиться то хедеров и терминаторов,
если они мне не нужны.

Можно отказаться от терминала, написать модель на хост стороне (по типу той что в примере Texas Instruments C2000->HIL Verification of IIR Filter via SCI
), а значения, которые выдаёт DSC, -- получать в хост-модель и фиксировать в workspace-переменной. потом по ней, наример, можно постороить график.
Цитата(SergQ @ Feb 25 2012, 13:51) *
И главное, как открыть полученный код в CCS4 и воспользоваться дебагером с брек-поинтами?
XDS100V1 это позволяет?
Создавать проект вручную и прилинковывать файлы? Может проще как-то?

У меня CCS3.3 - там полная автоматика. Вообще делать ничего не надо - проект генерируется сразу в среду, там же запускается и делай что хочешь.
Профилируй, отлаживай и т.д. (использую XDS510). Для отладки - останавливаю проект и перекомпилирую его с отладочной информацией.
Четвёрка (сейчас уже пятёрка), мне нравится больше, чем 3.3, но с матлабом она работает не настолько гибко, как 3.3 .
По идее вы делаете из матлаба проект+makefile, в четвёрке по makefile-у собираете проект, затем устанавливаете опции отладки, перекомпилируете заново и пож., отлаживайтесь в XDS100.


Цитата(SergQ @ Feb 25 2012, 21:56) *
Подскажите, как вывести в SCI значение ADC, чтобы в терминале было видна строка типа
"adc 1 = 1233"

В таком виде не надо. Нужно передавать целочисленные символы, и фиксировать их в хост модели, а потом иx анализировать на графике. Можно использовать plot(vatiable_name),
можно логировать данные в сигнал , а потом использовать model->tools->inspect logged signals
принцип тот же: в подсистеме Function call subsystem вставлен модуль АЦП (sample rate = -1), подсистема срабатывает по прерыванию от АЦП, данные беруться из АЦП и передаются в rate transition, а оттуда в SCI transmit. Со стороны хоста - модель которая ловит данные и логирует в сигнал.
Более подробно см. пример Assinchronous sheduling. + найдите в хелпе топик"Handling Asynchronous Events" Там ответы на все вопросы.
SergQ

C СОМ-портом все получилось, спасибо.
А вот с отладкой не вышло.
CCS3 не могу испольовать, т.к там нет нужного процессора.
CCS4 не создает проект, как CCS3.
Пришлось создать проект, а как правиьно подключить к нему .mk - не понятно.


SergQ
прописал мой .mk в project propperties\ Build command.
Получаю ошибку компиляции:
C:\TI\ccsv4\utils\gmake\gmake -f C:\workspace\MATLAB\led_pwm_ticcs\led_pwm.mk all
gmake: *** No rule to make target `DSP2803x_Adc.c', needed by `derived/DSP2803x_Adc.obj'. Stop.
Build complete for project led_pwm_ticcs
.out не создается.

причем, если компиировать из командной строки
gmake -f led_pwm.mk build
компилируется нормально, ecли потом .out переименовать и положить в нужное место -
дебаггер ccs4 запускается, брек поинты работают

почему из ccs4 компилироваться не хочет?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.