예제 #1
0
파일: exti_local.cpp 프로젝트: barthess/u
static void mma8451_int2_cb(EXTDriver *extp, expchannel_t channel){
  (void)extp;
  (void)channel;
  chSysLockFromIsr();
  mma8451_sem.signalI();
  chSysUnlockFromIsr();
}
예제 #2
0
파일: exti_local.cpp 프로젝트: barthess/u
static void bmp085_cb(EXTDriver *extp, expchannel_t channel){
  (void)extp;
  (void)channel;
  chSysLockFromIsr();
  bmp085_sem.signalI();
  chSysUnlockFromIsr();
}
예제 #3
0
파일: exti_local.cpp 프로젝트: barthess/u
static void itg3200_cb(EXTDriver *extp, expchannel_t channel){
  (void)extp;
  (void)channel;
  chSysLockFromIsr();

#if !GYRO_UPDATE_PERIOD_HARDCODED
  if (itg3200_period_measured < 2){
    if (itg3200_period_measured == 0){
      tmStartMeasurement(&itg3200_tmup);
    }
    else if(itg3200_period_measured == 1){
      tmStopMeasurement(&itg3200_tmup);
      GyroUpdatePeriodUs = RTT2US(itg3200_tmup.last);
    }
    itg3200_period_measured++;
  }
#endif /* !GYRO_UPDATE_PERIOD_HARDCODED */

  itg3200_sem.signalI();
  lsm303_sem.signalI();
  chSysUnlockFromIsr();
}
예제 #4
0
void TimeKeeper::PPS_ISR_I(void) {

  drift_est.sample_prev = drift_est.sample;
  drift_est.sample = utc();
  ppstimesync_sem.signalI();
}