예제 #1
0
int Baro_update(void)
{
    static uint32_t baroDeadline = 0;
    static int state = 0;

    if ((int32_t)(currentTime - baroDeadline) < 0)
        return 0;

    baroDeadline = currentTime;

    if (state) {
        baro.get_up();
        baro.start_ut();
        baroDeadline += baro.ut_delay;
        baro.calculate(&baroPressure, &baroTemperature);
        state = 0;
        return 2;
    } else {
        baro.get_ut();
        baro.start_up();
        Baro_Common();
        state = 1;
        baroDeadline += baro.up_delay;
        return 1;
    }
}
예제 #2
0
bool SensorReadBARO()
{
#if STACK_BARO
#ifdef BMP085
	if(SensorInitState.BARO_BRAND==BMP085) {
		if((getTickCount()>BaroDoTick)) {
			BaroDoTick = getTickCount() + 6;
			if(BaroDoState==0) {
				Sensor.rawBARO[1] = Sensor.BaroInfo.baroTemperature =  readRawTemperature();// - (28262-3534);
				TriggerRawPressure();
				Baro_Common();
				BaroDoTick = getTickCount() + 21;
				BaroDoState = 1;
				
				return false;
			}
			else {
				Sensor.rawBARO[0] = readRawPressure() - SensorInitState.BARO_BasePressure;
				Sensor.BaroInfo.baroPressure = readPressure();
				TriggerRawTemperature();
				BaroDoState = 0;
				
				return true;
			}
		}
		else
			return false;
	}
	else 
#endif
		static float temperature,pressure,BaroAlt;
		bool beUpdate;
		
		beUpdate = BMP280_GetData(&pressure, &temperature, &BaroAlt);;//TBM
		if(beUpdate) {
			Sensor.rawBARO[0] = Sensor.BaroInfo.baroPressure = pressure;
			Sensor.rawBARO[1] = Sensor.BaroInfo.baroTemperature = temperature;
			Baro_Common();
		}
		return beUpdate;
#else
	return false;
#endif
}