?? dsp6713_mainproc.c
字號:
/* ------------------------------------------------------------------ */
/* Copyright declaration */
/* ------------------------------------------------------------------ */
/* ------------------------------------------------------------------ */
/* FileName: DSP_mainproc.c */
/* Writen by: Yu zheng */
/* ------------------------------------------------------------------ */
/* define chip */
#define CHIP_6713
/* Include header files */
#include <c6x.h>
#include <csl.h>
#include <csl_irq.h>
#include <csl_edma.h>
#include <csl_mcbsp.h>
#include <csl_gpio.h>
#include "DSP6713_CHIP.h"
#include "DSP6713_EDMA.h"
#include "DSP6713_MCBSP.h"
#include "DSP6713_const.h"
#include "DSP6713_algorithm.h"
/* Global variables used in ISRs */
volatile Uint32 recv_done = FALSE;
volatile Uint32 xmit_done = FALSE;
volatile Uint16 PINGPONG = PING;
/* allocate inputbuffer and outputbuffer automatically */
#pragma DATA_ALIGN(inputbuffer_ping,8)
int inputbuffer_ping[DATA_LEN];
#pragma DATA_ALIGN(inputbuffer_pong,8)
int inputbuffer_pong[DATA_LEN];
#pragma DATA_ALIGN(inputbuffer_ping,8)
int outputbuffer_ping[DATA_LEN];
#pragma DATA_ALIGN(inputbuffer_pong,8)
int outputbuffer_pong[DATA_LEN];
/* declare CSL objects*/
GPIO_Handle hGpio;
MCBSP_Handle hMcbsp0;
MCBSP_Handle hMcbsp1;
EDMA_Handle hEdma_mcbsp_rcv;
EDMA_Handle hEdma_ping_rcv;
EDMA_Handle hEdma_pong_rcv;
EDMA_Handle hEdma_mcbsp_xmit;
EDMA_Handle hEdma_ping_xmit;
EDMA_Handle hEdma_pong_xmit;
/* include verctor table to call the IRQ ISR hookup */
extern far void vectors();
/*******************************************************/
void initGpio(void)
{
hGpio = GPIO_open(GPIO_DEV0,GPIO_OPEN_RESET);
GPIO_pinEnable(hGpio,GPIO_PIN10);
GPIO_pinDirection(hGpio,GPIO_PIN10,GPIO_OUTPUT);
GPIO_pinWrite(hGpio,GPIO_PIN10,1); // control signal output
}
/*******************************************************/
void main(void)
{
/* define vars and structures */
int wait = 0;
CSL_init(); /* initialize CSL library */
IRQ_setVecs(vectors); /* point to the IRQ vector table */
DSP6713_chipinit(); /* initialize chip set */
initGpio();
for (wait=0; wait<200; wait++);
// output reset signal by GPIO_10
GPIO_pinWrite(hGpio,GPIO_PIN10,0);
for (wait=0; wait<0x2FFF00; wait++);
GPIO_pinWrite(hGpio,GPIO_PIN10,1);
for (wait=0; wait<0x1FFF00; wait++);
my_mcbsp_start(mcbsp0); /* open,config,enable MCBSP0 */
/* Initialize convbuffers used in dataprocessing() function */
initconvbuf();
initbuf();
/* wait for data processing */
while(1)
{
/* FIR filter */
if (recv_done && xmit_done)
{
recv_done = FALSE;
xmit_done = FALSE;
if (PINGPONG == PING)
{
dataprocessing(PING);
PINGPONG = PONG;
}
else
{
dataprocessing(PONG);
PINGPONG = PING;
}
}
}
}
/* end of main */
/* ---------------------------------------------------------------- */
/* ---------------------------------------------------------------- */
/* vecs.asm hooks this up to IRQ 08 */
interrupt void c_int08(void)
{
if (EDMA_intTest(13))
{
recv_done = TRUE;
EDMA_intClear(13); /* clear the CIPR bit so future interrupt can be recognized */
}
else if (EDMA_intTest(12))
{
xmit_done = TRUE;
EDMA_intClear(12); /* clear the CIPR bit so future interrupt can be recognized */
}
return; /* the interrupr service routin must have return instructive */
}
/* ---------------------------------------------------------------- */
/* ---------------------------------------------------------------- */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -