📄 hctl-2032_test.c
字号:
//###########################################################################
//
// 文件: HCTL-2032_Test.c
//
// 标题: DSP读取HCTL-2032计数值程序.
//
// 约定条件:
//
// 此程序需要DSP281x V1.00 头文件.
// 本程序被设置成"boot to H0" 的操作方式.
//
// 运行前,先检查DSP与HCTL-2032芯片的连接是否正确.
//
// 描述:
//
// 本例程用于DSP读取HCTL-2032芯片的编码器计数值.通过改变变量XorY的
// 值,可以选择需要观测的编码器输入端口。
//
// 观测变量:
// DATA
//Original by PERC.
//###########################################################################
//
// Ver | dd mmm yyyy | Who | Description of changes
// =====|=============|=======|==============================================
// 1.00| 02 Aug 2008 | M.R.H.| First Released
//###########################################################################
#include "DSP281x_Device.h" // DSP281x Headerfile Include File
#include "DSP281x_Examples.h" // DSP281x Examples Include File
#define AddrMSB 0x080022
#define Addr2nd 0x080025
#define Addr3nd 0x080029
#define AddrLSB 0x08002c
//Port Alias ***
#define EN1 GpioDataRegs.GPBDAT.bit.GPIOB6
#define EN2 GpioDataRegs.GPBDAT.bit.GPIOB4
#define SEL1 GpioDataRegs.GPBDAT.bit.GPIOB3// SEL1 pin
#define SEL2 GpioDataRegs.GPBDAT.bit.GPIOB5// SEL2 pin
#define RSTX GpioDataRegs.GPBDAT.bit.GPIOB0
#define RSTY GpioDataRegs.GPBDAT.bit.GPIOB1
#define XorY GpioDataRegs.GPBDAT.bit.GPIOB7
#define OE GpioDataRegs.GPBDAT.bit.GPIOB2 // OE pin
/******************/
//变量定义
unsigned char DATA_0;
unsigned char DATA_1;
unsigned char DATA_2;
unsigned char DATA_3;
int DATA;
int *ptrMSB;
int *ptr2nd;
int *ptr3nd;
int *ptrLSB;
void Gpio_select(void);
void fetch_32(void);
void delay_loop(int count);
void main(void)
{
InitSysCtrl();
InitGpio();
Gpio_select();
EN1 = 1;
EN2 = 0;
RSTX = 1;
RSTY = 1;
XorY = 1;//0 for X, 1 for Y
ptrMSB = (int*)AddrMSB;
ptr2nd = (int*)Addr2nd;
ptr3nd = (int*)Addr3nd;
ptrLSB = (int*)AddrLSB;
/* DINT;
IER = 0x0000;
IFR = 0x0000;
InitPieCtrl();
InitPieVectTable(); */
while(1) // Forever Loop
{
fetch_32();
DATA =(DATA_0 & 0x00ff)+(DATA_1*0x100)+(DATA_2*0x10000)+(DATA_3*0x1000000);
}
}
//----------------------------------------------------
//The End of Main
//----------------------------------------------------
// Some Useful local functions
void delay_loop(int count)
{
long i;
for (i = 0; i < count; i++) {}
}
void fetch_32(void)
{
/*Fetch 32-bit Data */
SEL1 = 0; // Select MSB
SEL2 = 1;
OE = 0; // Enable OE
DATA_3 = *ptrMSB; // Fetch the MSB
SEL1 = 1; // Select 2rd byte
SEL2 = 1;
DATA_2 = *ptr2nd; // Fetch the 2rd byte
SEL1 = 0; // Select 3rd byte
SEL2 = 0;
DATA_1 = *ptr3nd; // Fetch the 3rd byte
SEL1 = 1; // Select LSB
SEL2 = 0;
DATA_0 = *ptrLSB; // Fetch the LSB
OE = 1; // Dis-able OE
}
void Gpio_select(void)
{
Uint16 var1;
Uint16 var2;
Uint16 var3;
var1= 0x0000; // sets GPIO Muxs as I/Os
var2= 0x00FF; // sets GPIO DIR as outputs
var3= 0x0000; // sets the Input qualifier values
EALLOW;
GpioMuxRegs.GPAMUX.all=var1;
GpioMuxRegs.GPBMUX.all=var1;
/*GpioMuxRegs.GPDMUX.all=var1;
GpioMuxRegs.GPFMUX.all=var1;
GpioMuxRegs.GPEMUX.all=var1;
GpioMuxRegs.GPGMUX.all=var1;*/
GpioMuxRegs.GPADIR.all=var2; // GPIO PORTs as output
GpioMuxRegs.GPBDIR.all=var2; // GPIO DIR select GPIOs as output
/* GpioMuxRegs.GPDDIR.all=var2;
GpioMuxRegs.GPEDIR.all=var2;
GpioMuxRegs.GPFDIR.all=var2;
GpioMuxRegs.GPGDIR.all=var2;*/
GpioMuxRegs.GPAQUAL.all=var3; // Set GPIO input qualifier values
GpioMuxRegs.GPBQUAL.all=var3;
/* GpioMuxRegs.GPDQUAL.all=var3;
GpioMuxRegs.GPEQUAL.all=var3;*/
EDIS;
}
//===========================================================================
// End Program.
//===========================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -