Beispiel #1
0
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(); });
Beispiel #3
0
void imu_periodic(void)
{

  ImuCristaArchPeriodic();
#ifdef USE_AMI601
  RunOnceEvery(10, { ami601_read(); });
Beispiel #4
0
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);