# HG changeset patch # User Daniele Nicolodi # Date 1349188292 -7200 # Node ID 4bb197635664787886c83493e1c232a68df0b6c4 # Parent fde495ba28d2c10ba4029382216c1496804091e9 Cleanup N1 measurement code diff -r fde495ba28d2 -r 4bb197635664 FXAnalyse.c --- a/FXAnalyse.c Tue Oct 02 12:23:31 2012 +0200 +++ b/FXAnalyse.c Tue Oct 02 16:31:32 2012 +0200 @@ -78,6 +78,16 @@ N_MEASUREMENT_STEP_4, }; +enum { + N_MEASUREMENT_NONE, + N_MEASUREMENT_INIT, + N_MEASUREMENT_SLOPE, + N_MEASUREMENT_ADJUST_FREQ_PLUS, + N_MEASUREMENT_FREP_PLUS, + N_MEASUREMENT_ADJUST_FREQ_MINUS, + N_MEASUREMENT_FREP_MINUS, +}; + int settling = 0; volatile bool Measuring_1 = FALSE,Step1_1 = FALSE,Step2_1 = FALSE,Step3_1 = FALSE, Measuring_2 = FALSE,Step1_2 = FALSE,Step2_2 = FALSE,Step3_2 = FALSE; @@ -783,177 +793,166 @@ if (BoxChecked) { Allan_AddFrequency(&AllanMath5, Math5) ; } + // Calcul de N - if (Measuring_1==TRUE) - { - if (Step1_1==FALSE) { - SetCtrlVal(MainPanel, PANEL_DDS1, FrequDDS1) ; - DDS4xAD9912_SetFrequency(&DDS4xAD9912, 1, FrequDDS1); - - GetCtrlVal(MainPanel, PANEL_DDS2, &FrequencyDDSBesInit) ; - t1_1=utc; - Frequ_slope_1=Math1; - Moy_slope_1= Frequ_slope_1; - Ch4_slope=Ch4; - Moy_Ch4slope_1= Ch4_slope; - N_slope_1=1; - Step1_1=TRUE ; - } - else { - if(Step2_1==FALSE){ - N_slope_1=N_slope_1+1; - Frequ_slope_1=Math1; - Ch4_slope=Ch4; - Moy_slope_1=((N_slope_1-1)*Moy_slope_1 + Frequ_slope_1)/N_slope_1; - Moy_Ch4slope_1=((N_slope_1-1)*Moy_Ch4slope_1 + Ch4_slope)/N_slope_1; - Slope_slope_1 = (Slope_slope_1*(N_slope_1-2) + 6*(Frequ_slope_1-Moy_slope_1)/N_slope_1)/(N_slope_1+1) ; - Slope_Ch4slope_1 = (Slope_Ch4slope_1*(N_slope_1-2) + 6*(Ch4_slope-Moy_Ch4slope_1)/N_slope_1)/(N_slope_1+1) ; - if (utc-t1_1>SlopeTime1) { - Slope_1 = Slope_slope_1; - Ch4Slope = Slope_Ch4slope_1; - Step2_1=TRUE ; - N_slope_1=0; - Frequ_slope_1=0.0; - Moy_slope_1=0.0; - Slope_slope_1 =0.0; - Ch4_slope=0.0; - Moy_Ch4slope_1=0.0; - Slope_Ch4slope_1=0.0; - - DDS4xAD9912_FrequencyRampe (&DDS4xAD9912,1, FrequDDS1,(FrequDDS1+DeltakHz_1*1000), Step1/Ndiv ) ; - SetCtrlVal(MainPanel, PANEL_DDS1, (FrequDDS1+DeltakHz_1*1000)) ; - DDS4xAD9912_SetFrequency(&DDS4xAD9912, 1, (FrequDDS1+DeltakHz_1*1000)); - - } - } - else { - if (DDSBesChanged1==FALSE){ - - if (nDDSChange<3) - { nDDSChange=nDDSChange+1;} - - else - { - nDDSChange=0; - - DeltaFrep275=275000-Ch4; - FrequencyDDSBes=FrequencyDDSBesInit+(DeltaFrep275); - SetCtrlVal(MainPanel, PANEL_DDS2, FrequencyDDSBes) ; - DDS4xAD9912_SetFrequency(&DDS4xAD9912,2,FrequencyDDSBes); - DDSBesChanged1=TRUE; - t2_1=utc; + switch (Measuring_1) { + + case N_MEASUREMENT_NONE: + // not measuring + break; - } - - } - else{ - - if(Step3_1==FALSE){ - if (nstabilization<3) - {nstabilization= nstabilization+1; - TimetoBegin=TRUE;} - else - { - if (utc-t2_1 SlopeTime1) { + Slope_1 = Slope_slope_1; + Ch4Slope = Slope_Ch4slope_1; + + N_slope_1 = 0; + Frequ_slope_1 = 0.0; + Moy_slope_1 = 0.0; + Slope_slope_1 = 0.0; + Ch4_slope = 0.0; + Moy_Ch4slope_1 = 0.0; + Slope_Ch4slope_1 = 0.0; + + // frep positive step + DDS4xAD9912_FrequencyRampe(&DDS4xAD9912,1, FrequDDS1,(FrequDDS1+DeltakHz_1*1000), Step1/Ndiv ); + SetCtrlVal(MainPanel, PANEL_DDS1, (FrequDDS1+DeltakHz_1*1000)); + DDS4xAD9912_SetFrequency(&DDS4xAD9912, 1, (FrequDDS1+DeltakHz_1*1000)); + + // allow counter to settle + settling = 3; + + // next step + Measuring_1 += 1; + } + break; + + case N_MEASUREMENT_ADJUST_FREQ_PLUS: + case N_MEASUREMENT_ADJUST_FREQ_MINUS: + // adjust DDS frequency to keep beatnote within the bandpass filter - - } - } - - else{ - if (nstabilization<3) - { nstabilization=nstabilization+1; - TimetoBegin=TRUE;} - else - { - if (utc-t3_1 0) { + settling--; + break; + } + + DeltaFrep275 = 275000 - Ch4; + double fDDS2 = FrequencyDDSBesInit + (DeltaFrep275); + SetCtrlVal(MainPanel, PANEL_DDS2, fDDS2) ; + DDS4xAD9912_SetFrequency(&DDS4xAD9912, 2, fDDS2); + + // allow counter to settle + settling = 3; + + // next step + Measuring_1 += 1; + break; + + + case N_MEASUREMENT_FREP_PLUS: + // frep positive step + + if (settling > 0) { + settling--; + break; + } + + if (t2_1 == 0.0) + t2_1 = utc; + + Frepplus_1 = Frepplus_1 + Math1 - Slope_1 * (utc - t2_1); + Ch4Plus = Ch4Plus + Ch4 - Ch4Slope * (utc - t2_1); + n_1 += 1; + + if ((utc - t2_1) > DeltaT_1) { + Frepplus_1 = Frepplus_1 / n_1; + Ch4Plus = Ch4Plus / n_1; + n_1 = 0; + + // frep negative step + DDS4xAD9912_FrequencyRampe(&DDS4xAD9912,1, (FrequDDS1+DeltakHz_1*1000),(FrequDDS1-DeltakHz_1*1000), Step1/Ndiv); + SetCtrlVal(MainPanel, PANEL_DDS1, (FrequDDS1-DeltakHz_1*1000)); + DDS4xAD9912_SetFrequency(&DDS4xAD9912, 1, (FrequDDS1-DeltakHz_1*1000)); + + // allow counter to settle + settling = 3; + + // next step + Measuring_1 += 1; + } + break; + + case N_MEASUREMENT_FREP_MINUS: + // frep negative step + + if (settling > 0) { + settling--; + break; + } + + if (t3_1 == 0.0) + t3_1 = utc; + + Frepminus_1 = Frepminus_1 + Math1 - Slope_1 * (utc - t3_1); + Ch4Minus = Ch4Minus + Ch4 - Ch4Slope * (utc - t3_1); + n_1 += 1; + + if ((utc - t3_1) > DeltaT_1) { + Frepminus_1 = Frepminus_1 / n_1; + Ch4Minus = Ch4Minus / n_1; + n_1 = 0; + + t1_1 = 0.0; + t2_1 = 0.0; + t3_1 = 0.0; + Frepminus_1 = 0.0; + Frepplus_1 = 0.0; + + // compute N1 + N_1 = Signe1 * (2*Ndiv * DeltakHz_1 * 1000)/(Frepminus_1 - Frepplus_1 - Slope_1 * (t3_1 - t2_1)); + + DDS4xAD9912_FrequencyRampe(&DDS4xAD9912, 1, FrequDDS1-DeltakHz_1*1000,FrequDDS1, Step1/Ndiv ); + SetCtrlVal(MainPanel, PANEL_DDS1, FrequDDS1); + DDS4xAD9912_SetFrequency(&DDS4xAD9912, 1, FrequDDS1); + SetCtrlVal(MainPanel, PANEL_DDS2, FrequencyDDSBesInit); + DDS4xAD9912_SetFrequency(&DDS4xAD9912, 2, FrequencyDDSBesInit); + + // done + Measuring_1 = N_MEASUREMENT_NONE; + } + break; + } if (Measuring_2==TRUE) {