?? dsp6711_edma.c
字號:
#include <c6x.h>
#include "c6211dsk.h"
#include "c6711interrupt.h"
#include "dsp6711_timer.h"
void EDMA_init(int size,int src,int smoshi,int dst,int dmoshi,int esize,int tcc);
//interrupt void time_isr();
void EDMA_init(int size,int src,int smoshi,int dst,int dmoshi,int esize,int tcc)
{
union
{
struct
{
unsigned int FS:1;
unsigned int LINK:1;
unsigned int PDTD2:1;
unsigned int PDTS3:1;
unsigned int rsv4:1;
unsigned int ATCC10:6;
unsigned int rsv11:1;
unsigned int ATCINT12:1;
unsigned int TCCM14:2;
unsigned int rsv15:1;
unsigned int TCC:4;//CHOOSE THE CHANNEL;TCC={0000b--1111b}
unsigned int TCINT:1;
unsigned int DUM:2;
unsigned int DD:1;
unsigned int SUM:2;
unsigned int DS:1;
unsigned int ESIZE:2;
unsigned int PRI:3;
}evg;
unsigned int reg;
}EDMA_OPT;
union
{
struct
{
unsigned int EE0:1;
unsigned int EE1:1;
unsigned int EE2:1;
unsigned int EE3:1;
unsigned int EE4:1;
unsigned int EE5:1;
unsigned int EE6:1;
unsigned int EE7:1;
unsigned int EE8:1;
unsigned int EE9:1;
unsigned int EE10:1;
unsigned int EE11:1;
unsigned int EE12:1;
unsigned int EE13:1;
unsigned int EE14:1;
unsigned int EE15:1;
unsigned int rsvbit31:16;
}eg;
unsigned int rg;
}EDMA_EER;
EDMA_EER.rg=*(volatile unsigned int *)EER;
//EDMA_CIER.reg=*(volatile unsigned int *)CIER;
switch(tcc)
{
case 0:
EDMA_OPT.reg=*(volatile unsigned int *)(EVENT0_PARAMS+OPT);
break;
case 1:
EDMA_OPT.reg=*(volatile unsigned int *)(EVENT1_PARAMS+OPT);
break;
case 2:
EDMA_OPT.reg=*(volatile unsigned int *)(EVENT2_PARAMS+OPT);
break;
case 3:
EDMA_OPT.reg=*(volatile unsigned int *)(EVENT3_PARAMS+OPT);
break;
case 4:
EDMA_OPT.reg=*(volatile unsigned int *)(EVENT4_PARAMS+OPT);
break;
case 5:
EDMA_OPT.reg=*(volatile unsigned int *)(EVENT5_PARAMS+OPT);
break;
case 6:
EDMA_OPT.reg=*(volatile unsigned int *)(EVENT6_PARAMS+OPT);
break;
case 7:
EDMA_OPT.reg=*(volatile unsigned int *)(EVENT7_PARAMS+OPT);
break;
case 8:
EDMA_OPT.reg=*(volatile unsigned int *)(EVENT8_PARAMS+OPT);
break;
case 9:
EDMA_OPT.reg=*(volatile unsigned int *)(EVENT9_PARAMS+OPT);
break;
case 10:
EDMA_OPT.reg=*(volatile unsigned int *)(EVENTA_PARAMS+OPT);
break;
case 11:
EDMA_OPT.reg=*(volatile unsigned int *)(EVENTB_PARAMS+OPT);
break;
case 12:
EDMA_OPT.reg=*(volatile unsigned int *)(EVENTC_PARAMS+OPT);
break;
case 13:
EDMA_OPT.reg=*(volatile unsigned int *)(EVENTD_PARAMS+OPT);
break;
case 14:
EDMA_OPT.reg=*(volatile unsigned int *)(EVENTE_PARAMS+OPT);
break;
case 15:
EDMA_OPT.reg=*(volatile unsigned int *)(EVENTF_PARAMS+OPT);
break;
default:break;
}
//EDMA_OPT.reg=*(volatile unsigned int *)(EVENT1_PARAMS+OPT);
*(volatile unsigned int *)EER=0x0000;//disable all interrupt
*(volatile unsigned int *)ECR=0xffff;
*(volatile unsigned int *)CIPR=0xffff;
*(volatile unsigned int *)CIER=0x0000;
EDMA_OPT.evg.PRI=1;
EDMA_OPT.evg.ESIZE=size;
EDMA_OPT.evg.DS=0;
EDMA_OPT.evg.SUM=smoshi;
EDMA_OPT.evg.DD=0;
EDMA_OPT.evg.DUM=dmoshi;
EDMA_OPT.evg.TCINT=0;
EDMA_OPT.evg.TCC=tcc;
EDMA_OPT.evg.FS=0;
// *(volatile unsigned int *)(EVENT1_PARAMS+OPT)=EDMA_OPT.reg;
switch(tcc)
{
case 0:
*(volatile unsigned int *)(EVENT0_PARAMS+SRC)=src;
*(volatile unsigned int *)(EVENT0_PARAMS+DST)=dst;
*(volatile unsigned int *)(EVENT0_PARAMS+CNT)=esize;
*(volatile unsigned int *)(EVENT0_PARAMS+IDX)=0x0;
*(volatile unsigned int *)(EVENT0_PARAMS+OPT)=EDMA_OPT.reg;
EDMA_EER.eg.EE0=1;
break;
case 1:
*(volatile unsigned int *)(EVENT1_PARAMS+SRC)=src;
*(volatile unsigned int *)(EVENT1_PARAMS+DST)=dst;
*(volatile unsigned int *)(EVENT1_PARAMS+CNT)=esize;
*(volatile unsigned int *)(EVENT1_PARAMS+IDX)=0x0;
*(volatile unsigned int *)(EVENT1_PARAMS+OPT)=EDMA_OPT.reg;
EDMA_EER.eg.EE1=1;
break;
case 2:
*(volatile unsigned int *)(EVENT2_PARAMS+SRC)=src;
*(volatile unsigned int *)(EVENT2_PARAMS+DST)=dst;
*(volatile unsigned int *)(EVENT2_PARAMS+CNT)=esize;
*(volatile unsigned int *)(EVENT2_PARAMS+IDX)=0x0;
*(volatile unsigned int *)(EVENT2_PARAMS+OPT)=EDMA_OPT.reg;
EDMA_EER.eg.EE2=1;
break;
case 3:
*(volatile unsigned int *)(EVENT3_PARAMS+SRC)=src;
*(volatile unsigned int *)(EVENT3_PARAMS+DST)=dst;
*(volatile unsigned int *)(EVENT3_PARAMS+CNT)=esize;
*(volatile unsigned int *)(EVENT3_PARAMS+IDX)=0x0;
*(volatile unsigned int *)(EVENT3_PARAMS+OPT)=EDMA_OPT.reg;
EDMA_EER.eg.EE3=1;
break;
case 4:
*(volatile unsigned int *)(EVENT4_PARAMS+SRC)=src;
*(volatile unsigned int *)(EVENT4_PARAMS+DST)=dst;
*(volatile unsigned int *)(EVENT4_PARAMS+CNT)=esize;
*(volatile unsigned int *)(EVENT4_PARAMS+IDX)=0x0;
*(volatile unsigned int *)(EVENT4_PARAMS+OPT)=EDMA_OPT.reg;
EDMA_EER.eg.EE4=1;
break;
case 5:
*(volatile unsigned int *)(EVENT5_PARAMS+SRC)=src;
*(volatile unsigned int *)(EVENT5_PARAMS+DST)=dst;
*(volatile unsigned int *)(EVENT5_PARAMS+CNT)=esize;
*(volatile unsigned int *)(EVENT5_PARAMS+IDX)=0x0;
*(volatile unsigned int *)(EVENT5_PARAMS+OPT)=EDMA_OPT.reg;
EDMA_EER.eg.EE5=1;
break;
case 6:
*(volatile unsigned int *)(EVENT6_PARAMS+SRC)=src;
*(volatile unsigned int *)(EVENT6_PARAMS+DST)=dst;
*(volatile unsigned int *)(EVENT6_PARAMS+CNT)=esize;
*(volatile unsigned int *)(EVENT6_PARAMS+IDX)=0x0;
*(volatile unsigned int *)(EVENT6_PARAMS+OPT)=EDMA_OPT.reg;
EDMA_EER.eg.EE6=1;
break;
case 7:
*(volatile unsigned int *)(EVENT7_PARAMS+SRC)=src;
*(volatile unsigned int *)(EVENT7_PARAMS+DST)=dst;
*(volatile unsigned int *)(EVENT7_PARAMS+CNT)=esize;
*(volatile unsigned int *)(EVENT7_PARAMS+IDX)=0x0;
*(volatile unsigned int *)(EVENT7_PARAMS+OPT)=EDMA_OPT.reg;
EDMA_EER.eg.EE7=1;
break;
case 8:
*(volatile unsigned int *)(EVENT8_PARAMS+SRC)=src;
*(volatile unsigned int *)(EVENT8_PARAMS+DST)=dst;
*(volatile unsigned int *)(EVENT8_PARAMS+CNT)=esize;
*(volatile unsigned int *)(EVENT8_PARAMS+IDX)=0x0;
*(volatile unsigned int *)(EVENT8_PARAMS+OPT)=EDMA_OPT.reg;
EDMA_EER.eg.EE8=1;
break;
case 9:
*(volatile unsigned int *)(EVENT9_PARAMS+SRC)=src;
*(volatile unsigned int *)(EVENT9_PARAMS+DST)=dst;
*(volatile unsigned int *)(EVENT9_PARAMS+CNT)=esize;
*(volatile unsigned int *)(EVENT9_PARAMS+IDX)=0x0;
*(volatile unsigned int *)(EVENT9_PARAMS+OPT)=EDMA_OPT.reg;
EDMA_EER.eg.EE9=1;
break;
case 10:
*(volatile unsigned int *)(EVENTA_PARAMS+SRC)=src;
*(volatile unsigned int *)(EVENTA_PARAMS+DST)=dst;
*(volatile unsigned int *)(EVENTA_PARAMS+CNT)=esize;
*(volatile unsigned int *)(EVENTA_PARAMS+IDX)=0x0;
*(volatile unsigned int *)(EVENTA_PARAMS+OPT)=EDMA_OPT.reg;
EDMA_EER.eg.EE10=1;
break;
case 11:
*(volatile unsigned int *)(EVENTB_PARAMS+SRC)=src;
*(volatile unsigned int *)(EVENTB_PARAMS+DST)=dst;
*(volatile unsigned int *)(EVENTB_PARAMS+CNT)=esize;
*(volatile unsigned int *)(EVENTB_PARAMS+IDX)=0x0;
*(volatile unsigned int *)(EVENTB_PARAMS+OPT)=EDMA_OPT.reg;
EDMA_EER.eg.EE11=1;
break;
case 12:
*(volatile unsigned int *)(EVENTC_PARAMS+SRC)=src;
*(volatile unsigned int *)(EVENTC_PARAMS+DST)=dst;
*(volatile unsigned int *)(EVENTC_PARAMS+CNT)=esize;
*(volatile unsigned int *)(EVENTC_PARAMS+IDX)=0x0;
*(volatile unsigned int *)(EVENTC_PARAMS+OPT)=EDMA_OPT.reg;
EDMA_EER.eg.EE12=1;
break;
case 13:
*(volatile unsigned int *)(EVENTD_PARAMS+SRC)=src;
*(volatile unsigned int *)(EVENTD_PARAMS+DST)=dst;
*(volatile unsigned int *)(EVENTD_PARAMS+CNT)=esize;
*(volatile unsigned int *)(EVENTD_PARAMS+IDX)=0x0;
*(volatile unsigned int *)(EVENTD_PARAMS+OPT)=EDMA_OPT.reg;
EDMA_EER.eg.EE13=1;
break;
case 14:
*(volatile unsigned int *)(EVENTE_PARAMS+SRC)=src;
*(volatile unsigned int *)(EVENTE_PARAMS+DST)=dst;
*(volatile unsigned int *)(EVENTE_PARAMS+CNT)=esize;
*(volatile unsigned int *)(EVENTE_PARAMS+IDX)=0x0;
*(volatile unsigned int *)(EVENTE_PARAMS+OPT)=EDMA_OPT.reg;
EDMA_EER.eg.EE14=1;
break;
case 15:
*(volatile unsigned int *)(EVENTF_PARAMS+SRC)=src;
*(volatile unsigned int *)(EVENTF_PARAMS+DST)=dst;
*(volatile unsigned int *)(EVENTF_PARAMS+CNT)=esize;
*(volatile unsigned int *)(EVENTF_PARAMS+IDX)=0x0;
*(volatile unsigned int *)(EVENTF_PARAMS+OPT)=EDMA_OPT.reg;
EDMA_EER.eg.EE15=1;
break;
default:break;
}
*(volatile unsigned int *)EER=EDMA_EER.rg;
//*(volatile unsigned int *)CIER=EDMA_CIER.reg;
}
void main()
{
int src=0x200;
int *p=(int *)src;
// enableSpecificINT(14,TINT0);
EDMA_init(0,0x200,0,0x600,1,0x10,1);
//timer_init(0,0x200);
*p=0x60;
//EDMA_start(0x200,0x600,0x10);
while(1);
}
//interrupt void time_isr()
//{
// *(volatile unsigned int *)ESR=0x2;
//EDMA_start(0x200,0x520,100);
// return;
//}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -