[an error occurred while processing this directive]
Блин, ПОЗОР мне. А сколько раз я смотрел на этот кусок. На третий день орлиный глаз заметил... Код внутри :) (+)
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

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

Отправлено Kolja 26 декабря 2003 г. 17:33
В ответ на: Hi ! Кто-то прикручивал к ADSP-2191 внешнюю память и запускал из неё прогу ? отправлено Kolja 26 декабря 2003 г. 15:50

_batch_isr:
.global _batch_isr;
ENA MM, DIS AS, DIS OL, DIS BR;

DMPG2=DMPG1;
DMPG1=0;


AX0=CCODE; DM(__INT_1_CCODE)=AX0;
AX0=CNTR; DM(__INT_1_CNTR)=AX0;
AX0=STACKA; DM(__INT_1_STACKA)=AX0;
AX0=STACKP; DM(__INT_1_STACKP)=AX0;
AX0=LPSTACKA; DM(__INT_1_LPSTACKA)=AX0;
AX0=LPSTACKP; DM(__INT_1_LPSTACKP)=AX0;

DM(__INT_1_AR)=AR;
AR=PASS AF;
DM(__INT_1_AF)=AR;
DM(__INT_1_AX0)=AX0; //!!!!!!!!!!!!!!!!!!!!!!!!
DM(__INT_1_AY0)=AY0;
DM(__INT_1_AX1)=AX1;
DM(__INT_1_AY1)=AY1;
DM(__INT_1_MX0)=MX0;
DM(__INT_1_MY0)=MY0;
DM(__INT_1_MX1)=MX1;
DM(__INT_1_MY1)=MY1;
DM(__INT_1_MR2)=MR2;
DM(__INT_1_MR1)=MR1;
DM(__INT_1_MR0)=MR0;
DM(__INT_1_SI)=SI;
AX0=SB; DM(__INT_1_SB)=AX0;
AX0=SE; DM(__INT_1_SE)=AX0;
DM(__INT_1_SR2)=SR2;
DM(__INT_1_SR1)=SR1;
DM(__INT_1_SR0)=SR0;
DM(__INT_1_I0)=I0;
DM(__INT_1_I1)=I1;
DM(__INT_1_I2)=I2;
DM(__INT_1_I3)=I3;
DM(__INT_1_I4)=I4;
DM(__INT_1_I5)=I5;
DM(__INT_1_I6)=I6;
DM(__INT_1_I7)=I7;
DM(__INT_1_M0)=M0;
DM(__INT_1_M1)=M1;
DM(__INT_1_M2)=M2;
DM(__INT_1_M3)=M3;
DM(__INT_1_M4)=M4;
DM(__INT_1_M5)=M5;
DM(__INT_1_M6)=M6;
DM(__INT_1_M7)=M7;


AX0 = DMPG2; DM(__INT_1_DMPG1) = AX0;
DMPG2=0;

AX0 = IJPG; DM(__INT_1_IJPG) = AX0;
IJPG=0;

AX0 = PX; DM(__INT_1_PX) = AX0;
AX0 = IOPG; DM(__INT_1_IOPG) = AX0;

I4 = ldf_stack_isr_1_base;// stack pointer
I5 = ldf_stack_isr_1_base;// frame pointer
L0=0; L1=0; L2=0; L3=0; // Clear L-regs
L4=0; L5=0; L6=0; L7=0; // Clear L-regs
M5 = -1; // Fixed value for stack push

M0=1;
I1=.heap_isr_1; // Start address of heap
DM(I1+=M0)=.heap_isr_1_size;
DM(I1+=M0)=0;

CAll _batch;

AX0 = DM(__INT_1_IOPG); IOPG = AX0;
AX0 = DM(__INT_1_PX); PX = AX0;
AX0 = DM(__INT_1_DMPG1); DMPG2 = AX0;
AX0 = DM(__INT_1_IJPG); IJPG = AX0;

M7=DM(__INT_1_M7);
M6=DM(__INT_1_M6);
M5=DM(__INT_1_M5);
M4=DM(__INT_1_M4);
M3=DM(__INT_1_M3);
M2=DM(__INT_1_M2);
M1=DM(__INT_1_M1);
M0=DM(__INT_1_M0);
I7=DM(__INT_1_I7);
I6=DM(__INT_1_I6);
I5=DM(__INT_1_I5);
I4=DM(__INT_1_I4);
I3=DM(__INT_1_I3);
I2=DM(__INT_1_I2);
I1=DM(__INT_1_I1);
I0=DM(__INT_1_I0);

SR0=DM(__INT_1_SR0);
SR1=DM(__INT_1_SR1);
SR2=DM(__INT_1_SR2);
AX0=DM(__INT_1_SE); SE=AX0;
AX0=DM(__INT_1_SB); SB=AX0;
SI= DM(__INT_1_SI);
MR0=DM(__INT_1_MR0);
MR1=DM(__INT_1_MR1);
MR2=DM(__INT_1_MR2);
MY1=DM(__INT_1_MY1);
MX1=DM(__INT_1_MX1);
MY0=DM(__INT_1_MY0);
MX0=DM(__INT_1_MX0);
AY1=DM(__INT_1_AY1);
AX1=DM(__INT_1_AX1);
AY0=DM(__INT_1_AY0);
AX0=DM(__INT_1_AX0); //!!!!!!!!!!!!!!!!!
AR= DM(__INT_1_AF);
AF=PASS AR;
AR= DM(__INT_1_AR);

AX0=DM(__INT_1_CCODE); CCODE=AX0;
AX0=DM(__INT_1_CNTR); CNTR=AX0;
AX0=DM(__INT_1_STACKA); STACKA=AX0;
AX0=DM(__INT_1_STACKP); STACKP=AX0;
AX0=DM(__INT_1_LPSTACKA); LPSTACKA=AX0;
AX0=DM(__INT_1_LPSTACKP); LPSTACKP=AX0;

DMPG1=DMPG2;
DMPG2=0;

RTI;

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru