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

📄 test_main.c

📁 代码用于测试dsp2812的硬件功能
💻 C
字号:
//###########################################################################
//
// FILE:  TEST_main.c 
// TITLE: test DSP2812 functions;
// WRITER: ZHANG X.L.;
// DATE:  2008/5/12;
//
//###########################################################################

#include "DSP281x_Device.h"
#include "DSP281x_Examples.h" 

//#define TEST_DSP
//	#define TEST_FPAG_ECODER
#define TETS_PWM
#define TEST_SCI
//#define TEST_PSXII

// Prototype statements for functions found within this file.
extern STROKESWITCH StrokeSwitch;
const Uint16 DisplayData[8] = { 0x0101,0x0202,0x0303,0x0404,0x0505,0x0606,0x0707,0x0808};
Uint16 RWC1 = 0 , RWC2 = 0;
Uint32 SPI32 = 0; 
Uint16* pdata , data;
extern struct PSValue ps ;
int X1,X2,X3;

// Global symbols defined in the linker command file
unsigned int A=10000,B=10000,C=10000,D=10000; 
void main(void)
{
 
 	Uint16 i = 0 ; 
	InitDSP(); 
	X1=500;
	X2=900;
	X3=0x0077;

	while(1)
	{
		WriteBus(0x50,X1);
		WriteBus(0x51,X2);
	
     	WriteBus(0x52,X3);	
//	    RWC1 = (Uint32)(ReadBus(0x35));
//		RWC2 = (Uint32)(ReadBus(0x36));
//		WriteBus(2,B);
//		WriteBus(3,C);
//		WriteBus(4,D);
	}
#ifdef	TEST_DSP
/*
	// LED;
	EALLOW;
	GpioMuxRegs.GPADIR.all |= 0x78AA; 
	EDIS; 
	for(i = 0 ; i < 6 ; i++ )
	{
		GpioDataRegs.GPADAT.all ^= 0x78AA; 
		delay((Uint32)900000);
	}

 */	//Test the SPI;  
	CpuTimer0.InterruptCount = 0;
	while(CpuTimer0.InterruptCount < 1);
	for( i = 0;i<8;i++)
		SpiTx(DisplayData[i]); 
	CpuTimer0.InterruptCount = 0;
	while(CpuTimer0.InterruptCount < 2);

#ifdef TEST_FPAG_ECODER
	// ecoder with a and b two-phase signal conected to FPGA ;
	DigDisplay_dec8((Uint32)0);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1); 

	WriteBus(FPGA_ECODERCOUNTER_ADDR,0);

	CpuTimer0.InterruptCount = 0; 
	while(CpuTimer0.InterruptCount <= 100)
	{ 
		RWC1 = ReadBus(FPGA_ECODERCOUNTER_ADDR);
 		DigDisplay_dec8((Uint32)RWC1);
		if(	CpuTimer0.InterruptCount >= 10 ) 
		{
			CpuTimer0.InterruptCount = 0 ;
			GpioDataRegs.GPADAT.all ^= 0x78AA; 
//			WriteBus(FPGA_ECODERCOUNTER_ADDR,0);
		}
	}
#endif

	// PWM; 
#ifdef TEST_PWM
	CpuTimer0.InterruptCount = 0;
	while(CpuTimer0.InterruptCount < 1);
 	CfgPWM(1,1000,30);
	CfgPWM(2,1000,40);
	CfgPWM(3,1000,50);
	CfgPWM(4,1000,60);
	CfgPWM(5,1000,70);
	CfgPWM(6,1000,80);
	CfgPWM(7,1000,90);
	CfgPWM(8,1000,20);
	SPI32 = (Uint32)(100000 * EvbRegs.COMCONB.bit.FCMP6OE +
				 10000 * EvbRegs.COMCONB.bit.FCMP5OE +
				 1000 * EvbRegs.COMCONB.bit.FCMP4OE +
				 100 * EvaRegs.COMCONA.bit.FCMP3OE +
				 10 * EvaRegs.COMCONA.bit.FCMP2OE +
				 1 * EvaRegs.COMCONA.bit.FCMP1OE );
	DigDisplay_dec8(SPI32);
	CpuTimer0.InterruptCount = 0;
	while(CpuTimer0.InterruptCount < 2);
#endif

#ifdef TEST_SCI
 	// TEST SCI;
	for( i = 0 ; i < 5000 ; i++ )
	{
		SCITXD(0x55); 
		SCITXD(0xCC);
	}
#endif

   	// Test QEP; 
	CpuTimer0.InterruptCount = 0;
	while(CpuTimer0.InterruptCount < 1);
	CpuTimer0.InterruptCount = 0;
	 
	WriteBus(FPGA_MOTORSDIR_ADDR,0x000a);
	
	while(CpuTimer0.InterruptCount < 30)
	{
		SPI32 =  (Uint32)(EvaRegs.T2CNT) / 10  * 10000 + (Uint32)(EvbRegs.T4CNT) / 10;
		if(	(EvaRegs.T2CNT ==0xFFFF) || ( EvaRegs.T2CNT == 0))
			EvaRegs.T2CNT = 0x8000;
		if(	(EvbRegs.T4CNT ==0xFFFF) || ( EvbRegs.T4CNT == 0))
			EvbRegs.T4CNT = 0x8000;
		DigDisplay_dec8(SPI32);
	}

 	// check the internal ram;
	DigDisplay_dec8((Uint32)0);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1); 
	pdata = & data;
//	*((Uint16 *)0x003566) = 0x8888;
	*((Uint16 *)pdata) = 0x8888;
	DigDisplay_dec8((Uint32)8888);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 2); 

	DigDisplay_dec8((Uint32)0);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1); 
//	RWC1 = *((Uint16 *)0x003566);
	RWC1 = *((Uint16 *)pdata);
	RWC2 = ((RWC1 & 0xF000) >> 12) * 1000 
			+ ((RWC1 & 0x0F00) >> 8) * 100
			+ ((RWC1 & 0x00F0) >> 4) * 10
			+ (RWC1 & 0x000F) * 1; 
	DigDisplay_dec8((Uint32)RWC2);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 2);

	DigDisplay_dec8((Uint32)0);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1); 
//	*((Uint16 *)0x003566) = 0x8888;
	*((Uint16 *)pdata) = 0x7777;
	DigDisplay_dec8((Uint32)7777);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 2); 

	DigDisplay_dec8((Uint32)0);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1); 
//	RWC1 = *((Uint16 *)0x003566);
	RWC1 = *((Uint16 *)pdata);
	RWC2 = ((RWC1 & 0xF000) >> 12) * 1000 
			+ ((RWC1 & 0x0F00) >> 8) * 100
			+ ((RWC1 & 0x00F0) >> 4) * 10
			+ (RWC1 & 0x000F) * 1; 
	DigDisplay_dec8((Uint32)RWC2);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 2);

	// check the external ram;
	DigDisplay_dec8((Uint32)0);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1); 
	*((Uint16 *)0x003566) = 0x8888;
	DigDisplay_dec8((Uint32)8888);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 2); 

	DigDisplay_dec8((Uint32)0);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1); 
	RWC1 = *((Uint16 *)0x003566);
	RWC2 = ((RWC1 & 0xF000) >> 12) * 1000 
			+ ((RWC1 & 0x0F00) >> 8) * 100
			+ ((RWC1 & 0x00F0) >> 4) * 10
			+ (RWC1 & 0x000F) * 1; 
	DigDisplay_dec8((Uint32)RWC2);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 2);

	DigDisplay_dec8((Uint32)0);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1); 
	*((Uint16 *)0x000555) = 0x7777;
	DigDisplay_dec8((Uint32)7777);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 2); 

	DigDisplay_dec8((Uint32)0);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1); 
	RWC2 = *((Uint16 *)0x000555);
	RWC1 = ((RWC2 & 0xF000) >> 12) * 1000 
			+ ((RWC2 & 0x0F00) >> 8) * 100
			+ ((RWC2 & 0x00F0) >> 4) * 10
			+ (RWC2 & 0x000F) * 1; 
	DigDisplay_dec8((Uint32)RWC1);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 2);
#endif

	// read and write the FPGA ;
	//stroke switch;

	DigDisplay_dec8((Uint32)0);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 60 )
	{
		RWC1 = (Uint32)(ReadBus(FPGA_STROKESWITCH_ADDR));
		SPI32 = ((RWC1 & 0xC000 ) >> 14) * 10000000
				  + ((RWC1 & 0x3000 ) >> 12) * 1000000
				  + ((RWC1 & 0x0C00 ) >> 10) * 100000
				  + ((RWC1 & 0x0300 ) >> 8) * 10000
				  + ((RWC1 & 0x00C0 ) >> 6) * 1000
				  + ((RWC1 & 0x0030 ) >> 4) * 100
				  + ((RWC1 & 0x000C ) >> 2) * 10 
				  + ((RWC1 & 0x0003 ) >> 0) * 1 ;
		DigDisplay_dec8(SPI32);
	}

	//ultrared switch;
	DigDisplay_dec8((Uint32)0);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 60 )
	{
		RWC1 = (Uint32)(ReadBus(FPGA_ULTRAREDSWITCH_ADDR));
		SPI32 = ((RWC1 & 0xC000 ) >> 14) * 10000000
				  + ((RWC1 & 0x3000 ) >> 12) * 1000000
				  + ((RWC1 & 0x0C00 ) >> 10) * 100000
				  + ((RWC1 & 0x0300 ) >> 8) * 10000
				  + ((RWC1 & 0x00C0 ) >> 6) * 1000
				  + ((RWC1 & 0x0030 ) >> 4) * 100
				  + ((RWC1 & 0x000C ) >> 2) * 10 
				  + ((RWC1 & 0x0003 ) >> 0) * 1 ;
		DigDisplay_dec8(SPI32);
	}


/*	
	WriteBus(FPGA_YH_ADDR,0x1234);

	// write data ;
	DigDisplay_dec8((Uint32)0);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1);
	WriteBus(FPGA_MOTORSDIR_ADDR,0x5555);
	SPI32 = ((0x5555 & 0xF000) >> 12) * 1000 
			+ ((0x5555 & 0x0F00) >> 8) * 100
			+ ((0x5555 & 0x00F0) >> 4) * 10
			+ (0x5555 & 0x000F) * 1; 
	DigDisplay_dec8(SPI32);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 2);

	DigDisplay_dec8((Uint32)0);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1);
	WriteBus(FPGA_MOTORSDIR_ADDR,0xaaaa);
	SPI32 = ((0xaaaa & 0xF000) >> 12) * 1000 
			+ ((0xaaaa & 0x0F00) >> 8) * 100
			+ ((0xaaaa & 0x00F0) >> 4) * 10
			+ (0xaaaa & 0x000F) * 1; 
	DigDisplay_dec8(SPI32);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 2);
  
		while(!ReadBus(FPGA_RESET_ADDR));
		while(ReadBus(FPGA_RESET_ADDR));

		WriteBus(FPGA_YH_ADDR,2008);
	while(1)
	{
			// write data ;
		DigDisplay_dec8((Uint32)0);
		CpuTimer0.InterruptCount = 0;
	    while(CpuTimer0.InterruptCount < 1);
		WriteBus(FPGA_MOTORSDIR_ADDR,0x5555);
		SPI32 = ((0x5555 & 0xF000) >> 12) * 1000 
				+ ((0x5555 & 0x0F00) >> 8) * 100
				+ ((0x5555 & 0x00F0) >> 4) * 10
				+ (0x5555 & 0x000F) * 1; 
		DigDisplay_dec8(SPI32);
		CpuTimer0.InterruptCount = 0;
	    while(CpuTimer0.InterruptCount < 2);

		DigDisplay_dec8((Uint32)0);
		CpuTimer0.InterruptCount = 0;
	    while(CpuTimer0.InterruptCount < 1);
		WriteBus(FPGA_MOTORSDIR_ADDR,0xaaaa);
		SPI32 = ((0xaaaa & 0xF000) >> 12) * 1000 
				+ ((0xaaaa & 0x0F00) >> 8) * 100
				+ ((0xaaaa & 0x00F0) >> 4) * 10
				+ (0xaaaa & 0x000F) * 1; 
		DigDisplay_dec8(SPI32);
		CpuTimer0.InterruptCount = 0;
	    while(CpuTimer0.InterruptCount < 2); 

	}




*/

	DigDisplay_dec8((Uint32)0);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1);
	WriteBus(FPGA_SERVOMOTOR_1_ADDR,5000);
	DigDisplay_dec8((Uint32)5000);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 2);

	DigDisplay_dec8((Uint32)0);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1);
	WriteBus(FPGA_SERVOMOTOR_2_ADDR,10000);
	DigDisplay_dec8((Uint32)10000);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 2);

	DigDisplay_dec8((Uint32)0);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1);
	WriteBus(FPGA_SERVOMOTOR_3_ADDR,22000);
	DigDisplay_dec8((Uint32)22000);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 2);

	DigDisplay_dec8((Uint32)0);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1);
	WriteBus(FPGA_SERVOMOTOR_4_ADDR,25000);
	DigDisplay_dec8((Uint32)25000);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 2);

#ifdef	TEST_PSXII

	// test psxii;
	DigDisplay_dec8((Uint32)0);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 40 )
	{
		GetPSValue(&ps);
		SPI32 = ((ps.FunKey & 0xC0 ) >> 6) * 10000000
			  + ((ps.FunKey & 0x30 ) >> 4) * 1000000
			  + ((ps.FunKey & 0x0C ) >> 2) * 100000
			  + ((ps.FunKey & 0x03 ) >> 0) * 10000
			  + ((ps.Arrows & 0xC0 ) >> 6) * 1000
			  + ((ps.Arrows & 0x30 ) >> 4) * 100
			  + ((ps.Arrows & 0x0C ) >> 2) * 10 
			  + ((ps.Arrows & 0x03 ) >> 0) * 1 ;
		DigDisplay_dec8(SPI32);

	}
#endif

	// test ecoder;
	DigDisplay_dec8((Uint32)0);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 40 )
	{
		SPI32 = (Uint32)(ReadBus(FPGA_ECODERCOUNTER_ADDR));
		DigDisplay_dec8(SPI32);
	}

	// test echo;
	DigDisplay_dec8((Uint32)0);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1);
	DigDisplay_dec8((Uint32)11111111);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1);
	DigDisplay_dec8((Uint32)0);
	CpuTimer0.InterruptCount = 0;
    while(CpuTimer0.InterruptCount < 1);
	while(CpuTimer0.InterruptCount < 40 )
	{
		SPI32 = (Uint32)(ReadBus(FPGA_ULTRASONIC_1_ADDR));
		DigDisplay_dec8(SPI32);
	}


	for( ;; );
}
//===========================================================================
// End
//===========================================================================

⌨️ 快捷键说明

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