diff --git a/epicardium/modules/vibra.c b/epicardium/modules/vibra.c
index dd7c3131d88f5d1a656a1371ea2f2bda0ac7098c..882b0bef73aa829c92173679d494dd2c4bd9fef1 100644
--- a/epicardium/modules/vibra.c
+++ b/epicardium/modules/vibra.c
@@ -6,7 +6,7 @@ static const gpio_cfg_t motor_pin = {
 	PORT_0, PIN_8, GPIO_FUNC_OUT, GPIO_PAD_NONE
 };
 
-static TimerHandle_t vibra_timer;
+static TimerHandle_t vibra_timer = NULL;
 
 void epic_vibra_set(int status)
 {
@@ -25,8 +25,14 @@ void vTimerCallback()
 void epic_vibra_vibrate(int millis)
 {
 	int ticks = millis * (configTICK_RATE_HZ / 1000);
-	epic_vibra_set(1);
-	vibra_timer =
-		xTimerCreate("vibratimer", ticks, pdFALSE, 0, vTimerCallback);
-	xTimerStart(vibra_timer, 0);
+
+	if (vibra_timer == NULL) {
+		vibra_timer = xTimerCreate(
+			"vibratimer", ticks, pdFALSE, 0, vTimerCallback
+		);
+	}
+	if (vibra_timer != NULL) {
+		epic_vibra_set(1);
+		xTimerChangePeriod(vibra_timer, ticks, 0);
+	}
 }