📄 angle.c
字号:
void SCA100T_RD(uchar SCA100T_Cmd,uint *SCA100T_Dat)
{
uchar Data_Len,i=0;
switch(SCA100T_Cmd)
{
case RWTR:
Data_Len = TEMP_LEN;
break;
case RDAX:
case RDAY:
Data_Len = ANGLE_LEN;
break;
default:
break;
}
SCA100T_CS = 1;
SCA100T_CLK = 0;
SCA100T_CS = 0;
//delay(1);
for(i=0;i<8;i++)
{
SCA100T_CLK = 0;
SCA100T_MOSI = SCA100T_Cmd&0x80;
//delay(1);
SCA100T_CLK = 1;
SCA100T_Cmd = SCA100T_Cmd<<1;
//delay(1);
}
//delay(1);
*SCA100T_Dat = 0;
for(i=0;i<Data_Len;i++)
{
SCA100T_CLK = 1;
SCA100T_CLK = 0;
SCA100T_MISO = 1;
(*SCA100T_Dat) = (*SCA100T_Dat)<<1;
if(SCA100T_MISO)
{
(*SCA100T_Dat)++;
}
}
SCA100T_CS = 1;
}
//*********************************************************************
// 角度转换函数 Count2Angle()
// 入口参数: Angle_Count(16位) 角度传感器SCA100T的数字量
// 返回值: 角度值(float)
//*********************************************************************
float Count2Angle(float *Angle_X, float *Angle_Y)
{
uchar i;
uint temp_X=0,temp_Y=0;
uint Angle_Value_X=0,Angle_Value_Y=0;
for(i=0;i<5;i++)
{
SCA100T_RD(RDAX,&temp_X);
delay(2);
SCA100T_RD(RDAY,&temp_Y);
Angle_Value_X += temp_X;
Angle_Value_Y += temp_Y;
}
Angle_Value_X/=5;
Angle_Value_Y/=5;
delay(10);
(*Angle_X) = asin((Angle_Value_X-1024)/819);
(*Angle_X) = asin((Angle_Value_Y-1024)/819);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -