Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос по F2812
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Rem5
Вопрос в следующем . Взялся за разработку некоего устройства на данном проце. Технической документации прочитал достаточно. Но вот не знаю с какого боку подступиться с точки зрения программирования. Хотелось бы понять основные принципы построения программ для данных контроллеров.
BVU
Цитата(Rem5 @ Nov 28 2005, 13:20) *
Вопрос в следующем . Взялся за разработку некоего устройства на данном проце. Технической документации прочитал достаточно. Но вот не знаю с какого боку подступиться с точки зрения программирования. Хотелось бы понять основные принципы построения программ для данных контроллеров.

???......?
По большому счету технология программирования DSP мало чем отличается от программирования стандартных микроконтроллеров.
По подробней пожалуйста. Сформулируйте свою задачу технически грамотно...
Не понятно причем тут проц. и принципы программирования. Проц - железо, на котором реализуется hardware проекта, а программная реализация (на чем вы будете выражать свои мысли asm, С/С++) это его 'мозг' - способность Вашего абстрактного и логического мышления.
Если Вам надо теоретически изучить программирование читайте Дональд Кнут "Искусство Программирования" (3-и тома).
Dr.NoA
Советую скачать примеры программ для C28, они свободно доступны на сайте TI. Очень поможет.
Rem5
Ещё один вопрос. У меня временно стоит 90 дневная Trial Version CCS. В ней прерывания например от таймеров вообще можно откатать?
andr2000
в моем cfg файле есть такая строка
cssi_modules pie, timer0, timer1, timer2;
это значит, что симулятор поддерживает таймеры
все остальное не поддерживается
Rem5
2 andr2000
а имя файла не подскажете?

2 andr2000
Прошу прощения, нашёл cssi_modules pie, timer0, timer1, timer2. Но не как не могу отсмотреть переход в обработчик прерывания по timer0. Прога тестовая с ti.com скачанная. Флаги необходимые вроде стоят все . Но по переполнению прерывания не происходит . Не понятно почему.
andr2000
файл называется sim2810.cfg
не забудьте его добавить в конфигурацию симулятораsmile.gif

вот мой модуль для работы с таймером - может поможет

interrupt void TIMEOUT_IntHandlerTimer(void)
{
CpuTimer0Regs.TCR.bit.TIF=0;
//Acknowledge this interrupt to receive more interrupts from group 1
PieCtrlRegs.PIEACK.all|=PIEACK_GROUP1;
//enable nested interrupts
EINT;
//logic
LOGIC_TimerHandler();
//LED's
LED_TimerHandler();
}

void TIMEOUT_Init(void)
{
TDWord temp;

//setup interrupt vector table
EALLOW;
PieVectTable.TINT0=&TIMEOUT_IntHandlerTimer;
EDIS;
//Initialize timer period:
temp=(TDWord)((XTAL/1000000.0)*(PV_DSP_TIMEOUT_TICK_WEIGHT_MS*1000.0));
CpuTimer0Regs.PRD.all=temp;
//Initialize pre-scale counter to divide by 1 (SYSCLKOUT):
CpuTimer0Regs.TPR.all=0;
CpuTimer0Regs.TPRH.all=0;
//Make sure timer is stopped:
CpuTimer0Regs.TCR.bit.TSS=1;
//Reload all counter register with period value:
CpuTimer0Regs.TCR.bit.TRB=1;
//Initialize timer control register:
CpuTimer0Regs.TCR.bit.SOFT = 1;
//Timer Free Run
CpuTimer0Regs.TCR.bit.FREE=1;
//0 = Disable/1 = Enable Timer Interrupt
CpuTimer0Regs.TCR.bit.TIE=1;
//start the timer
CpuTimer0Regs.TCR.bit.TSS=0;
//enable interrupt
IER|=M_INT1;
//Enable TINT0 in the PIE: Group 1 interrupt 7
PieCtrlRegs.PIEIER1.bit.INTx7=1;
}
Rem5
2 andr 2000
За фрагмент спасибо. я так полагаю что файл должен быть sim2812.cfg разве не так?
andr2000
да, я просто под 2810 писалsmile.gif
Rem5
2 andr 2000
В конфигураторе CCS он уже подключен. Посмотрел код, вообщем
то мой ничем не отличается. Там вообще по моему работа с таймерами без особых изысков. Наверное всё таки версия симулятора...... bad.
andr2000
возможноsmile.gif мне хватило того что есть
для написания полного проекта без
эмуляторов - при помощи загрузчика по SCI
и светодиодаsmile.gif
так что если чем могу - помогуsmile.gif
правда тут и без меня целое стадо гуруsmile.gif
Rem5
2 andr 2000
У Вас в тексте есть такая строка
PieVectTable.TINT0=&TIMEOUT_IntHandlerTimer;
Он в симуляторе фактически переходил к процедуре обработки
TIMEOUT_IntHandlerTimer? У меня таймер просто обнуляется , далее презагружается значением из CpuTimer0Regs.PRD и продолжает считать дальше. По логике вещей он хотя бы IFR флаг установить должен был. Но он и этого не делает. А просто продолжает считать дальше. Ещё один bug: поскольку в симуляторе (cssi_modules pie, timer0, timer1, timer2;) прописано что работает PIE то возможен откат также прерываний от ADC, так как этот источник находится в одной групп PIE, но там прерывания тоже не срабатывают.
andr2000
только что попробовал - в симуляторе не переходитsad.gif
но в железе точно работает.
а насчет АЦП - очень сильно сомневаюсь
Rem5
Тогда я не понимаю как можно логику событий откатать. Этот симулятор что тёмный ящик? Я когда с AVR studio работал всё было проще. Например через определённое время после запуска АЦП происходило прерывание. Я просто вручную заталкивал в регистры результата определённые значения. И дальше можно было просто отследить логику работы программы. То же самое можно было делать с UARTом и т.д. . А тут получается камень для этого нужен. странно как - кто...
andr2000
мне так тоже вначале показалось, но потом я подумал
что людей, которые пытаются писать программы в симуляторе
под данную платформу, скорее всего, не так уж и многоsad.gif
так что поддерживать симулятор желания у народа похоже нет
логику своей программы я откатывал по кусочкам, обработчики
прерываний заменял обычными функциями и смотрел как
они выполняются. потом все это заливал по sci и смотрел как
работает уже в железе. так что...
Rem5
ясно. придётся видимо так писать деваться некуда........
Rem5
ну вот разаобрался. Пришёл ответ из TEXAS.Их иженеры пишут что без отладочной платы (eZdsp) работу Peripheral Hardware вообще не отследить. Встаёт вопрос а зачем нужен такой СИМУЛЯТОР?smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.