⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 encode.c

📁 本程序完成在dsp 的平台下
💻 C
📖 第 1 页 / 共 2 页
字号:
/*********************************************************************************/
void  initiCache()
{
	*(volatile unsigned int *)(Cache_CCFG_ADDR)=0x00000000;     //L2 memory is configured as 64K byte SRAM
	*(volatile unsigned int *) MAR0_ADDR=0;
	*(volatile unsigned int *) MAR8_ADDR=0;
	return;
}

/*********************************************************************************/
extern  unsigned int far RESET,NMI,RESV1,RESV2,ERROR4,ERROR5,ERROR6,ERROR7;
extern  unsigned int far ERROR8,ERROR9,ERROR10,ERROR11,ERROR12,ERROR13,ERROR14,ERROR15;
//extern  unsigned int far _INT4,_INT5,_INT6,_INT7,_INT8,_INT9,_INT10;
//extern  unsigned int _INT11,_INT12,_INT13,_INT14,_INT15;
unsigned int far *my_isr_jump_table[16]={
                        (unsigned int *) (&RESET),
                        (unsigned int *) (&NMI),
                        (unsigned int *) (&RESV1),
                        (unsigned int *) (&RESV2),
                        (unsigned int *) (&ERROR4),
                        (unsigned int *) (&ERROR5),
                        (unsigned int *) (&ERROR6),
                        (unsigned int *) (&ERROR7),
                        (unsigned int *) (&ERROR8),
                        (unsigned int *) (&ERROR9),
                        (unsigned int *) (&ERROR10),
                        (unsigned int *) (&ERROR11),
                        (unsigned int *) (&ERROR12),
                        (unsigned int *) (&ERROR13),
                        (unsigned int *) (&ERROR14),
                        (unsigned int *) (&ERROR15)};

/*********************************************************************************/
void  my_intr_hook(void (*fp)(void),int cpu_intr)
{
	if((cpu_intr>0)&&(cpu_intr<16))
		*((unsigned int *)my_isr_jump_table+cpu_intr)=(unsigned int)fp;

	return;
}

void  initiInterrupt()
{
	/*As for Interrupt multiplexer Register setting,we use default interrupt mapping*/
	/*EXT_INT4 is mapped to INT4,EXT_INT4 is ADV601_INT which interrupt C6211 for reading data from ADV601*/
	/*EXT_INT5 is mapped to INT5,EXT_INT5 is CPLD_INT1 which interrupt C6211 for reading the state of ADV601*/                         
	/*EXT_INT6 is mapped to INT6,EXT_INT6 is USB_INT which is used for USB*/
	/*EXT_INT7 is mapped to INT7,EXT_INT7 is UART_INT which is used for UART*/                          
	/*EDMA_INT is mapped to INT8*/
	/*SD_INT(SDRAM timer interrupt) is mapped to INT10*/
	/*DSPINT(host port to DSP interrupt) is mapped to INT13*/
	/*MCBSP1_SEND is mapped to INT14*/
	/*MCBSP1_REC  is mapped to INT15*/

//	my_intr_reset();
//	my_intr_hook(,CPU_INT5);	
//	my_intr_hook(,CPU_INT14);
//	my_intr_hook(USB_interrupt,CPU_INT6);				//hook USB_interrupt function with CPU_INT6
//	my_intr_hook(Isr_Mcbsp0_rec,CPU_INT13);
	
   *(unsigned int *) 0x019c0000=0x3dcd3143;//0x3dc02d43;//0x35802d43;	
   *(unsigned int *) 0x019c0004=0x250718a4;	

	INTR_ENABLE(CPU_INT_NMI);  
	INTR_DISABLE(CPU_INT4);
	INTR_DISABLE(CPU_INT5);
	INTR_DISABLE(CPU_INT6);
	INTR_DISABLE(CPU_INT7);
	INTR_ENABLE(CPU_INT8);
	INTR_DISABLE(CPU_INT9);
	INTR_DISABLE(CPU_INT10);
	INTR_DISABLE(CPU_INT11);
	INTR_DISABLE(CPU_INT12);
	INTR_ENABLE(CPU_INT13);
	INTR_DISABLE(CPU_INT14);
	INTR_DISABLE(CPU_INT15);
	
	INTR_GLOBAL_DISABLE(); 

	return;
}

/***********************************************************************************/
void my_intr_reset()
{
	/*CSR=02,IER=1,ICR=0xfff0*/
	unsigned int val;
	INTR_GLOBAL_DISABLE(); 

	/*disable interrupt*/
	SET_REG(IER,1);			//disabel all interrupt except reset
	SET_REG(ICR,0xfff0);	//clear Interrupt clear register 

	*(volatile unsigned int *)(INTR_MULTIPLEX_HIGH_ADDR)=0x3dc02d43;	

	/*initiate interrupt service table pointer*/
	val=0;
	SET_REG(ISTP,val);
	*(volatile unsigned int *)(EXTERNAL_INTR_POL_ADDR)=0x00000000;	//from low to high trigger interrupt

	return;
}

void emptyAdvFifo( int datanum)
{
	unsigned int temp;
	unsigned int *ptemp;
	int i;
	ptemp=gpAddVideo[0];
	temp=*(volatile unsigned int *) ADV601_DIR_REG3_ADDR;
	if ((temp&0x00000008)==8)
	{
				*(volatile unsigned int *)(EDMA_CIPR_ADDR)=2;
				*(volatile unsigned int *)(ParaForEvent0_start     )=0x40210001;
				*(volatile unsigned int *)(ParaForEvent0_start+0x4 )=ADV601_DIR_REG2_ADDR;
				*(volatile unsigned int *)(ParaForEvent0_start+0x8 )=datanum;
				*(volatile unsigned int *)(ParaForEvent0_start+0xc )=(unsigned int )ptemp+2;
				*(volatile unsigned int *)(ParaForEvent0_start+0x10)=0;
				*(volatile unsigned int *)(ParaForEvent0_start+0x14)=0;
				*(volatile unsigned int *)(EDMA_ESR_ADDR)=0x2;
	}	
		temp=*(volatile unsigned int *)(EDMA_CIPR_ADDR);
		while ((temp&0x2)==0) 
		{
			temp=*(volatile unsigned int *)(EDMA_CIPR_ADDR);
			i++;
			if (i>=250) temp=2;
		}

}

void  emptydatabuf()
{
	unsigned int   i;
	unsigned int*  ptemp1;
	unsigned int*  ptemp2;
	ptemp1=(unsigned int*)gpAddVideo[0];
	ptemp2=(unsigned int*)gpAddVideo[1];
	for(i=0;i<2500;i++)
	{
	ptemp1[i]=0;
	ptemp2[i]=0;
	}
}
//=========================== Default Bin Widths:	=======================
unsigned short BWC4Dcomp[84] =

	{
		0x0157, 0x02FC, 0x002F, 0x15BB, 0x002F, 0x15A1, 0x02C0, 0x0175, 0x008E, 0x0739,
		0x008E, 0x0733, 0x02CE, 0x016D, 0x008D, 0x073E, 0x008E, 0x0735, 0x02C9, 0x0170,
		0x008E, 0x0739, 0x008E, 0x0733, 0x0597, 0x00B7, 0x016F, 0x02CB, 0x0170, 0x02C9,
		0x059D, 0x00B6, 0x016F, 0x02CB, 0x0170, 0x02C9, 0x0599, 0x00B7, 0x016F, 0x02CB,
		0x0170, 0x02C9, 0x0B38, 0x005B, 0x031B, 0x014A, 0x031D, 0x0149, 0x0B31, 0x005C,
		0x031A, 0x014A, 0x031D, 0x0149, 0x0B36, 0x005B, 0x031A, 0x014A, 0x031D, 0x0149,
		0x1661, 0x002E, 0x0659, 0x00A1, 0x065E, 0x00A1, 0x1670, 0x002E, 0x065A, 0x00A1,
		0x065E, 0x00A1, 0x167D, 0x002E, 0x065B, 0x00A1, 0x065F, 0x00A1, 0x1522, 0x0030,
		0x0656, 0x00A2, 0x065C, 0x00A1
	};
/*
{
	0x0006, 0xa417, 0x0005, 0xc62b, 0x0005, 0xc62b, 0x001d, 0x23d5, 0x0018, 0x2b46,
	0x0018, 0x2b46, 0x0022, 0x1ddc, 0x001c, 0x2410, 0x001c, 0x2410, 0x0022, 0x1ddc,
	0x001c, 0x2410, 0x001c, 0x2410, 0x0055, 0x0c1a, 0x0046, 0x0e9d, 0x0046, 0x0e9d,
	0x0066, 0x0a16, 0x0054, 0x0c2e, 0x0054, 0x0c2e, 0x0066, 0x0a16, 0x0054, 0x0c2e,
	0x0054, 0x0c2e, 0x0155, 0x0301, 0x011a, 0x03a1, 0x011a, 0x03a1, 0x0199, 0x0281,
	0x0153, 0x0306, 0x0153, 0x0306, 0x0199, 0x0281, 0x0153, 0x0306, 0x0153, 0x0306,
	0x047e, 0x00e4, 0x03b6, 0x0114, 0x03b6, 0x0114, 0x0564, 0x00be, 0x0474, 0x00e6,
	0x0474, 0x00e6, 0x0564, 0x00be, 0x0474, 0x00e6, 0x0474, 0x00e6, 0x0810, 0x007f,
	0x06a6, 0x009a, 0x06a6, 0x009a
};
*/
unsigned short BWC4Lcomp[84] =

	{
		0x0157, 0x02FC, 0x002F, 0x15BB, 0x002F, 0x15A1, 0x02C0, 0x0175, 0x008E, 0x0739,
		0x008E, 0x0733, 0x02CE, 0x016D, 0x008D, 0x073E, 0x008E, 0x0735, 0x02C9, 0x0170,
		0x008E, 0x0739, 0x008E, 0x0733, 0x0597, 0x00B7, 0x016F, 0x02CB, 0x0170, 0x02C9,
		0x059D, 0x00B6, 0x016F, 0x02CB, 0x0170, 0x02C9, 0x0599, 0x00B7, 0x016F, 0x02CB,
		0x0170, 0x02C9, 0x0B38, 0x005B, 0x031B, 0x014A, 0x031D, 0x0149, 0x0B31, 0x005C,
		0x031A, 0x014A, 0x031D, 0x0149, 0x0B36, 0x005B, 0x031A, 0x014A, 0x031D, 0x0149,
		0x1661, 0x002E, 0x0659, 0x00A1, 0x065E, 0x00A1, 0x1670, 0x002E, 0x065A, 0x00A1,
		0x065E, 0x00A1, 0x167D, 0x002E, 0x065B, 0x00A1, 0x065F, 0x00A1, 0x1522, 0x0030,
		0x0656, 0x00A2, 0x065C, 0x00A1
	};
/*
{
	0x0006, 0xa417, 0x0005, 0xc62b, 0x0005, 0xc62b, 0x001d, 0x23d5, 0x0018, 0x2b46,
	0x0018, 0x2b46, 0x0022, 0x1ddc, 0x001c, 0x2410, 0x001c, 0x2410, 0x0022, 0x1ddc,
	0x001c, 0x2410, 0x001c, 0x2410, 0x0055, 0x0c1a, 0x0046, 0x0e9d, 0x0046, 0x0e9d,
	0x0066, 0x0a16, 0x0054, 0x0c2e, 0x0054, 0x0c2e, 0x0066, 0x0a16, 0x0054, 0x0c2e,
	0x0054, 0x0c2e, 0x0155, 0x0301, 0x011a, 0x03a1, 0x011a, 0x03a1, 0x0199, 0x0281,
	0x0153, 0x0306, 0x0153, 0x0306, 0x0199, 0x0281, 0x0153, 0x0306, 0x0153, 0x0306,
	0x047e, 0x00e4, 0x03b6, 0x0114, 0x03b6, 0x0114, 0x0564, 0x00be, 0x0474, 0x00e6,
	0x0474, 0x00e6, 0x0564, 0x00be, 0x0474, 0x00e6, 0x0474, 0x00e6, 0x0810, 0x007f,
	0x06a6, 0x009a, 0x06a6, 0x009a
};
*/

/*******************EDMA USAGE*******************************/
/*				*(volatile unsigned int *)(EDMA_CIPR_ADDR)=2;
				*(volatile unsigned int *)(ParaForEvent0_start     )=0x40210001;
				*(volatile unsigned int *)(ParaForEvent0_start+0x4 )=ADV601_DIR_REG2_ADDR;
				*(volatile unsigned int *)(ParaForEvent0_start+0x8 )=250;
				*(volatile unsigned int *)(ParaForEvent0_start+0xc )=(unsigned int )ptemp+2;
				*(volatile unsigned int *)(ParaForEvent0_start+0x10)=0;
				*(volatile unsigned int *)(ParaForEvent0_start+0x14)=0;
				*(volatile unsigned int *)(EDMA_ESR_ADDR)=0x2;
				databuflong=databuflong+250;
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -