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

📄 hctl-2032_test.c

📁 使用TMS320F2812读取编码器接口扩展芯片HCTL-2032的程序。使用TI提供的C/C++头文件与公用文件
💻 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 + -