[an error occurred while processing this directive]
Вот исходник для ARM
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено КонстантинТ 13 января 2005 г. 11:25
В ответ на: Так может прогнать его на ARM и AVR ? отправлено C0MA 13 января 2005 г. 11:11

struct IIR2_filter{
signed int filterNodes[4];
signed int filterCoefficients[5];
};

extern signed int IIR2( struct IIR2_filter *thisFilter, signed int newSample);

//-------------------------------------------------------
//Filter nodes offset relative to filter struct address
#define X21 0*4
#define X22 1*4

#define Y21 2*4
#define Y22 3*4

//Filter coefficient offset relative to filter struct address
#define B20 4*4
#define B21 5*4
#define B22 6*4

#define A21 7*4
#define A22 8*4

IIR2:
stmfd sp!, {r2-r5, lr}
//B2*x[n-2]
ldr r4,[r0,#B22]
ldr r5,[r0,#X22]
smull r2,r3,r4,r5
//B1*x[n-1]
ldr r4,[r0,#B21]
ldr r5,[r0,#X21]
str r5,[r0,#X22]
smlal r2,r3,r4,r5
//B0*x[n]
ldr r4,[r0,#B20]
mov r5,r1 //load new sample
str r5,[r0,#X21]
smlal r2,r3,r4,r5

//A2*y[n-2]
ldr r4,[r0,#A22]
ldr r5,[r0,#Y22]
smlal r2,r3,r4,r5
//A1*y[n-1]
ldr r4,[r0,#A21]
ldr r5,[r0,#Y21]
str r5,[r0,#Y22]
smlal r2,r3,r4,r5

mov r5,r2,LSR #30
orr r5,r5,r3,LSL #2

//store result
str r5,[r0,#Y21]
mov r0,r5
ldmfd sp!, {r2-r5, lr}
bx lr

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru