From 678ee067c4752cb0db6d69f84366f74d88614fb3 Mon Sep 17 00:00:00 2001 From: Joseph Coffland Date: Mon, 12 Mar 2018 03:55:51 -0700 Subject: [PATCH] Wait for pending DMA transfter to avoid missing step counts --- CHANGELOG.md | 1 + src/avr/src/motor.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8314278..239fbdb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ Buildbotics CNC Controller Firmware Change Log - Added site favicon. - Fixed problems with offsets and imperial units. - Fixed ``All zero s-curve times`` caused by extreemly short, non-zero moves. + - Fixed position drift. ## v0.3.18 - Don't enable any tool by default. diff --git a/src/avr/src/motor.c b/src/avr/src/motor.c index b82a583..cf6e8a7 100644 --- a/src/avr/src/motor.c +++ b/src/avr/src/motor.c @@ -242,8 +242,8 @@ void motor_end_move(int motor) { // Stop clock m->timer->CTRLA = 0; - // TODO Wait for pending DMA transfers - //while (m->dma->CTRLB & (DMA_CH_CHBUSY_bm | DMA_CH_CHPEND_bm)) continue; + // Wait for pending DMA transfers + while (m->dma->CTRLB & DMA_CH_CHPEND_bm) continue; // Get actual step count from DMA channel const int24_t half_steps = 0xffff - m->dma->TRFCNT; -- 2.27.0