第一次想写博客的Idea萌生2018年,没有别的Reason,(嘻嘻), 刚好度过四年的大学时光,有伤悲,也有收获,静下心来,沉淀一下子,because某些原因,耽误大半年,好了,回归主题吧,既然第一次写CSDN, 主要是了解整个博客的生产,出售过程,(想找表情包,没有看到,哈哈),有写的不好的地方,还请大家谅解!
给大家带来一段节选自曾经恩智浦智能车比赛用的PID控制程序,如下所示:
void PIT_IRQHandler() //2ms一次中断
{
static uint8 flag_100ms,cnt=0;
PIT_Flag_Clear(PIT0); //清中断标志位
if(start_flag == 0)
{
/* if(imgprocessed==0) //此段不超过0.5ms 200ms主频 6ms 或8ms 执行一次
{
img_extract(img,imgbuff,CAMERA_SIZE);
Search();
Direction_Control();
imgprocessed=1;
}*/
flag_100ms++;
if(flag_100ms>50)
{
flag_100ms=0;
Speed_Control(); //100ms进行一次速度控制 5Hz
LED_RED_TURN;
SpeedCount=0; // 又一次速度更新
}
}
cnt++;
if(cnt==1) //4ms运行一次 125Hz
{
Get_Attitude();
Angle_Calculate();
Angle_Control();
Get_Speed(); // 计算速度
}
if(cnt>=2)
{
cnt=0;
}
SpeedCount++;
Speed_Control_Output();
Moto_Out();
}
平衡控制是直立行车的关键因素之一,也是小车流畅运行的保障,因此控制周期(4ms)要设计成最小的。