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

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

Отправлено awizard 30 апреля 2003 г. 17:38
В ответ на: Ответ: (+) отправлено AndyДюх 29 апреля 2003 г. 08:15

Ситуация следующая.
Процессор медленно и печально шевелит своими внутренностями, неторопливо выплевывая нечто в SPORT0.
Есть 32-х разрядный циклический буфер на N=0x400 каналов:
.VAR/PM/RAM/CIRC Ch1H[N];{Старшие 16 бит}
.VAR/DM/RAM/CIRC Ch1L[N];{Младшие 16 бит}
Грузим в MR нулевой элемент буфера:
MR0 = DM(I0,M0);
MR1 = PM(I4,M4);{увы, загрузка в MR не параллелится ;-(( }
Далее должно происходить следующее:
1. По IRQ0 нужно инкрементировать значение текущего элемента.
Для меня идеальным вариантом показалось использование такого обработчика:
IRQ0Handler:
MR = MR+ MX0*MX0 (UU);
RTI; NOP NOP;
2. По IRQ1 нужно записать текущее значение MR в то место, откуда его взяли и загрузить следующее 32-х разрядное значение в MR.
Лобовое решение выглядит так:
DM(I0,M1) = MR0;{M1 = 1}
PM(I4,M5) = MR1;{M5 = 1}
MR0 = DM(I0,M0);
MR1 = PM(I4,M4);
Спинным мозгом чую, что это можно сделать быстрее и уместить код в 4 слова обработчика прерывания.
Все регистры свободны для использования, поскольку вся основная работа делается в обработчиках прерываний на теневых регистрах(основная программа проста до безобразия MLOOP: NOP; JUMP MLOOP;).

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru