summaryrefslogtreecommitdiff
path: root/digital/asserv/src/asserv
diff options
context:
space:
mode:
authorNicolas Schodet2008-04-14 00:54:40 +0200
committerNicolas Schodet2008-04-14 00:54:40 +0200
commit0f3cd5c8d41347ab6cecf518524f3d95cbb5ffb0 (patch)
tree6dfb566843549255d8cb32b117fad657fab7d210 /digital/asserv/src/asserv
parent00f8673c6a509dbda412c8fc3fe8f47a46715a09 (diff)
* digital/asserv/src/asserv:
- introduced a dead zone to match motor-power-avr one.
Diffstat (limited to 'digital/asserv/src/asserv')
-rw-r--r--digital/asserv/src/asserv/pwm_mp.avr.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/digital/asserv/src/asserv/pwm_mp.avr.c b/digital/asserv/src/asserv/pwm_mp.avr.c
index 4bc8f3f4..e47b6068 100644
--- a/digital/asserv/src/asserv/pwm_mp.avr.c
+++ b/digital/asserv/src/asserv/pwm_mp.avr.c
@@ -27,6 +27,7 @@
#include "pwm.h"
#include "modules/spi/spi.h"
+#include "modules/utils/utils.h"
#include "io.h"
/** Assign PWM outputs. */
@@ -66,8 +67,12 @@ pwm_mp_update (void)
/* Chip enable. */
PORTB &= ~_BV (0);
/* Convert to 12 bits. */
- uint16_t pwm1 = PWM1c (PWM1) << 1;
- uint16_t pwm2 = PWM2c (PWM2) << 1;
+ int16_t pwm1 = PWM1c (PWM1) << 1;
+ int16_t pwm2 = PWM2c (PWM2) << 1;
+ if (UTILS_ABS (pwm1) < 0x20)
+ pwm1 = 0;
+ if (UTILS_ABS (pwm2) < 0x20)
+ pwm2 = 0;
/* Send, computing checksum on the way. */
cks = 0x42;
v = ((pwm1 >> 4) & 0xf0) | ((pwm2 >> 8) & 0x0f);