diff options
author | root <root@avtech.domain.avtechpulse.com> | 2000-01-01 00:27:28 +0900 |
---|---|---|
committer | root <root@avtech.domain.avtechpulse.com> | 2000-01-01 00:27:28 +0900 |
commit | 4eebe6533563ba2806c9454d6e2d8b0b2c447082 (patch) | |
tree | 3c6fb9e8b2e36c621d17f1255a093bf8df5a7f9b /device-functions.c | |
parent | 0776239b5a5dca3382fa0dd3e4b9b8f4a7400d18 (diff) |
separate function for linear interpolation of X given desired Y
Diffstat (limited to 'device-functions.c')
-rw-r--r-- | device-functions.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/device-functions.c b/device-functions.c index e5fbeea..2bfd784 100644 --- a/device-functions.c +++ b/device-functions.c @@ -391,6 +391,8 @@ int Set_Amplitude(int check_possible_only,int pol_override,int override_on,int w } } + g_print_debug("ampl range %d, word %d\n",relay_range,word_out); + globals.Changes.update_amp=YES; globals.ChannelState[channel].amplitude=new_ampl; @@ -883,6 +885,8 @@ int Set_Delay(int check_possible_only,int word_override,int range_override,int c control_pcb107(globals.Flash.I2C_port_for_CH2_delay,globals.Flash.delay_dac[channel],word_out,relay_range); } + g_print_debug("delay range %d, word %d\n",relay_range,word_out); + globals.ChannelState[channel].delay=set_delay; Set_Update_Chans(); @@ -2477,6 +2481,12 @@ int Set_VI_Del_Cal(int parameter,int channel,int calibration_point_number) } +static int linear_interpolation (int x1, int x2, float y1, float y2, float y_need) +{ + return (int) ( (y_need - y1) / (y2 - y1) * (float) (x2 - x1) ) + x1; +} + + int Set_VI_Control(int parameter,int channel,float new_ampl,int *point_found,int *relay_range,int *atten_range, int *UseNegData,int *entry,int *word_out,int *actual_pol) { @@ -2857,8 +2867,7 @@ int Set_VI_Control(int parameter,int channel,float new_ampl,int *point_found,int inverse_word_out+=1/((float) pwl_vc[index]); *word_out=(int) (1.0/inverse_word_out); } else { - *word_out = (int) ( fraction * (float) (pwl_vc[index] - pwl_vc[index+1]) ); - *word_out+=pwl_vc[index]; + *word_out = linear_interpolation (pwl_vc[index], pwl_vc[index+1], pwlamp1, pwlamp2, tweaked_use_ampl); } } } |