diff --git a/src/shared/diagnostic/CpuMeter/CpuMeter.cpp b/src/shared/diagnostic/CpuMeter/CpuMeter.cpp
index 57990c49ff064d0d5ae08ddf6c703c0c1e87a2c9..76c813bccfcf2b95aa6e2704bd16a2b5449886d9 100644
--- a/src/shared/diagnostic/CpuMeter/CpuMeter.cpp
+++ b/src/shared/diagnostic/CpuMeter/CpuMeter.cpp
@@ -60,12 +60,12 @@ static void cpuMeterThread(void*)
 {
     for (;;)
     {
-        long long t1 = getTick();
+        long long t1 = getTime();
         delayMs(period);
-        long long t2 = getTick();
+        long long t2 = getTime();
 
         update++;
-        float delta = t2 - t1;
+        float delta = (t2 - t1) / 1e6f;  // delta in milliseconds
         {
             Lock<FastMutex> l(utilizationMutex);
             utilization.add(100.f * (1.f - static_cast<float>(period) / delta));
diff --git a/src/shared/diagnostic/PrintLogger.cpp b/src/shared/diagnostic/PrintLogger.cpp
index 0aa1c4e5b527173dcb3a703ceff92b5a40548b35..b66d35c37e9d2ed40384a2f65efaa256709d4adf 100644
--- a/src/shared/diagnostic/PrintLogger.cpp
+++ b/src/shared/diagnostic/PrintLogger.cpp
@@ -51,7 +51,7 @@ void LogSink::log(const LogRecord& record)
     using namespace fmt::literals;
     if (record.level >= minimumLevel)
     {
-        float ts     = miosix::getTick() / 1000.0f;
+        float ts     = miosix::getTime() / (float)Constants::NS_IN_S;
         int min      = ts / 60;
         string tsStr = fmt::format("{:02d}:{:06.3f}", min, (ts - min * 60));
 
diff --git a/src/shared/diagnostic/StackLogger.h b/src/shared/diagnostic/StackLogger.h
index c7998375a081783a35ca8044110ebff2b1e31e3e..ec1927195cb87d0f4860a2c65714be9ce2a9ee05 100644
--- a/src/shared/diagnostic/StackLogger.h
+++ b/src/shared/diagnostic/StackLogger.h
@@ -54,7 +54,7 @@ public:
     void updateStack(uint8_t threadId)
     {
         StackData d;
-        d.timestamp    = miosix::getTick();
+        d.timestamp    = miosix::getTime();
         d.threadId     = threadId;
         d.minimumStack = miosix::MemoryProfiling::getAbsoluteFreeStack();
 
diff --git a/src/shared/logger/Logger.cpp b/src/shared/logger/Logger.cpp
index a1c1da5ea2458b600034e0a8356bfd2061dc9078..cc47316d31931a25bb227802dab4da8b923c67a3 100644
--- a/src/shared/logger/Logger.cpp
+++ b/src/shared/logger/Logger.cpp
@@ -33,10 +33,12 @@
 #include <tscpp/buffer.h>
 #include <utils/Debug.h>
 
+#include <chrono>
 #include <fstream>
 #include <stdexcept>
 
 using namespace std;
+using namespace std::chrono;
 using namespace miosix;
 
 namespace Boardcore
@@ -287,8 +289,7 @@ void Logger::writeThread()
                 return;
 
             // Write data to disk
-            Timer timer;
-            timer.start();
+            auto start = system_clock::now();
 
             size_t result = fwrite(buffer->data, 1, buffer->size, file);
             if (result != buffer->size)
@@ -301,8 +302,9 @@ void Logger::writeThread()
             else
                 stats.buffersWritten++;
 
-            timer.stop();
-            stats.averageWriteTime = timer.interval();
+            stats.averageWriteTime =
+                duration_cast<milliseconds>(system_clock::now() - start)
+                    .count();
             stats.maxWriteTime =
                 max(stats.maxWriteTime, stats.averageWriteTime);