自从MWC2.3升级为2.4以后,好处确实多,比如cycle time很稳定的在2800,偶尔跳到2804,接导航版没有那三个永恒的I2C错误了,气压计定高也稳定了许多等,但新的问题随之而来,比如GPS导航版不再分担计算工作,计算由MWC飞控全权负责,这就使得开I2C_GPS占用的内存和开串口GPS所占用的内存一样多了,第一次编译的时候不通过,提示项目体积太大。被迫注释掉许多功能,却因计算任务太重延迟过高而无法稳飞。其实GPS功能对我不是很重要,我又想拥有超声波定高,一个办法是直接在飞控程序里添加超声波模块的程序,但会占用宝贵的IO口,另一个办法就是使用GPS导航版,通过I2C总线测距。在2.3时这个办法没有任何问题。但是到了2.4,由于使用超声波的前提是打开I2C_GPS,这就占用了大量的程序空间,产生了各种问题。所以我修改了一下程序,使其可以单独启用I2C_SONAR,亦可以同时启用GPS与超声波。在这里分享给大家。
改动部分为MultiWii.cpp、IMU.cpp、GPS.cpp以及GPS.h,其余的还是googlecode上下载的原版源码。以下是整个工程文件:http://pan.baidu.com/s/1kVEqKYV
|