summaryrefslogtreecommitdiff
path: root/digital/avr/modules/motor/output/pwm_ocr
diff options
context:
space:
mode:
Diffstat (limited to 'digital/avr/modules/motor/output/pwm_ocr')
-rw-r--r--digital/avr/modules/motor/output/pwm_ocr/output_pwm_ocr.avr.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/digital/avr/modules/motor/output/pwm_ocr/output_pwm_ocr.avr.c b/digital/avr/modules/motor/output/pwm_ocr/output_pwm_ocr.avr.c
index 635b9bef..a75e350b 100644
--- a/digital/avr/modules/motor/output/pwm_ocr/output_pwm_ocr.avr.c
+++ b/digital/avr/modules/motor/output/pwm_ocr/output_pwm_ocr.avr.c
@@ -165,8 +165,7 @@ output_pwm_ocr_update_output (uint8_t index, volatile uint16_t *ocr,
else
{
/* Brake is engaged on first non null value. */
- if (brake_io_port)
- *brake_io_port |= _BV (brake_io_bit);
+ output_pwm_ocr[index].output->brake = 1;
/* Convert signed value to sign and absolute value. */
if (value < 0)
{
@@ -179,6 +178,14 @@ output_pwm_ocr_update_output (uint8_t index, volatile uint16_t *ocr,
*ocr = value + AC_OUTPUT_PWM_OCR_OFFSET;
}
}
+ /* Update brake. */
+ if (brake_io_port)
+ {
+ if (output_pwm_ocr[index].output->brake)
+ *brake_io_port |= _BV (brake_io_bit);
+ else
+ *brake_io_port &= ~_BV (brake_io_bit);
+ }
}
void