欢迎来到天天文库
浏览记录
ID:39584754
大小:1.16 MB
页数:19页
时间:2019-07-06
《飞控MWC_v2.2_代码解读》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、[转载]MWC v2.2 代码解读LOOP() (2013-04-0720:01:27)转载▼标签: 转载原文地址:MWC v2.2 代码解读LOOP()作者:问江南函数很长不用文字了贴个流程图,说明一切:voidloop(){ staticuint8_trcDelayCommand;//thisindicatesthenumberoftime(multipleofRCmeasurementat50Hz)thesticksmustbemaintainedtorunorswitchoffmotors staticuint8_trcSticks; //thisholdstick
2、spositionforcommandcombos uint8_taxis,i; int16_terror,errorAngle; int16_tdelta,deltaSum; int16_tPTerm,ITerm,DTerm; int16_tPTermACC=0,ITermACC=0,PTermGYRO=0,ITermGYRO=0; staticint16_tlastGyro[3]={0,0,0}; staticint16_tdelta1[3],delta2[3]; staticint16_terrorGyroI[3]={0,0,0}; staticint16_ter
3、rorAngleI[2]={0,0}; staticuint32_trcTime =0; staticint16_tinitialThrottleHold; staticuint32_ttimestamp_fixated=0; #ifdefined(SPEKTRUM) if(spekFrameFlags==0x01)readSpektrum(); //支持的一种特殊遥控器读取数据 #endif #ifdefined(OPENLRSv2MULTI) Read_OpenLRS_RC();
4、 //支持的一种特殊的遥控器读取数据 #endif if(currentTime>rcTime) //50Hz 时间过了20ms{ rcTime=currentTime+20000; computeRC(); //对已经接收的遥控接收的信号进行循环滤波,取4组数据,80MS,算平均值,大于平均值的减小2,小于平均值的增大2. //Failsaferoutine-addedbyMIS #ifdefined(FAILSAFE) if
5、(failsafeCnt>(5*FAILSAFE_DELAY)&&f.ARMED) //使之稳定,并设置油门到指定的值 { for(i=0;i<3;i++)rcData[i]=MIDRC; //丢失信号(in0.1sec)后,把所有通道数据设置为 MIDRC=1500 rcData[THROTTLE]=conf.failsafe_throttle; // 把油门设置为conf.failsafe_throttl
6、e if(failsafeCnt>5*(FAILSAFE_DELAY+FAILSAFE_OFF_DELAY)) //在特定时间之后关闭电机(in0.1sec) { go_disarm(); //Thiswillpreventthecoptertoautomaticallyrearmiffailsafeshutsitdownandprevents f.OK_TO_ARM=0;//进入锁定状态,之后起飞需要解锁 } failsafeEvents++;
7、 //掉落保护事件标志位至1 } if(failsafeCnt>(5*FAILSAFE_DELAY)&&!f.ARMED) { //Turnof"OkToarmtopreventthemotorsfromspinningafterrepoweringtheRXwithlowthrottlea
此文档下载收益归作者所有