private void checkTuningState(double phase) { if (Math.Abs(phase) < 50 * Math.Pow(10, -9)) //Uslov za fino podesenje da je faza 100 sekundi manja od 5*2.5ns { counter++; if (counter == 150) { tuningState = TuningState.MEDIUM; label9.Text = "Medium Tuning ON"; } } else { counter = 0; } }
private Int32 calculateNewDACValue(string input, double lastPhase, int nTime) { // "phase" nije u ns nego broj imupulsa counter-a (2.5 ili 5ns) double phase = Phase.calculatePhaseFromInputString_B(input); if (Math.Abs(lastPhase) < 0.8) // fail safe (ako ima suma koji ima vrlo visoku fazu) { if (tuningState == TuningState.CROASE) // Grubo podesavanje { double tmp = coarseTuneDAC(phase, nTime); regulator.dACOffset = tmp; checkTuningState(lastPhase); // change state to MEDIUM if phase low in last 100 measurements return(Convert.ToInt32(tmp)); } else if (tuningState == TuningState.MEDIUM) // Srednje podesavanje { /*TuningResult result = mediumTuning.calculateMediumTuning(dac_value, lastPhase, nTime); * if (result.stateResult == TuningResult.Result.FINISHED) * { * writeServiceFile("Medium tuning finished. Time: " + nTime + ". Setting new DAC value before starting fine tuning: " + result.newDAC); * tuningState = TuningState.FINE; * } * return Convert.ToInt32(result.newDAC);*/ counter1++; Int32 dacReg = Convert.ToInt32(regulator.nextValue(dac_value, lastPhase, nTime)); tempReg += dacReg; if (counter1 == 5) { counter1 = 0; Int32 returnVal = tempReg / 5; tempReg = 0; return(returnVal); } // OVO VRATI AKO HOCES DA PROBAS STARU FUNKCIJU // Faza se dodaje u listu i svako deset sekundo se poziva funkcija calculateMediumtuning /*phaseArr.Add(Convert.ToInt32(phaseExpAvg.calculateExpAvg(phase))); //calculateAvg(phase))); * if (phaseArr.Count == 10) * { * Int32 retval = Convert.ToInt32(calculateMediumTuning()); * phaseArr.Clear(); * return retval; * }*/ } else if (tuningState == TuningState.FINE) // fino podesavanje { TuningResult result = fineTuning.tune(dac_value, lastPhase, nTime); if (result.stateResult == TuningResult.Result.FINISHED)// GO TO "AGING" state { tuningState = TuningState.AGEING; } return(Convert.ToInt32(result.newDAC)); } else if (tuningState == TuningState.AGEING) { TuningResult result = ageing.ageing(dac_value, lastPhase); return(Convert.ToInt32(result.newDAC)); } } return(Convert.ToInt32(dac_value)); // return previous value if lastPhase > 0.8 }