summaryrefslogtreecommitdiff
path: root/digital/asserv/src/asserv/pwm_mp.avr.c
diff options
context:
space:
mode:
Diffstat (limited to 'digital/asserv/src/asserv/pwm_mp.avr.c')
-rw-r--r--digital/asserv/src/asserv/pwm_mp.avr.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/digital/asserv/src/asserv/pwm_mp.avr.c b/digital/asserv/src/asserv/pwm_mp.avr.c
index 4ad7bd4a..0602c40a 100644
--- a/digital/asserv/src/asserv/pwm_mp.avr.c
+++ b/digital/asserv/src/asserv/pwm_mp.avr.c
@@ -65,7 +65,8 @@ pwm_mp_init (void)
/** Send command using SPI. */
static void
-pwm_mp_send (int16_t pwm1, int16_t pwm2, uint8_t invert1, uint8_t invert2)
+pwm_mp_send (int16_t pwm1, int16_t pwm2, uint16_t min1, uint16_t min2,
+ uint8_t invert1, uint8_t invert2)
{
uint8_t v;
uint8_t cks;
@@ -76,9 +77,9 @@ pwm_mp_send (int16_t pwm1, int16_t pwm2, uint8_t invert1, uint8_t invert2)
pwm1c = -pwm1c;
if (invert2)
pwm2c = -pwm2c;
- if (UTILS_ABS (pwm1c) < 0x10)
+ if (UTILS_ABS (pwm1c) < min1 * 2)
pwm1c = 0;
- if (UTILS_ABS (pwm2c) < 0x10)
+ if (UTILS_ABS (pwm2c) < min2 * 2)
pwm2c = 0;
/* Send, computing checksum on the way. */
cks = 0x42;
@@ -110,6 +111,8 @@ pwm_mp_update (void)
/* Chip enable. */
PORTB &= ~_BV (0);
pwm_mp_send (PWM1c (PWM1), PWM2c (PWM2),
+ PWM1c (PWM_MIN_FOR (PWM1)),
+ PWM2c (PWM_MIN_FOR (PWM2)),
PWM1c (pwm_reverse & PWM_REVERSE_BIT (PWM1)),
PWM2c (pwm_reverse & PWM_REVERSE_BIT (PWM2)));
/* Chip disable. */
@@ -119,6 +122,8 @@ pwm_mp_update (void)
/* Chip enable. */
PORTE &= ~_BV (4);
pwm_mp_send (PWM3c (PWM3), PWM4c (PWM4),
+ PWM3c (PWM_MIN_FOR (PWM3)),
+ PWM4c (PWM_MIN_FOR (PWM4)),
PWM3c (pwm_reverse & PWM_REVERSE_BIT (PWM3)),
PWM4c (pwm_reverse & PWM_REVERSE_BIT (PWM4)));
/* Chip disable. */