Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Цифровые сигнальные процессоры (DSP) и их применение»

Привес всем вот мой проект пожалуйста увожаемые посмотрите где я допустил ошыбочку

Отправлено Mihail 12 октября 2008 г. 12:41


Программа должен считовать сигнал с порта McBSP1 через канал 1 кантроллера DMA без не коких изминений должень передовать по каеалу 3 кантроллера DMA на регистр DXR11 порта McBSP1.Где я мог ощыб. пожалуйста если можно укажите в самом программе. С уважением Михаил.

*********************************************************************
Си файл
*********************************************************************
// НА БАЗЕ DSK Starter KIT 5402 программа должен считовать звук.
// сигнал с DRR11 (McBSP1)по каналу DMA1 и передать
// без изменений по каналу DMA3 в регистр передачи DXR11 (McDBP1)
#include <type.h>
#include <board.h>
#include <codec.h>
#include <mcbsp54.h>
#include <dma54xx.h>
#include <intr.h>
#include <math.h>
#define BUFFER_SIZE 4

/************************************************************/
/* Function Prototypes*/
/*****************************************************/

void Transfer_digital_signal();
extern void System_initalization();
extern void DMA3_int();
extern void DMA1_int();
/**************************************************************/
//
/*****************************************************/
HANDLE hHandset;
s16 data0;
s16 Buff_out;
int w,y;
int i;
int o;


#pragma DATA_SECTION (t_buffer,".t_buf")
int t_buffer[BUFFER_SIZE];
#pragma DATA_SECTION (r_buffer,".r_buf")
int r_buffer[BUFFER_SIZE];

int int_flag;
int flag=0;
int TX_buf[BUFFER_SIZE];
int RX_buf[BUFFER_SIZE];
/********************************************************/
/* MAIN*/
//*******************************************************/
void main()
{
brd_init(100); //set oscilator 100 MGz

System_initalization();
Transfer_digital_signal();
}
void System_initalization()
{
INTR_GLOBAL_DISABLE;

/* ustanovka parametr@ codeca */
hHandset = codec_open(HANDSET_CODEC);
codec_dac_mode(hHandset, CODEC_DAC_15BIT);
codec_adc_mode(hHandset, CODEC_ADC_15BIT);
codec_ain_gain(hHandset, CODEC_AIN_6dB);
codec_aout_gain(hHandset, CODEC_AOUT_MINUS_6dB);
codec_sample_rate(hHandset,SR_16000);


dma_initialization();
for(i=0;i<BUFFER_SIZE;i++)
{
t_buffer[i]=0;
r_buffer[i]=0;
TX_buf[i]=0;
RX_buf[i]=0;
}
INTR_INIT;
INTR_HOOK(DMAC1_TRAP, DMA1_int);
INTR_HOOK(DMAC3_TRAP, DMA3_int);

DMA_ENABLE(1);
DMA_ENABLE(3);

INTR_ENABLE(DMAC1);
INTR_ENABLE(DMAC3);

INTR_GLOBAL_ENABLE;


}
void Transfer_digital_signal()
{

flag=0;

for(;;)
{
while(int_flag==1)
{
int_flag=0;
flag++;
for(i=0;i<4;i++)
{

TX_buf[i]=RX_buf[i];
}

brd_led_toggle(BRD_LED0);

if(flag==200)
{
flag=0;
brd_led_toggle(BRD_LED1);
}
}
}

}
*********************************************************************
asm. файл
********************************************************************
.mmregs
.include "per_regs.inc"
.global _dma_initialization
.global _DMA3_int
.global _DMA1_int
.ref _TX_buf
.ref _RX_buf
.ref _t_buffer
.ref _r_buffer
.ref _int_flag
.ref _flag
BUFFER_SIZE .set 4

.text




_dma_initialization:

stm DMDST3,DMSA ;set destination address to DXR11
stm DXR11,DMSDN
stm DMSRC3,DMSA ;set source address to out
stm #(_t_buffer),DMSDN
stm DMCTR3 ,DMSA ;set buffer size to 100h words
stm #BUFFER_SIZE ,DMSDN
stm DMSFC3 ,DMSA
stm #0110000000000000b ,DMSDN
;0110~~~~~~~~~~~~ (DSYN) McBSP1 transmit sync event
;~~~~0~~~~~~~~~~~ (DBLW) Single-word mode
;~~~~~000~~~~~~~~ Reserved
;~~~~~~~~00000000 (Frame Count) Frame count is not ; relevant in ABU mode
stm DMMCR3 ,DMSA
stm #0101000101000001b ,DMSDN
;0~~~~~~~~~~~~~~~ (AUTOINIT) Autoinitialization disabled
;~1~~~~~~~~~~~~~~ (DINM) DMA Interrupts enabled
;~~0~~~~~~~~~~~~~ (IMOD) Interrupt at full buffer
;~~~1~~~~~~~~~~~~ (CTMOD) ABU (non-decrement) mode
;~~~~0~~~~~~~~~~~ Reserved
;~~~~~001~~~~~~~~ (SIND) Post increment source address
;~~~~~~~~01~~~~~~ (DMS) Source in data space
;~~~~~~~~~~0~~~~~ Reserved
;~~~~~~~~~~~000~~ (DIND) No modify on destination address ;~~~~~~~~~~~~~~01 (DMD) Destination in data space
stm DMIDX0,DMSA ;set element address index to +1
stm #0001h,DMSDN
;********************************************************************
stm DMSRC1,DMSA ;set source address to DRR10
stm DRR11,DMSDN
stm DMDST1,DMSA ;set destination address to 3000
stm #(_r_buffer),DMSDN
stm DMCTR1 ,DMSA ;set buffer size to 100h words
stm BUFFER_SIZE ,DMSDN
stm DMSFC1 ,DMSA
stm #0101000000000000b ,DMSDN
;0101~~~~~~~~~~~~ (DSYN) McBSP1 receive sync event
;~~~~0~~~~~~~~~~~ (DBLW) Single-word mode
;~~~~~000~~~~~~~~ Reserved
;~~~~~~~~00000000 (Frame Count) Frame count is not
; relevant in ABU mode
stm DMMCR1 ,DMSA
stm #0101000001001101b ,DMSDN
;0~~~~~~~~~~~~~~~ (AUTOINIT) Autoinitialization disabled
;~1~~~~~~~~~~~~~~ (DINM) DMA Interrupts enabled
;~~0~~~~~~~~~~~~~ (IMOD) Interrupt at full buffer
;~~~1~~~~~~~~~~~~ (CTMOD) ABU (non-decrement) mode
;~~~~0~~~~~~~~~~~ Reserved
;~~~~~000~~~~~~~~ (SIND) post incrim sourse addr
;~~~~~~~~01~~~~~~ (DMS) Source in data space
;~~~~~~~~~~0~~~~~ Reserved
;~~~~~~~~~~~011~~ (DIND) Post increment destination address
;~~~~~~~~~~~~~~01 (DMD) Destination in data space
stm DMIDX0,DMSA ;set element address index to +1
stm #0001h,DMSDN

stm #0000001010000000b ,DMPREC
;0~~~~~~~~~~~~~~~ (FREE) DMA stops on emulation stop
;~0~~~~~~~~~~~~~~ Reserved
;~~0~~~~~~~~~~~~~ (DPRC[5]) Channel 5 low priority
;~~~0~~~~~~~~~~~~ (DPRC[4]) Channel 4 low priority
;~~~~0~~~~~~~~~~~ (DPRC[3]) Channel 3 low priority
;~~~~~0~~~~~~~~~~ (DPRC[2]) Channel 2 low priority
;~~~~~~1~~~~~~~~~ (DPRC[1]) Channel 1 high priority
;~~~~~~~0~~~~~~~~ (DPRC[0]) Channel 0 low priority
;~~~~~~~~10~~~~~~ (INTOSEL) N/A
;~~~~~~~~~~0~~~~~ (DE[5]) Channel 5 disabled
;~~~~~~~~~~~0~~~~ (DE[4]) Channel 4 disabled
;~~~~~~~~~~~~0~~~ (DE[3]) Channel 3 disabled
;~~~~~~~~~~~~~0~~ (DE[2]) Channel 2 disabled
;~~~~~~~~~~~~~~0~ (DE[1]) Channel 1 enabled
;~~~~~~~~~~~~~~~0 (DE[0]) Channel 0 disabled
ret
;ОБРАБОТЧИК ПРЕРЫВАНИ...

_DMA1_int:

stm #4,brc
stm #(_r_buffer),ar2
stm #(_RX_buf),ar3


stm #(_t_buffer),ar5
stm #(_TX_buf),ar4

rptb end_transfer1-1
ld *ar2+,a
stl a,*ar3+

ld *ar4+,b
stl b,*ar5+

end_transfer1:

st #1,*(_int_flag)
ret



_DMA3_int:

stm #3,brc
stm #(_r_buffer),ar2
stm #(_RX_buf),ar3


stm #(_t_buffer),ar5
stm #(_TX_buf),ar4

rptb end_transfer1-1
ld *ar2+,a
stl a,*ar3+

ld *ar4+,b
stl b,*ar5+
end_transfer2:

ret

.end
******************************************************************
cmd файл
*********************************
MEMORY
{ /* ПАМЯТЬ ПРОГРАММ */
PAGE 0 : VECTORS ( RWXI ) : o = 0x0080, l = 0x0078
PROG ( RX ) : o = 0x00f8, l = 0x2000

/* ПАМЯТЬ ДАННЫХ */
PAGE 1 : SCRATCH ( RW ) : o = 0x0060, l = 0x0005
DATA1 ( RWI ) : o = 0x2100, l = 0x1f00
}

SECTIONS
{
.vectors : > VECTORS PAGE 0
.trap : load = 0x0062 PAGE 1
.text : > PROG PAGE 0
.switch : > DATA1 PAGE 1
.cinit : > DATA1 PAGE 1
.econst : > DATA1 PAGE 1
.ebss : > DATA1 PAGE 1
.sysmem : > DATA1 PAGE 1
.stack : > DATA1 PAGE 1
.t_buf : > DATA1 align(4) PAGE 1
.r_buf : > DATA1 align(4) PAGE 1
.out_buffer : > DATA1 align(4) PAGE 1

}


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 85:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru