- 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)