📄 test_main.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 + -