第五届飞思卡尔智能车电磁组获奖程序_第1页
第五届飞思卡尔智能车电磁组获奖程序_第2页
第五届飞思卡尔智能车电磁组获奖程序_第3页
第五届飞思卡尔智能车电磁组获奖程序_第4页
第五届飞思卡尔智能车电磁组获奖程序_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

include common defines and macros include derivative h derivative specific definitions include include include include pragma LINK INFO DERIVATIVE mc9s12xs128 define K 1 define N 3 unsigned int i 0 j 0 m 0 n 0 unsigned char str 0 signed int b 0 c 0 d 0 e 0 f 0 g 0 spe 0 r 0 l x3 y z x1 x2 x4 int time int zd 0 flag int pp 电机 PID 定义 int SetPoint 0 设定目标 期望值 int FeedBack 0 float KKp 1 5 比例常数 float KKi 0 float KKd 0 6 微分常数 signed int EE0 0 当前误差 signed int EE1 0 Error 1 signed int EE2 0 Error 2 signed int EError0 0 EError1 0 signed int iiIncpid 0 int sp 0 舵机 PID 定义 float Kp 3 比例常数 float Ki 1 float Kd 4 2 微分常数 signed int E0 0 当前误差 signed int E1 0 Error 1 signed int E2 0 Error 2 signed int Error0 0 Error1 0 signed int iIncpid 0 电机 PID unsigned int Getspeed int cch1 int cch2 EE0 cch1 cch2 增量计算 EError0 EE0 EE1 EError1 EE1 EE2 iiIncpid int KKi EError0 KKp EE0 KKd EError0 EError1 EE1 EE0 EE2 EE1 存储误差 用于下次计算 sp iiIncpid if sp 210 sp 210 if sp 0 sp 0 return sp void sudu int SetPoint pp Getspeed SetPoint FeedBack PWMDTY2 pp 舵机 PID int Pcrtl int ch1 int ch2 E0 ch1 0 增量计算 Error0 E0 E1 Error1 E1 E2 iIncpid int Ki Error0 Kp E0 Kd Error0 Error1 E1 E0 E2 E1 存储误差 用于下次计算 return iIncpid void shache int sha int tim PWMDTY3 sha time tim PITCE PCE1 1 PITINTE PINTE1 1 启用中断通道0 zd 0 void vIOPortInit void DDRA 0X00 PROTB 键盘输出 PORTA 0X00 DDRB 0 xff DDRJ 0 xFF PROTB PTJ 0X80 void delayms int ms 40MHz 1ms int ii jj if ms 1 ms 1 for ii 0 ii ms ii for jj 0 jj30 PWMDTY3 30 zd 0 void TERMIO PutChar unsigned char ch while SCI1SR1 非空时 继续等待 SCI1DRL ch unsigned char TERMIO GetChar void while SCI1SR1 非空时 继续等待 return SCI1DRL void un unsigned char ch while SCI1SR1 void ADInit void ATD0CTL1 0 x00 ATD0CTL2 0X40 使能AD 清除标志 ATD0CTL3 0XB0 队列长度为6 依次存入结果寄存器 继续转换 ATD0CTL4 0X05 8位精度 总线频率32分频 ATD0CTL5 0X30 多通道 连续 从AD0开始转换 ATD0DIEN 0 x00 禁止数字输入 void PACN init void PACTL PAEN 0 TSCR1 0X80 快速清除flag PAOVF PAIF TSCR2 0X03 PACNT 0 PACTL PAEN 1 启动脉冲累加器A PACTL PAMOD 0 事件计数方式 PACTL PEDGE 1 PT7引脚上的出现上升沿时脉冲累加器计数器加1 TSCR1 TEN 1 void Pit0 Init void PITCFLMT PITE 0 禁用PIT PITCE PCE0 1 启用定时器通道0 PITMUX PMUX0 0 ch0连接到微定时器 PITMTLD0 0X0F 微时基0等于255个时钟周期 PITLD0 0XFFFF 超时期间 PITMTLD 1 PITLD 1 fBUS 时间计算 举例 16 MHz 总线计时器 最大超时时间等于 15 65536 64000000 0 01536s PITINTE PINTE0 1 启用中断通道0 PITCFLMT PITE 1 启用PIT void Pit1 Init void PITCFLMT PITE 0 禁用PIT PITCE PCE1 1 启用定时器通道0 PITMUX PMUX1 0 ch0 连接到微定时器0 PITMTLD1 0X0F 微时基0等于255个时钟周期 PITLD1 0XFFFF time out period PITMTLD 1 PITLD 1 fBUS 时间计算 For example for a 16 MHz bus clock the maximum time out period equals 15 65536 64000000 0 01536s PITINTE PINTE1 1 启用中断通道0 PITCFLMT PITE 1 启用PIT void bustor int x int n int i j m k for i 1 i n 1 i k 1 for j 1 jx j 1 m x j x j x j 1 x j 1 m k 0 if k 1 break void kongzhi void vIOPortInit SetBusCLK 64M ADInit SCI PORTB 0X00 PWMInit PACN init Pit0 Init Pit1 Init for ECT Init while ATD0STAT0 SCF 等待当前队列转换完成 b ATD0DR0L c ATD0DR1L d ATD0DR2L e ATD0DR3L f ATD0DR4L g ATD0DR5L printf x1 d x2 d FeedBack d EE0 d iiIncpid d sp d b d c d x1 x2 FeedBack EE0 iiIncpid sp b c if b 0 x10 x2 c 210 if d e x1 x1 if f560 y 560 if y80 x278 sudu 65 if d e PORTB 0XF0 shacheV 8 else PORTB 0X0F shacheV 52 else 直道 if x1 50 x1 50 x4 if x40 x0c PTJ 0X00 pragma CODE SEG DEFAULT pragma CODE SEG NEAR SEG NON BANKED void interrupt 66 PIT0 ISR void PITTF PTF0 1 CLER FLAG FeedBack PACNT PACNT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论