summaryrefslogtreecommitdiffhomepage
path: root/digital/asserv/src/asserv/pwm_mp.avr.c
diff options
context:
space:
mode:
authorNicolas Schodet2008-04-28 15:31:01 +0200
committerNicolas Schodet2008-04-28 15:31:01 +0200
commitfb29b57fece6c53492aca06931ca866dd8e0b1d2 (patch)
tree731212aef03ff03ed6d7248be68e55e4574e7d12 /digital/asserv/src/asserv/pwm_mp.avr.c
parent10c53c6c72a90e0767e34d325a846469c08aae0e (diff)
* digital/asserv/src/asserv:
- added generic system for different deadzones per PWM. - cleaned up pwm setting.
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. */