📄 qep.c
字号:
//----------------------------------------//
//-----------QEP.c-----------------------//
//test QEP0&QEP1,:EVA-------------------//
//can count encode from 0 to 65535,减到0后从65535减计数,加至PRE后从0再加.//
//--------------------------------------//
#include "f2407_c.h"
extern void QEPINIT();
extern void clearqep();
extern void AutoUp();
extern void SetQep(unsigned int uiangle);
extern char pc_fangbai;
extern unsigned long MaxerQep();
extern unsigned long Encode_counter;
extern unsigned int uiAutoUpPara1,uiAutoUpPara2,uiAutoUpPara3,uiAutoUpPara4;
unsigned long counter1;
extern unsigned long Maxest_counter,Maxer_counter;
char auto_qubai;
char autoUp_flag;
//---------------------------------------//
//----------int QEPINIT();---------------//
//--use LF2407A's EVA T2 to count encode-// //
//---by GuoJinf @2007.05.17----V0.1------//
//---------------------------------------//
//---------------------------------------//
void QEPINIT()
{
*T2PR = 0x0ffff; //T2's T is 0Xffff
*T2CON = 0x1870; //T2 +/- source from Encode
*T2CNT = 0x0; //clr T2
WSGR = 0x0000;
*CAPCONA = 0x0E000;
}
//-------------------------------------------------------//
//---------void clearqep();------------------------------//
//-------------------------------------------------------//
void ClearQep()
{
*T2PR = 0x0ffff; //T2's T is 0Xffff
*T2CON = 0x1870; //T2 +/- source from Encode
*T2CNT = 0x0; //clr T2
*CAPCONA = 0x0E000;
Maxest_counter = 0;
}
//-------------------------------------------------------//
//---------void SetQep(uint);------------------------------//
//-------------------------------------------------------//
void SetQep(unsigned int uiangle)
{
*T2CNT = ~uiangle + 1; //clr T2
// *CAPCONA = 0x0E000;
}
//-----------------------------------------------------------//
//--------unsigned long MaxerQep();--------------------------//
//--------
//-----------------------------------------------------------//
unsigned long MaxerQep()
{
unsigned long maxest;
maxest = Maxer_counter;
if((Encode_counter & 0xffff) < 0x7fff)
{
if(*T2CNT > Maxer_counter )
maxest = *T2CNT;
autoUp_flag=1;
pc_fangbai = 0x0;
}
Maxer_counter = maxest;
return (maxest);
}
//-------------------------------------------------------------//
//-----void AutoUp();------------------------------------------//
//-------------------------------------------------------------//
void AutoUp()
{
unsigned long counter2;
counter2 = counter1;
counter1 = Encode_counter;
if((counter1 < counter2) && ((counter1 & 0x00ffff)>0x7fff))
{
if(counter1 > 0xff69)
{
}
else if(counter1>0xfb1d && counter1 < 0xff69)
{
if(((counter2-counter1) < (uiAutoUpPara2 * 4)) && ((counter2-counter1)>uiAutoUpPara1))
{
auto_qubai = 0x1;
}
}
else if(Encode_counter>0xf159)
{
if(((counter2-counter1)<(uiAutoUpPara3* 4)) && ((counter2-counter1)>uiAutoUpPara1))
{
auto_qubai = 0x1;
}
}
else
{
if(((counter2-counter1)<(uiAutoUpPara4* 4)) && ((counter2-counter1)>uiAutoUpPara1))
{
auto_qubai = 0x1;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -