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;