[an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено ВН 04 марта 2003 г. 19:50
В ответ на: а Сишный код вы посмотреть не дадите? отправлено Руслан 04 марта 2003 г. 18:19

Ну вот специально упрощенный пример. Вот только я в html его попробовал перевести, не знаю получится или нет. Заодно и узнаю.
Обмен чисто программный.
Хост должен знать адреса HOSTBUF,HOSTCMD,HOSTFLG.
А знать он их будет благодаря программеру, который скомпилировав и отлинковав DSP программу заглянет в .map файл и вытащит оттуда эти адреса.
Для удобства, чтобы каждый раз это не делать, эти переменные размещены в секции, hostsec. А саму секцию размещают в памяти через линкеровский .cmd файл.



/*********************/
#pragma DATA_SECTION(HOSTFLG,".hostsec")
short HOSTFLG;
#pragma DATA_SECTION(HOSTCMD,".hostsec")
short HOSTFLG;
#pragma DATA_SECTION(HOSTBUF,".hostsec")
short HOSTBUF[64];
/*********************/
short buffer0[512];
short buffer1[512];
void main()
{
short i;
while(1)
{
while (!HOSTFLG) {;}
if(HOSTCMD<0||HOSTCMD>31) {HOSTFLG=0;continue;}
if(HOSTCMD<8)
{
for(i=0;i<64;i++) buffer0[HOSTCMD*64+i]=HOSTBUF[i];
}
if(HOSTCMD>=8&&HOSTCMD<16)
{
for(i=0;i<64;i++) buffer1[(HOSTCMD-8)*64+i]=HOSTBUF[i];
}
if(HOSTCMD>=16&&HOSTCMD<24)
{
for(i=0;i<64;i++) HOSTBUF[i]=byffer0[(HOSTCMD-16)*64+i];
}
if(HOSTCMD>24)
{
for(i=0;i<64;i++) HOSTBUF[i]=byffer1[(HOSTCMD-24)*64+i];
}
HOSTFLG=0;
}
}




Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru