第一次想寫博客的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)要設計成最小的。