Update application.cpp

limit the number of calibration iteration to 12 
the algorythm used is normaly faster than dichotomy which normaly finds a 12Bit number in 12
MrDham-issue30
MrDham 3 years ago committed by GitHub
parent 943ac5f090
commit 99d6b8a0ac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 25
      Open_Theremin_V3/application.cpp

@ -364,6 +364,9 @@ static long pitchfn1 = 0;
static long pitchfn = 0; static long pitchfn = 0;
// limit the number of calibration iteration to 12
// the algorythm used is normaly faster than dichotomy which normaly finds a 12Bit number in 12 iterations max
static uint16_t l_iteration_pitch = 0;
InitialisePitchMeasurement(); InitialisePitchMeasurement();
interrupts(); interrupts();
@ -391,8 +394,10 @@ delay(100);
pitchfn1 = GetPitchMeasurement(); pitchfn1 = GetPitchMeasurement();
while(abs(pitchfn0-pitchfn1)>CalibrationTolerance){ // max allowed pitch frequency offset l_iteration_pitch = 0;
while ((abs(pitchfn0 - pitchfn1) > CalibrationTolerance) && (l_iteration_pitch < 12))
{
SPImcpDAC2Asend(pitchXn0); SPImcpDAC2Asend(pitchXn0);
delay(100); delay(100);
pitchfn0 = GetPitchMeasurement()-pitchfn; pitchfn0 = GetPitchMeasurement()-pitchfn;
@ -403,15 +408,15 @@ pitchfn1 = GetPitchMeasurement()-pitchfn;
pitchXn2=pitchXn1-((pitchXn1-pitchXn0)*pitchfn1)/(pitchfn1-pitchfn0); // new DAC value pitchXn2=pitchXn1-((pitchXn1-pitchXn0)*pitchfn1)/(pitchfn1-pitchfn0); // new DAC value
delay(100);
pitchXn0 = pitchXn1; pitchXn0 = pitchXn1;
pitchXn1 = pitchXn2; pitchXn1 = pitchXn2;
HW_LED2_TOGGLE; HW_LED2_TOGGLE;
l_iteration_pitch ++;
} }
delay(100); delay(100);
EEPROM.put(0,pitchXn0); EEPROM.put(0,pitchXn0);
@ -430,6 +435,9 @@ static long volumefn0 = 0;
static long volumefn1 = 0; static long volumefn1 = 0;
static long volumefn = 0; static long volumefn = 0;
// limit the number of calibration iteration to 12
// the algorythm used is normaly faster than dichotomy which normaly finds a 12Bit number in 12 iterations max
static uint16_t l_iteration_volume = 0;
InitialiseVolumeMeasurement(); InitialiseVolumeMeasurement();
interrupts(); interrupts();
@ -456,7 +464,9 @@ volumefn1 = GetVolumeMeasurement();
while(abs(volumefn0-volumefn1)>CalibrationTolerance){ l_iteration_volume = 0;
while ((abs(volumefn0 - volumefn1) > CalibrationTolerance) && (l_iteration_volume < 12))
{
SPImcpDAC2Bsend(volumeXn0); SPImcpDAC2Bsend(volumeXn0);
delay_NOP(44316);//44316=100ms delay_NOP(44316);//44316=100ms
@ -468,12 +478,13 @@ volumefn1 = GetVolumeMeasurement()-volumefn;
volumeXn2=volumeXn1-((volumeXn1-volumeXn0)*volumefn1)/(volumefn1-volumefn0); // calculate new DAC value volumeXn2=volumeXn1-((volumeXn1-volumeXn0)*volumefn1)/(volumefn1-volumefn0); // calculate new DAC value
delay_NOP(44316);//44316=100ms
volumeXn0 = volumeXn1; volumeXn0 = volumeXn1;
volumeXn1 = volumeXn2; volumeXn1 = volumeXn2;
HW_LED2_TOGGLE; HW_LED2_TOGGLE;
l_iteration_volume ++;
} }
EEPROM.put(2,volumeXn0); EEPROM.put(2,volumeXn0);

Loading…
Cancel
Save