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{
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);
......
#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;
......
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