Skip to content
Snippets Groups Projects
Commit b12fc911 authored by Sergi Hernandez's avatar Sergi Hernandez
Browse files

Added the clock frequency to the scheduler initialization.

parent 91c6a65c
No related branches found
No related tags found
No related merge requests found
...@@ -40,6 +40,7 @@ typedef struct{ ...@@ -40,6 +40,7 @@ typedef struct{
TSchedulerChannel channels[SCHEDULER_MAX_CHANNELS]; TSchedulerChannel channels[SCHEDULER_MAX_CHANNELS];
unsigned char num_channels; unsigned char num_channels;
unsigned short int prescaler; unsigned short int prescaler;
unsigned int clk_freq;
void (* start)(unsigned short int); void (* start)(unsigned short int);
void (* stop)(unsigned short int); void (* stop)(unsigned short int);
void (* set_pulse)(unsigned short int,unsigned short int,unsigned char); void (* set_pulse)(unsigned short int,unsigned short int,unsigned char);
...@@ -47,7 +48,7 @@ typedef struct{ ...@@ -47,7 +48,7 @@ typedef struct{
unsigned int scheduler_get_channel(sched_channel_t channel_id); unsigned int scheduler_get_channel(sched_channel_t channel_id);
sched_channel_t scheduler_get_id(unsigned int 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); void scheduler_interrupt(TScheduler *scheduler,sched_channel_t channel_id);
unsigned short int scheduler_get_pulse(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); void scheduler_set_channel(TScheduler *scheduler,sched_channel_t channel_id, void (*function)(void *data), unsigned char period_ms,void *data);
......
#include "scheduler.h" #include "scheduler.h"
extern unsigned int SystemCoreClock; #include <iostream>
/* private functions */ /* private functions */
unsigned short int scheduler_ms_to_pulse(TScheduler *scheduler,unsigned char period_ms) 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) unsigned int scheduler_get_channel(sched_channel_t channel_id)
...@@ -32,7 +32,7 @@ sched_channel_t scheduler_get_id(unsigned int 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; unsigned char i=0;
...@@ -45,6 +45,7 @@ void scheduler_init(TScheduler *scheduler,unsigned char num_channels, unsigned s ...@@ -45,6 +45,7 @@ void scheduler_init(TScheduler *scheduler,unsigned char num_channels, unsigned s
} }
scheduler->num_channels=num_channels; scheduler->num_channels=num_channels;
scheduler->prescaler=prescaler; scheduler->prescaler=prescaler;
scheduler->clk_freq=clk_freq;
scheduler->stop=0x00000000; scheduler->stop=0x00000000;
scheduler->start=0x00000000; scheduler->start=0x00000000;
scheduler->set_pulse=0x00000000; scheduler->set_pulse=0x00000000;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment