pi控制.docVIP

  • 6
  • 0
  • 约9.2千字
  • 约 23页
  • 2016-09-20 发布于河南
  • 举报
pi控制

pi控制 #include hidef.h /* common defines and macros */ #include MC9S12XS128.h /* derivative-specific definitions */ #pragma LINK_INFO DERIVATIVEmc9s12xs128 #pragma CODE_SEG NON_BANKED //定义数据// #define MotorCyc 100 #define RoundSpeed 55 #define StraightSpeed 70 #define GetNum 50000 #define Num 20 int WaitStart=0; int BlackPos=0; int LaserNum=0; int SetRudder; int k; int a; int PoDaoFlag; int l; int Judge; int RoundFlag; int sp; int Rudder; int SetSpeedN; int SpeedDty=0; int SpeedOut=0; int SpeedError; int SpeedError1; float Kp,Ki,Kd; struct{ int ErrorValue,ek0,ek1,ek2,DeltaUk0,Uk0; }SpeedPid; struct{ int ErrorValueR,ek0R,ek1R; float KpR,KdR; }RudderPD; int Laser[14]; int Jump[2]; //函数声明// void RunCar(void); void RudderControl(int SetRudder); void Give(void); void StopCar(void); void Dely(void); void PosJudge(void); void GetSpeed(void); void SpeedDeal(int sp); void SetSpeed(int SpeedDty); void RunLineJudge(void); void SpecialDeal(void); void Clear(void); void PoDaoJudge(void); //总线时钟设定// void Init_BusCLK(void){ CLKSEL=0x00; PLLCTL_PLLON=1; SYNR=1; REFDV=1; //总线时钟16M// POSTDIV=0x00; _asm(nop); _asm(nop); while(!(CRGFLG_LOCK==1)); CLKSEL_PLLSEL=1; } //初始化脉冲累加器PT7// void Init_ECT(void){ PACTL=0x50; } //舵机PD// void Init_RudderPd(void){ RudderPD.KpR=17; RudderPD.KdR=16; RudderPD.ErrorValueR=10; RudderPD.ek0R=0; RudderPD.ek1R=0; } //速度PID初始化// void Init_SpeedPID(void){ Kp=0.2; Ki=0.1; Kd=0; SpeedPid.ErrorValue=3; SpeedPid.DeltaUk0=0; SpeedPid.Uk0=0; SpeedPid.ek0=0; SpeedPid.ek1=0; SpeedPid.ek2=0; } //实时中断初始化// void Init_RTI(void) { RTICTL=0 CRGINT_RTIE=1; } //PIT模块初始化// void Init_PIT(void){ PITCFLMT_PITE=0; PITMTLD0=79; PITLD0=999; PITCE_PCE0=1; PITMUX_PMUX0=0; PITINTE_PINTE0=1; PITCFLMT_PITE=1; } //PWM初始化// void Init_PWM(void){ PWME=0x

文档评论(0)

1亿VIP精品文档

相关文档