Skip to content

Commit 9471c05

Browse files
committed
encoder: Fix divide-by-zero in missing-index handler
Signed-off-by: andypugh <andy@bodgesoc.org>
1 parent 913cbc9 commit 9471c05

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

src/hal/components/encoder.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ typedef struct {
107107
hal_bit_t *x4_mode; /* u:r enables x4 counting (default) */
108108
hal_bit_t *counter_mode; /* u:r enables counter mode */
109109
hal_s32_t *missing_teeth; /* u:r non-zero enables missing-teeth index */
110-
hal_s32_t dt; /* u:w most recent tooth space */
110+
hal_s32_t dt; /* u:w most recent tooth space */
111111
hal_s32_t limit_dt; /* u:r c:w inter-count gap (nS) to define index */
112112
atomic buf[2]; /* u:w c:r double buffer for atomic data */
113113
volatile atomic *bp; /* u:r c:w ptr to in-use buffer */
@@ -482,8 +482,10 @@ static void capture(void *arg, long period)
482482
vel = (delta_counts * cntr->scale ) / (delta_time * 1e-9);
483483
*(cntr->vel) = vel;
484484
/* decide how many ns to detect missing-pulse index */
485-
cntr->limit_dt *= 0.9;
486-
cntr->limit_dt += 0.1 * ((*(cntr->missing_teeth) + 0.5) * (delta_time / delta_counts));
485+
if (delta_counts) {
486+
cntr->limit_dt *= 0.9;
487+
cntr->limit_dt += 0.1 * ((*(cntr->missing_teeth) + 0.5) * (delta_time / delta_counts));
488+
}
487489
}
488490
} else {
489491
/* no count */

0 commit comments

Comments
 (0)