智能车制作
标题:
中断程序
[打印本页]
作者:
跳跳糖
时间:
2015-4-10 16:55
标题:
中断程序
//*******************直立 中断*************************//
void PIT0_IRQHandler(void)
{ time3++;
PITCounter++;
g_nSpeedControlPeriod++;
SpeedControlOutput();
g_nDirectionControlPeriod++;
DirectionControlOutput();
//***********************时间片段0 - 采集数据 直立5MS******************//
if(PITCounter>=5)
{
if(g_nSpeedControlCount >= 20)
{
Speed_control(Speed_Set_Check); //0.4 Speed_Set_Check
g_nSpeedControlPeriod=0;
g_nSpeedControlCount=0;
}
if(g_nDirectionControlCount >= 2)
{
//Direction_control(Middle-64); //传递中线误差,计算出转弯速度
g_nDirectionControlPeriod=0;
g_nDirectionControlCount=0;
}
Calculate_Speed(); //编码器采集做差速度控制 测出编码器速度 Check_Speed
PITCounter = 0;
}
//***********************时间片段1- 控速 100Ms******************//
else if(PITCounter==1)
{
Get_Ang(); //1ms调整一次姿态 算出speed_Start直立速度
MotorOutput();
}
else if(PITCounter==2)
{
MotorOutput();
}
else if(PITCounter==3)
{
g_nSpeedControlCount++;
}
else if(PITCounter==4)
{
g_nDirectionControlCount++;//方向控制
}
//***********************时间片段3- 调正左右轮速10Ms ******************//
if(time3>=500&&TC==0)
{
time3=0;
Speed_gap();
}
led_turn(LED0);
PIT_Flag_Clear(PIT0); //清中断标志位
}
作者:
跳跳糖
时间:
2015-4-10 16:55
本帖最后由 跳跳糖 于 2015-4-10 17:00 编辑
//*******************直立 中断*************************//
void PIT0_IRQHandler(void)
{
time0++;time1++;time2++;time3++;time4++;
SpeedControlOutput();
DirectionControlOutput();
//***********************时间片段0 - 采集数据 直立5MS******************//
if(time0>=5)
{
time0=0;
Get_Ang(); //1ms调整一次姿态 算出speed_Start直立速度
Calculate_Speed(); //编码器采集做差速度控制 测出编码器速度 Check_Speed
}
//***********************时间片段1- 控速 100Ms******************//
if(time1>=50)
{
time1=0;
g_nSpeedControlCount++;
g_nSpeedControlPeriod++;
if(g_nSpeedControlCount >= SPEED_CONTROL_PERIOD)
{
Speed_control(Speed_Set_Check); //0.4
g_nSpeedControlPeriod=0;
g_nSpeedControlCount=0;
}
}
//***********************时间片段2 - 输出5Ms ******************//
if(time2>=5)
{
time2=0;
MotorOutput();
}
//***********************时间片段3- 调正左右轮速10Ms ******************//
if(time3>=1000&&TC==0)
{
time3=0;
Speed_gap();
}
//***********************时间片段4- 方向 10Ms******************//
if(time4>=10)
{
time4=0;
Direction_control(con_line); //传递中线误差,计算出转弯速度
g_nDirectionControlCount++;
g_nDirectionControlPeriod++;
if(g_nDirectionControlCount >= DIRECTION_CONTROL_PERIOD)
{
// Direction_control(con_line); //传递中线误差,计算出转弯速度
g_nDirectionControlPeriod=0;
g_nDirectionControlCount=0;
}
}
led_turn(LED0);
PIT_Flag_Clear(PIT0); //清中断标志位
作者:
跳跳糖
时间:
2015-4-10 16:56
本帖最后由 跳跳糖 于 2015-4-10 17:00 编辑
他们 有什么不同 我现在很纠结。第2个是我写的。。。。求救
作者:
夏日之恋
时间:
2015-5-2 17:34
跳跳糖 发表于 2015-4-10 16:56
他们 有什么不同 我现在很纠结。第2个是我写的。。。。求救
关于那个中断程序我们也出了一些问题 能不能交流
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2