diff --git a/software/signal_processing/sine.c b/software/signal_processing/sine.c index 3eb3ce5..666574e 100644 --- a/software/signal_processing/sine.c +++ b/software/signal_processing/sine.c @@ -2,9 +2,21 @@ #include "system/data_channel.h" #include "system/float_word.h" -int task_sine_run( void * data ) { +#include - // TODO +int task_sine_run( void * data ) { + sine_config* task = (sine_config*) data; + + uint32_t data_chnl_base = task->base.sink; + data_channel_clear(data_chnl_base); + + for(uint32_t i = 0; i < DATA_CHANNEL_DEPTH; ++i) { + float_word result; + result.value = task->amplitude * sin(task->phase + ((2 * M_PI)/(double)task->samples_per_periode) * i); + + data_channel_write(data_chnl_base, result.word); + } + return 0; }