主题中讨论的其他器件:Energia
您好!
我开始重新排列 compdcm_mpu9150示例、注释掉器件和代码的不相关器件、尝试更改传感器速度。 我使用引脚 PB_2上的示波器测量传感器速度。
我注意到的一件事是、这些中断的时序并不总是相同的时间量。 有些需要更长的时间、有些需要更短的时间、范围为%1-%3。 我要附上示波器输出的视频。 我能够更改 mpu9150的采样速度、并尝试了500Hz 和250Hz、但都有相同的问题。 中断时间不相等。
为了使 compdcm 算法正常工作、读取时间必须相等。 这是您可能引入到滤波系统的最坏类型的误差。 这是因为 mpu9150、还是因为示例中中断的处理方式:
//由 NVIC 作为 GPIO 端口 B 中断事件的结果调用。 对于这个 //应用程序、GPIO 端口 B 引脚2是 MPU9150 void IntGPIOb (void){的中断线 无符号长整型 ulStatus = GPIOIntStatus (GPIO_PORTB_BASE、TRUE); //清除设置的所有引脚中断 GPIOIntClear (GPIO_PORTB_BASE、ulStatus); if (ulStatus & GPIO_PIN_2){ // MPU9150数据已准备好检索和处理。 MPU9150DataRead (&g_sMPU9150Inst、MPU9150AppCallback、&g_sMPU9150Inst); } }
我认为该 ISR 的作用过大。 我尝试设置并使用布尔标志、并在 while 循环中执行 MPU9150DataRead、但它不起作用、因为当我执行此操作时、中断无法清除。
我几乎确定这种时序不规则性是因为 ISR、但我无法精确定位。
此致、
C.