[fixedwing] if USE_BARO_BOARD: separate baro timer

before baro_periodic was running at PERIODIC_FREQUENCY in sensors_task,
which is too fast for ms5611 if periodic freq is > 100Hz
This commit is contained in:
Felix Ruess
2014-09-09 16:14:18 +02:00
parent 1eb6585eb8
commit a1ade09173
+17 -5
View File
@@ -121,6 +121,12 @@ PRINT_CONFIG_VAR(TELEMETRY_FREQUENCY)
*/ */
PRINT_CONFIG_VAR(MODULES_FREQUENCY) PRINT_CONFIG_VAR(MODULES_FREQUENCY)
#if USE_BARO_BOARD
#ifndef BARO_PERIODIC_FREQUENCY
#define BARO_PERIODIC_FREQUENCY 50
#endif
PRINT_CONFIG_VAR(BARO_PERIODIC_FREQUENCY)
#endif
#if USE_AHRS && USE_IMU #if USE_AHRS && USE_IMU
@@ -172,7 +178,9 @@ tid_t sensors_tid; ///< id for sensors_task() timer
tid_t attitude_tid; ///< id for attitude_loop() timer tid_t attitude_tid; ///< id for attitude_loop() timer
tid_t navigation_tid; ///< id for navigation_task() timer tid_t navigation_tid; ///< id for navigation_task() timer
tid_t monitor_tid; ///< id for monitor_task() timer tid_t monitor_tid; ///< id for monitor_task() timer
#if USE_BARO_BOARD
tid_t baro_tid; ///< id for baro_periodic() timer
#endif
void init_ap( void ) { void init_ap( void ) {
#ifndef SINGLE_MCU /** init done in main_fbw in single MCU */ #ifndef SINGLE_MCU /** init done in main_fbw in single MCU */
@@ -239,6 +247,9 @@ void init_ap( void ) {
modules_tid = sys_time_register_timer(1./MODULES_FREQUENCY, NULL); modules_tid = sys_time_register_timer(1./MODULES_FREQUENCY, NULL);
telemetry_tid = sys_time_register_timer(1./TELEMETRY_FREQUENCY, NULL); telemetry_tid = sys_time_register_timer(1./TELEMETRY_FREQUENCY, NULL);
monitor_tid = sys_time_register_timer(1.0, NULL); monitor_tid = sys_time_register_timer(1.0, NULL);
#if USE_BARO_BOARD
baro_tid = sys_time_register_timer(1./BARO_PERIODIC_FREQUENCY, NULL);
#endif
/** - start interrupt task */ /** - start interrupt task */
mcu_int_enable(); mcu_int_enable();
@@ -277,6 +288,11 @@ void handle_periodic_tasks_ap(void) {
if (sys_time_check_and_ack_timer(sensors_tid)) if (sys_time_check_and_ack_timer(sensors_tid))
sensors_task(); sensors_task();
#if USE_BARO_BOARD
if (sys_time_check_and_ack_timer(baro_tid))
baro_periodic();
#endif
if (sys_time_check_and_ack_timer(navigation_tid)) if (sys_time_check_and_ack_timer(navigation_tid))
navigation_task(); navigation_task();
@@ -595,10 +611,6 @@ void sensors_task( void ) {
ahrs_propagate(); ahrs_propagate();
#endif #endif
#if USE_BARO_BOARD
baro_periodic();
#endif
#if USE_GPS #if USE_GPS
gps_periodic_check(); gps_periodic_check();
#endif #endif