📄 f2407hall3.c
字号:
/* ==================================================================================
File name: F2407HALL3.C
Originator: Digital Control Systems Group
Texas Instruments
Description: This file contains source for the Capture drivers for the F2407
Target: TMS320F2407 family
=====================================================================================
History:
-------------------------------------------------------------------------------------
05-31-2007 Version 3.20: Using DSP2407
------------------------------------------------------------------------------------*/
#include <regs240x.h>
#include <f2407hall3.h>
void F2407_EV2_HALL3_Init(HALL3 *p)
{
int HallGpio_temp,HallGpio,i;
MCRC=MCRC&0x0fc7f; // Configure CAP4-6 as GPIO (IOPE7+IOPF0-1)
PEDATDIR=PEDATDIR&0x7fff; //Data Direction as input
PFDATDIR=PFDATDIR&0x0fcff;
HallGpio = PFDATDIR;
HallGpio = (HallGpio&0x03)<<1;
HallGpio_temp =PEDATDIR;
if((HallGpio_temp&0X0080)!=0) // HallGpio.2-0 = IOPF1-0+IOPE7
HallGpio=HallGpio+1;
for (i=0;i<=3;i++)
p->HallMap[i] == HallGpio;
switch(HallGpio) // motor table
{
case 1:{p->tab=5;break;}
case 2:{p->tab=3;break;}
case 3:{p->tab=4;break;}
case 4:{p->tab=1;break;}
case 5:{p->tab=6;break;}
case 6:{p->tab=2;break;}
default:p->tab=p->tab;
}
CAPCONB = HALL3_INIT_STATE; // Set up capture units, CAP4-6 using GP timer 4
CAPFIFOB = 0x1500; // Write "01" each CAPxFIFO for EV to believe that there is already an entry in the FIFO
MCRC=MCRC|0x0380; // Set up the capture4-6 pins to primary functions
}
void F2407_EV2_HALL3_Read(HALL3 *p)
{
int HallGpio_temp,HallGpio,i;
p->CapFlag = EVBIFRC; // Save capture flag register, convenient for Watch Window
if (p->CapFlag==0) // NO_EDGE_DETECTED: No hall signal edges detected on CAP4-6 (bits 0-2)
{
}
else // EDGE_DETECTED: Any hall signal edges detected on CAP1-3
{
EVBIFRC = 0x0007; // Clear all CAP1-3 Int-flags
MCRC=MCRC&0x0fc7f; // Configure CAP4-6 as GPIO (IOPE7+IOPF0-1)
PEDATDIR=PEDATDIR&0x7fff; //Data Direction as input
PFDATDIR=PFDATDIR&0x0fcff;
for (i=0;i<=3;i++)
{
HallGpio = PFDATDIR;
HallGpio = (HallGpio&0x03)<<1;
//HallGpio_temp =PEDATDIR;
if((PEDATDIR&0X0080)!=0) // HallGpio.2-0 = IOPF1-0+IOPE7
HallGpio=HallGpio+1;
p->HallMap[i] = HallGpio;
}
MCRC=MCRC|0x0380; // Set up the capture4-6 pins to primary functions
if((p->HallMap[0] == p->HallMap[1])&&(p->HallMap[2] == p->HallMap[3])&&(p->HallMap[1] == p->HallMap[3]))
p->HallMapPointer =p->HallMap[0];
switch(p->HallMapPointer) //old motor table
{
case 1:{p->tab=5;break;}
case 2:{p->tab=3;break;}
case 3:{p->tab=4;break;}
case 4:{p->tab=1;break;}
case 5:{p->tab=6;break;}
case 6:{p->tab=2;break;}
default:p->tab=0;
/* case 1:{p->tab=3;break;}
case 2:{p->tab=5;break;}
case 3:{p->tab=4;break;}
case 4:{p->tab=1;break;}
case 5:{p->tab=2;break;}
case 6:{p->tab=6;break;}
default:p->tab=0;*/
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -