void imu_periodic(void) { // read adc Max1168Periodic(); // read mag #if defined IMU_B2_MAG_TYPE && IMU_B2_MAG_TYPE == IMU_B2_MAG_MS2100 ms2100_periodic(&ms2100); #elif defined IMU_B2_MAG_TYPE && IMU_B2_MAG_TYPE == IMU_B2_MAG_AMI601 RunOnceEvery(10, { ami601_read(); });
void imu_periodic(void) { // check ssp idle if (imu_ssp_status != IMU_SSP_STA_IDLE) { imu_overrun++; return; //, DEBUG_IMU, IMU_ERR_OVERUN); } // setup 16 bits ImuSetSSP16bits(); // read adc imu_ssp_status = IMU_SSP_STA_BUSY_MAX1168; max1168_read(); #if defined IMU_B2_MAG_TYPE && IMU_B2_MAG_TYPE == IMU_B2_MAG_AMI601 RunOnceEvery(10, { ami601_read(); });
void imu_periodic(void) { ImuCristaArchPeriodic(); #ifdef USE_AMI601 RunOnceEvery(10, { ami601_read(); });
static inline void main_init(void) { mcu_init(); sys_time_register_timer((1. / PERIODIC_FREQUENCY), NULL); LED_ON(4); ami601_init(); downlink_init(); mcu_int_enable(); } static inline void main_periodic_task(void) { // RunOnceEvery(100, {DOWNLINK_SEND_ALIVE(DefaultChannel, DefaultDevice, 16, MD5SUM);}); RunOnceEvery(10, { ami601_read();}); } static inline void main_event_task(void) { mcu_event(); AMI601Event(on_mag); } static inline void on_mag(void) { LED_TOGGLE(4); ami601_status = AMI601_IDLE; struct Int32Vect3 bla = {ami601_values[0], ami601_values[1], ami601_values[2]}; DOWNLINK_SEND_IMU_MAG_RAW(DefaultChannel, DefaultDevice, &bla.x, &bla.y, &bla.z);