예제 #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
void TimeKeeper::stop(void) {

  ready = false;

  chThdTerminate(worker);
  ppstimesync_sem.signal(); /* speed up termination */
  chThdWait(worker);
  worker = nullptr;
  Exti.pps(false);
}
예제 #4
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();
}
예제 #5
0
파일: it530.cpp 프로젝트: barthess/mnu_test
static void release(void) {
  protect_sem.signal();
}
예제 #6
0
파일: it530.cpp 프로젝트: barthess/mnu_test
static void acquire(void) {
  protect_sem.wait();
}
예제 #7
0
void TimeKeeper::PPS_ISR_I(void) {

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