summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorent Duchon2012-05-11 00:05:32 +0200
committerFlorent Duchon2012-05-11 00:16:45 +0200
commitbe9707599969a1cf1a80bff6fb13fbcb8a4b659f (patch)
treef015a423893fd31a5e7a8d62f95c24fef81cbe13
parent9b2bc49c9ab3cee251b8d5b8205d055a23c7ab82 (diff)
digital/beacon: laser_engage_angle_confirmation() hanndles top 0 position
-rw-r--r--digital/beacon/src/laser.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/digital/beacon/src/laser.c b/digital/beacon/src/laser.c
index 27638678..bc5b7466 100644
--- a/digital/beacon/src/laser.c
+++ b/digital/beacon/src/laser.c
@@ -85,7 +85,16 @@ void laser_inhibit_angle_confirmation(void)
/* This function configures the AVR OC3B interrupt that will send the angle LASER_SENDING_OFFSET after the latest rising edge */
void laser_engage_angle_confirmation(uint16_t value)
{
- OCR3A = value + LASER_CONFIRMATION_OFFSET;
+ if(value > CODEWHEEL_CPR - LASER_CONFIRMATION_OFFSET)
+ {
+ OCR3B = LASER_CONFIRMATION_OFFSET - (CODEWHEEL_CPR - value);
+ }
+ else
+ {
+ OCR3B = value + LASER_CONFIRMATION_OFFSET;
+ }
+
+ /* Enable interrupt */
TIMSK3 |= (1<<OCIE3B);
sei();
}
@@ -94,7 +103,6 @@ void laser_engage_angle_confirmation(uint16_t value)
/* This function returns the angle value in raw format */
uint16_t laser_get_angle_raw(void)
{
- uprintf("valeur de laser_get_angle_raw() = %d\r\n",laser.angle);
return laser.angle;
}