summaryrefslogtreecommitdiffhomepage
path: root/digital
diff options
context:
space:
mode:
authorFlorent Duchon2013-04-02 17:41:50 +0200
committerFlorent Duchon2013-04-02 20:46:43 +0200
commit5dc17041cb8b61ffd7734e86360d1519a6315d7f (patch)
tree8ac31855a174db899c742b7670c1f29c009b7c96 /digital
parent8e0cadbc0bf1ac416b1ebfb7c5926f47cb68da64 (diff)
digital/beacon: add manual calibration task
Diffstat (limited to 'digital')
-rw-r--r--digital/beacon/src/calibration.c26
-rw-r--r--digital/beacon/src/calibration.h7
-rw-r--r--digital/beacon/src/main_avr.c1
3 files changed, 33 insertions, 1 deletions
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;
@@ -43,6 +45,15 @@ void calibration_init_structure(void)
}
/* 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)
{
calibration.state = CALIBRATION_INIT;
@@ -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
@@ -65,6 +66,9 @@ typedef struct
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);
/* This function stops the calibration task */
@@ -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);