diff --git a/epicardium/modules/vibra.c b/epicardium/modules/vibra.c index da1325093b6866037c1882da6ad79d613ee833a4..aacbdf4e8c5a3d41375f60577fb4ebf5ec5e9c06 100644 --- a/epicardium/modules/vibra.c +++ b/epicardium/modules/vibra.c @@ -27,22 +27,24 @@ void epic_vibra_vibrate(int millis) { int ticks = millis * (configTICK_RATE_HZ / 1000); - /* Make sure the duration is valid */ - if (ticks < 1) { - /* Disable a potentially running motor */ - epic_vibra_set(0); - return; - } - if (vibra_timer == NULL) { vibra_timer = xTimerCreateStatic( "vibratimer", - ticks, + 1, pdFALSE, /* one-shot */ 0, vTimerCallback, &vibra_timer_data); } + + /* Make sure the duration is valid */ + if (ticks < 1) { + /* Disable a potentially running motor / timer */ + epic_vibra_set(0); + xTimerStop(vibra_timer, 0); + return; + } + if (vibra_timer != NULL) { epic_vibra_set(1); xTimerChangePeriod(vibra_timer, ticks, 0);