static inline void main_periodic_task( void ) { // LED_TOGGLE(6); max1168_read(); RunOnceEvery(10, { DOWNLINK_SEND_BOOT(DefaultChannel, DefaultDevice, &sys_time.nb_sec); LED_PERIODIC(); });
uint8_t imu_event_task(void) { uint8_t valid = 0; if ( max1168_event() ) { valid = IMU_ACC | IMU_GYR; booz_imu.gyro_unscaled.p = max1168_values[IMU_GYRO_P_CHAN]; booz_imu.gyro_unscaled.q = max1168_values[IMU_GYRO_Q_CHAN]; booz_imu.gyro_unscaled.r = max1168_values[IMU_GYRO_R_CHAN]; booz_imu.accel_unscaled.x = max1168_values[IMU_ACCEL_X_CHAN]; booz_imu.accel_unscaled.y = max1168_values[IMU_ACCEL_Y_CHAN]; booz_imu.accel_unscaled.z = max1168_values[IMU_ACCEL_Z_CHAN]; imu_scale_gyro(); imu_scale_accel(); max1168_reset(); } if (do_max1168_read && imu_spi_selected == SPI_NONE) { Booz2ImuSetSpi16bits(); imu_spi_selected = SPI_SLAVE_MAX1168; do_max1168_read = FALSE; max1168_read(); } if (do_micromag_read && imu_spi_selected == SPI_NONE) { Booz2ImuSetSpi8bits(); imu_spi_selected = SPI_SLAVE_MM; do_micromag_read = FALSE; } if (imu_spi_selected == SPI_SLAVE_MM) micromag_read(); if ( micromag_event() ) { valid |= IMU_MAG; booz_imu.mag_unscaled.x = micromag_values[IMU_MAG_X_CHAN]; booz_imu.mag_unscaled.y = micromag_values[IMU_MAG_Y_CHAN]; booz_imu.mag_unscaled.z = micromag_values[IMU_MAG_Z_CHAN]; imu_scale_mag(); micromag_reset(); } return valid; }
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(); });