[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
periodic wave
Hallo,
please help to find a solution - I didn't find it yet. I have a task with the
period_ns/f_rt and want to get out a rectangle wave with a frequency f_wave.
Using the rtfs I set period_ns und f_wave. The problem is the non-linear
dependence between f = 1/T. The frequency of the wave I pretend linear but the
result isn't it by this peace of code:
rtf_handler:
/* period_ns for the task is eq. to 1kHz */
waveform_freq = (unsigned int)rtf_msg.data2; /* Hz */
waveform_ticks = (unsigned int)(1/((double)waveform_freq)*1e3);
thread_code:
if(square_on) {
ao_data[AO_CURR1_CH] = ao_data_wavegen[AO_CURR1_CH];
ao_data[AO_CURR2_CH] = ao_data_wavegen[AO_CURR2_CH];
if( !(loop_index % waveform_ticks) )
square_on = 0; /* turn off */
} else { /* !square_on */
ao_data[AO_CURR1_CH] = (sampl_t)NI_PCI_MIO_XE10_MAXDATA - ao_data_wavegen[AO_CURR1_CH];
ao_data[AO_CURR2_CH] = (sampl_t)NI_PCI_MIO_XE10_MAXDATA - ao_data_wavegen[AO_CURR2_CH];
if( !(loop_index % waveform_ticks) )
square_on = 1; /* turn on */
}
The question is, how can calculate the waveform_ticks in that way, that the
output is proportional to the given waveform frequency regards to the realtime
module frequency?
Thanks Olaf