From 5dc17041cb8b61ffd7734e86360d1519a6315d7f Mon Sep 17 00:00:00 2001 From: Florent Duchon Date: Tue, 2 Apr 2013 17:41:50 +0200 Subject: digital/beacon: add manual calibration task --- digital/beacon/src/calibration.c | 26 +++++++++++++++++++++++++- digital/beacon/src/calibration.h | 7 +++++++ digital/beacon/src/main_avr.c | 1 + 3 files changed, 33 insertions(+), 1 deletion(-) (limited to 'digital') diff --git a/digital/beacon/src/calibration.c b/digital/beacon/src/calibration.c index 481e96c3..91b96e7f 100644 --- a/digital/beacon/src/calibration.c +++ b/digital/beacon/src/calibration.c @@ -29,8 +29,10 @@ #include "servo.h" #include "motor.h" #include "codewheel.h" +#include "buttons.h" -HAL_AppTimer_t calibrationTimer; // TIMER descripor used by the DEBUG task +HAL_AppTimer_t calibrationTimer; // TIMER descripor used by the calibration task +HAL_AppTimer_t ManualcalibrationTimer; // TIMER descripor used by the manual calibration task calibration_s calibration; @@ -42,6 +44,15 @@ void calibration_init_structure(void) calibration.laser_flag = CLEAR; } +/* This function starts the calibration task */ +void calibration_start_manual_task(void) +{ + calibrationTimer.interval = CALIBRATION_MANUAL_PERIOD; + calibrationTimer.mode = TIMER_REPEAT_MODE; + calibrationTimer.callback = calibration_manual_task; + HAL_StartAppTimer(&calibrationTimer); +} + /* This function starts the calibration task */ void calibration_start_task(void) { @@ -219,3 +230,16 @@ TCalibration_state calibration_get_state(void) { return calibration.state; } + +/* Manual calibration task */ +void calibration_manual_task(void) +{ + if(button_get_state(1) == BUTTON_PRESSED) + servo_angle_increase(SERVO_1); + if(button_get_state(2) == BUTTON_PRESSED) + servo_angle_decrease(SERVO_1); + if(button_get_state(3) == BUTTON_PRESSED) + servo_angle_increase(SERVO_2); + if(button_get_state(4) == BUTTON_PRESSED) + servo_angle_decrease(SERVO_2); +} diff --git a/digital/beacon/src/calibration.h b/digital/beacon/src/calibration.h index cb6ef303..2ed7e33e 100644 --- a/digital/beacon/src/calibration.h +++ b/digital/beacon/src/calibration.h @@ -30,6 +30,7 @@ #define CALIBRATION_FAST_TASK_PERIOD 22L #define CALIBRATION_SLOW_TASK_PERIOD 22L +#define CALIBRATION_MANUAL_PERIOD 30L #define FAST_SCANNING_OFFSET 20 #define SCANNING_STEP 1 @@ -64,6 +65,9 @@ typedef struct /* This function iniatializes the calibration structure*/ void calibration_init_structure(void); +/* This function starts the calibration task */ +void calibration_start_manual_task(void); + /* This function starts the calibration task */ void calibration_start_task(void); @@ -91,4 +95,7 @@ TLaser_flag_type calibration_get_laser_flag(void); /* This function returns the calibration state */ TCalibration_state calibration_get_state(void); +/* Manual calibration task */ +void calibration_manual_task(void); + #endif diff --git a/digital/beacon/src/main_avr.c b/digital/beacon/src/main_avr.c index 70332c1d..b312de7b 100644 --- a/digital/beacon/src/main_avr.c +++ b/digital/beacon/src/main_avr.c @@ -73,6 +73,7 @@ void APL_TaskHandler(void) laser_init(); motor_init(); calibration_start_task(); + calibration_start_manual_task(); motor_stop(); } network_set_state(APP_NETWORK_JOIN_REQUEST); -- cgit v1.2.3