diff --git a/scheduler/include/scheduler.h b/scheduler/include/scheduler.h
index 69c5399691d50890e9ca5acec2932dd08e569044..c08662e9c0da8da3635e99fe19ec98d123497f47 100644
--- a/scheduler/include/scheduler.h
+++ b/scheduler/include/scheduler.h
@@ -40,6 +40,7 @@ typedef struct{
   TSchedulerChannel channels[SCHEDULER_MAX_CHANNELS];
   unsigned char num_channels;
   unsigned short int prescaler;
+  unsigned int clk_freq;
   void (* start)(unsigned short int);
   void (* stop)(unsigned short int);
   void (* set_pulse)(unsigned short int,unsigned short int,unsigned char);
@@ -47,7 +48,7 @@ typedef struct{
 
 unsigned int scheduler_get_channel(sched_channel_t channel_id);
 sched_channel_t scheduler_get_id(unsigned int id);
-void scheduler_init(TScheduler *scheduler,unsigned char num_channels, unsigned short int prescaler);
+void scheduler_init(TScheduler *scheduler,unsigned char num_channels, unsigned short int prescaler,unsigned int clk_freq);
 void scheduler_interrupt(TScheduler *scheduler,sched_channel_t channel_id);
 unsigned short int scheduler_get_pulse(TScheduler *scheduler, sched_channel_t channel_id);
 void scheduler_set_channel(TScheduler *scheduler,sched_channel_t channel_id, void (*function)(void *data), unsigned char period_ms,void *data);
diff --git a/scheduler/src/scheduler.c b/scheduler/src/scheduler.c
index 9dcbb906092429142011cbc77263272f86cb8dfe..4b60feac0fa2f4757b758722e4ab238a4ffd1c19 100644
--- a/scheduler/src/scheduler.c
+++ b/scheduler/src/scheduler.c
@@ -1,11 +1,11 @@
 #include "scheduler.h"
 
-extern unsigned int SystemCoreClock;
+#include <iostream>
 
 /* private functions */
 unsigned short int scheduler_ms_to_pulse(TScheduler *scheduler,unsigned char period_ms)
 {
-  return (SystemCoreClock/(scheduler->prescaler*1000))*period_ms;
+  return (scheduler->clk_freq/(scheduler->prescaler*1000))*period_ms;
 }
 
 unsigned int scheduler_get_channel(sched_channel_t channel_id)
@@ -32,7 +32,7 @@ sched_channel_t scheduler_get_id(unsigned int id)
   }
 }
 
-void scheduler_init(TScheduler *scheduler,unsigned char num_channels, unsigned short int prescaler)
+void scheduler_init(TScheduler *scheduler,unsigned char num_channels, unsigned short int prescaler,unsigned int clk_freq)
 {
   unsigned char i=0;
 
@@ -45,6 +45,7 @@ void scheduler_init(TScheduler *scheduler,unsigned char num_channels, unsigned s
   }
   scheduler->num_channels=num_channels;
   scheduler->prescaler=prescaler;
+  scheduler->clk_freq=clk_freq;
   scheduler->stop=0x00000000;
   scheduler->start=0x00000000;
   scheduler->set_pulse=0x00000000;