飞思卡尔智能汽车竞赛单片机程序(光电组).docx
《飞思卡尔智能汽车竞赛单片机程序(光电组).docx》由会员分享,可在线阅读,更多相关《飞思卡尔智能汽车竞赛单片机程序(光电组).docx(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、飞思卡尔智能汽车竞赛单片机程序(光电组)#includehidef.h/*commondefinesandmacros*/#includederivative.h/*derivative-specificdefinitions*/#includemath.htypedefcharint8;#defineMAXCOUNTER1500#defineWBUFSIZE10#defineINVALIDSENSOR1000longcounter=0x00000000;/foroutofcourseintblackcount=0;/forcrosscoursesunsignedintsensor=0;int
2、delta=0,delta0=0;/舵机偏转角0.1度intwWBUFSIZE=0,0,0,0,0,0,0,0,0,0;intw_p=0;/偏差mm缓冲器及其指针intw1=0,w2=0,w3=0;/平均偏差mmintDT=1;/timeinterval(ms)intPulseNumAll=0;/总脉冲数intu;/longitudespeed(mm/s)/intpsi_r0=0,psi_r1=0;/psirequested(degree)intH=100,L=200;/H是传感器到前轮距离。L是前后轮距离intrun_state=0;/stateofthecarintboma;intc=0;
3、intc1=0;intc2=0;intc3=0;intdecv=0;/*PLL部分*/voidSetBusCLK_64M(void)/OSC=16MHzCLKSEL=0X00;/disengagePLLtosystemPLLCTL_PLLON=1;/turnonPLLSYNR=0xc0|0x07;REFDV=0x80|0x01;POSTDIV=0x00;/pllclock=2*osc*(1+SYNR)/(1+REFDV)=128MHz;/BUSCLOCK=pllclock/2=64MHz/fVCO=2*fOSC*(SYNDIV+1)/(REFDIV+1)/fPLL=fVCO/(2POSTDIV
4、)/fBUS=fPLL/2/IfPOSTDIV=$00thenfPLLisidenticaltofVCO(dividebyone)._asm(nop);_asm(nop);while(!(CRGFLG_LOCK=1);/时钟校正同步,whenpllissteady,thenuseit;CLKSEL_PLLSEL=1;/engagePLLtosystem;/*PWM,I/O初始化*/voidPWM_Init(void)PWME=0x00;/PWMdisablePWMPOL=0xFF;/输出开场为高电平,当给定计数到来时变低电平PWMCLK=0x00;/PWM0,1和PWM4,5时钟源选择Cloc
5、kA;PWM2,3时钟源选择ClockB;PWMPRCLK=0x66;/ClockA=ClockB=64MHz/64=1MHzPWMCAE=0x00;/对齐方式:左对齐/PWMCTL_CON01=1;/PWM01合并16bitPWMPER0=200;/PWM1Period=200/1M=0.2ms,f=5kHZPWMDTY0=200;/占空比=(PWMDTYx+1)/(PWMPERx+1)100%PWME_PWME0=1;/电机enablePWME_PWME1=0;PWMCTL_CON45=1;/PWM45合并16bitPWMPER45=20000;/PWM5Period=20000/1M=2
6、0ms.f=50HZPWMDTY45=1490;/占空比=50%PWME_PWME5=1;/舵机enable/*数字端口初始化*/voidPort_Init(void)DDRA=0X00;/方向控制寄存器,设置A口输入DDR寄存器置0为输入,置1为输出PORTA=0X00;/数据寄存器,初始化时设置为全0DDRB=0X00;/同上PORTB=0X00;/DDRT=0x00;boma=PTIT0x0f;/TIMInputcaptureinitializevoidPT4_Capture_Init(void)TSCR1=0x80;/定时器使能TIE=0x00;/每一位对应相应通道中断禁止,0表示禁止
7、中断TCTL3=0x02;/EDGnBEDGnA1表示上升沿,2表示下降沿,3表示任何沿/PT4下降沿有效TIOS=0x00;/每一位对应通道的:0输入捕捉,1输出比拟TIE=0xff;/中断使能/PITinitialize,DTmsinterruptvoidPitInit(void)PITCFLMT_PITE=0;/disablePITPITCE_PCE0=1;/enabletimerchannel0PITMTLD0=64-1;/1MHzPITMUX=0X00;/ch0connectedtomicrotimer0PITLD0=DT*1000-1;/INTVERALmicrotimebases
8、(PITMTLD+1)*(PITLD+1)/fBUSPITINTE_PINTE0=1;/enableinteruptchannel0PITCFLMT_PITE=1;/enablePIT/PITCNT0,类似于自由记数器,只不过一直是递减,TCNT是一直递增/控制马达速度voidset_speed(void)if(counterMAXCOUNTER)/速度选择/switch(boma)case0x00:PWMDTY0=120;break;case0x01:PWMDTY0=110+delta/30*delta/100;break;case0x02:PWMDTY0=100+delta/30*delt
9、a/100;break;case0x04:PWMDTY0=90+delta/30*delta/100;break;case0x08:PWMDTY0=80+delta/30*delta/100;break;case0x09:PWMDTY0=80;break;case0x03:PWMDTY0=70+delta/30*delta/100;break;case0x07:PWMDTY0=60+delta/30*delta/100;break;case0x0e:PWMDTY0=50+delta/30*delta/100;break;case0x0f:PWMDTY0=40+delta/30*delta/10
10、0;break;default:break;/*if(boma)PWMDTY0=90;elsePWMDTY0=50+delta/30*delta/100;*/elsePWMDTY0=200;/读传感器值voidget_sensorvalue(void)sensor=PORTA|(PORTB0X1F)8);sensor=sensor;sensor=sensor0x1fff;/传感器值转换为偏差W(mm)/xxxxxxXxxxxxx/2109876543210intsensor_to_w(void)intw=INVALIDSENSOR+1;/invalidvalueswitch(sensor)ca
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 卡尔 智能 汽车 竞赛 单片机 程序 光电
限制150内