diff --git a/src/shared/boards/AnakinBoard.cpp b/src/shared/boards/AnakinBoard.cpp
index 2c0fe8f9fa72a913056a3361c18f961ac37ae975..283fa7ec5c7a5ee1e313a48474bf1b41c06ae9a1 100644
--- a/src/shared/boards/AnakinBoard.cpp
+++ b/src/shared/boards/AnakinBoard.cpp
@@ -86,11 +86,11 @@ bool AnakinBoard::init()
     sLog->logString("Adding samplers to scheduler\n");
     #define ADD_SAMPLER(type, name, rate) \
         sEventScheduler->add(std::bind(& type ## SensorSampler::Update,name),\
-                rate, #name "-" #rate "ms")
+                rate, #name "-" #rate "ms",start)
 
+    int64_t start=getTick(); //Synchronize activation
     ADD_SAMPLER(DMA, m100HzDMA, 10); // 10ms
     ADD_SAMPLER(DMA, m25HzDMA, 40);  // 25ms
-    ADD_SAMPLER(Simple, m100HzSimple, 10); // 10ms
     ADD_SAMPLER(Simple, m10HzSimple, 100); // 100ms
 
     return true;
diff --git a/src/shared/boards/AnakinBoard.h b/src/shared/boards/AnakinBoard.h
index 9dc5dba5ea8cc155aa781c4cd4276a5e4d7d4b1d..10e6ee347619efff4e82fa74dddaae94827172cd 100644
--- a/src/shared/boards/AnakinBoard.h
+++ b/src/shared/boards/AnakinBoard.h
@@ -74,7 +74,7 @@ public:
 
 private:
     DMASensorSampler m100HzDMA, m25HzDMA;
-    SimpleSensorSampler m100HzSimple, m10HzSimple;
+    SimpleSensorSampler m10HzSimple;
     mpu_t*      mS_MPU9250;
     inemo_t*    mS_INEMO;
     fxas_t*     mS_FXAS;
diff --git a/src/shared/events/Scheduler.cpp b/src/shared/events/Scheduler.cpp
index ccfb3749fbeb535fafc9034c12b5cb7c64143891..634bbe76fae90f1e65c347ad0b6ba8fbc36c6132 100644
--- a/src/shared/events/Scheduler.cpp
+++ b/src/shared/events/Scheduler.cpp
@@ -41,14 +41,14 @@ std::ostream& operator<<(std::ostream& os, const TaskStatResult& sr)
 //
 
 void EventScheduler::add(function_t func, uint32_t intervalMs, 
-        const string& name) {
+        const string& name, int64_t start) {
     task_t task = { func, intervalMs, name, false, -1 };
-    addTask(task);
+    addTask(task, start);
 }
 
-void EventScheduler::addOnce(function_t func, uint32_t delayMs) {
+void EventScheduler::addOnce(function_t func, uint32_t delayMs, int64_t start) {
     task_t task = { func, delayMs, "", true, -1 };
-    addTask(task);
+    addTask(task, start);
 }
 
 vector<TaskStatResult> EventScheduler::getTaskStats()
@@ -102,19 +102,21 @@ void EventScheduler::run() {
             } else tasks.erase(e.task);
         } else {
             Unlock<FastMutex> u(l);
+            leds::led9::high();
             Thread::sleepUntil(nextTick);
+            leds::led9::low();
         }
     }
 }
 
-void EventScheduler::addTask(const EventScheduler::task_t& task) {
+void EventScheduler::addTask(const EventScheduler::task_t& task, int64_t start) {
     Lock<FastMutex> l(mutex);
     tasks.push_back(task);
     if(task.once==false) permanentTasks++;
     
     auto it = tasks.end();
     --it; //This makes it point to the last element of the list
-    event_t event = { it, getTick() };
+    event_t event = { it, start };
     enqueue(event);
 }
 
@@ -145,4 +147,4 @@ void EventScheduler::updateStats(event_t& e, int64_t startTime, int64_t endTime)
     e.task->workloadStats.add(endTime - startTime);
 }
 
-EventScheduler::EventScheduler() : ActiveObject(1024), permanentTasks(0) {}
+EventScheduler::EventScheduler() : ActiveObject(1024,PRIORITY_MAX-1), permanentTasks(0) {}
diff --git a/src/shared/events/Scheduler.h b/src/shared/events/Scheduler.h
index 859b8997db83babe0aebd04c17aff6d0b19b0d1c..659da2f6b9e12465aae87601a3c71a4f3e6eea3d 100644
--- a/src/shared/events/Scheduler.h
+++ b/src/shared/events/Scheduler.h
@@ -68,16 +68,22 @@ public:
      * Add a task function to be called periodically by the scheduler
      * \param func function to be called
      * \param intervalMs inter call period
+     * \param start the first activation will be at time start+intervalMs,
+     * useful for synchronizing tasks
      */
-    void add(function_t func, uint32_t intervalMs, const std::string& name);
+    void add(function_t func, uint32_t intervalMs, const std::string& name,
+             int64_t start=miosix::getTick());
     
     /**
      * Add a single shot task function to be called only once, after the
      * given delay
      * \param func function to be called
      * \param delayMs delay before the call
+     * \param start the first activation will be at time start+intervalMs,
+     * useful for synchronizing tasks
      */
-    void addOnce(function_t func, uint32_t delayMs);
+    void addOnce(function_t func, uint32_t delayMs,
+                 int64_t start=miosix::getTick());
     
     /**
      * \return statistics for all tasks
@@ -123,7 +129,7 @@ private:
      * In addition, also takes care of genrating the (first) event for the task
      * \param pask the task to add
      */
-    void addTask(const task_t& task);
+    void addTask(const task_t& task, int64_t start);
     
     /**
      * (Re)Enqueue a schedule.