Add calibration tab for pizero,pi2,pi3

This commit is contained in:
F5OEO 2017-05-15 10:26:20 +00:00
parent 0ddd7c521c
commit f9022c0ed8
7 changed files with 720 additions and 22 deletions

View file

@ -5,7 +5,7 @@ CFLAGS = -Wall -g -O2 -Wno-unused-variable
LDFLAGS = -lm -lrt -lpthread
../rpitx: RpiGpio.c RpiTx.c mailbox.c RpiDma.c raspberry_pi_revision.c
../rpitx: RpiGpio.c RpiTx.c mailbox.c RpiDma.c raspberry_pi_revision.c calibrationpi2.h calibrationpizero.h calibrationpi3.h
$(CC) $(CFLAGS) -o ../rpitx RpiTx.c RpiGpio.c mailbox.c RpiDma.c raspberry_pi_revision.c $(LDFLAGS)
CFLAGS_Pissb = -Wall -g -O2 -Wno-unused-variable

View file

@ -2,7 +2,7 @@
#include "RpiGpio.h"
#include "mailbox.h"
#include "raspberry_pi_revision.h"
static volatile unsigned int BCM2708_PERI_BASE;
static uint32_t dram_phys_base;
@ -67,7 +67,7 @@ int gpioSetMode(unsigned gpio, unsigned mode)
void DisplayInfo()
{
RASPBERRY_PI_INFO_T info;
if (getRaspberryPiInformation(&info) > 0)
{

View file

@ -9,6 +9,7 @@
#include <stdarg.h>
#include <stdint.h>
#include <ctype.h>
#include "raspberry_pi_revision.h"
char InitGpio(void);
@ -26,7 +27,7 @@ volatile uint32_t *pad_gpios_reg;
void * map_peripheral(uint32_t base, uint32_t len);
int gpioSetMode(unsigned gpio, unsigned mode);
RASPBERRY_PI_INFO_T info;
#define DMA_BASE (BCM2708_PERI_BASE + 0x00007000 )
#define DMA_LEN 0xF00

View file

@ -86,6 +86,10 @@ Optimize CPU on PWMFrequency
// DMA TIMING : depends on Pi Model : Calibration is better
int FREQ_DELAY_TIME=0;
float FREQ_MINI_TIMING=157;
float DelayStep=157;
float DelayMini=1200;
int PWMF_MARGIN = 2496;//1120; //A Margin for now at 1us with PCM ->OK
int globalppmpll=0;
@ -112,8 +116,9 @@ int Randomize=1;
uint32_t GlobalTabPwmFrequency[50];
unsigned int CalibrationTab[200];
#include "calibrationpi2.h"
#include "calibrationpi3.h"
#include "calibrationpizero.h"
//End F5OEO
@ -405,6 +410,7 @@ int SetupGpioClock(uint32_t SymbolRate,double TuningFrequency)
#define ln(x) (log(x)/log(2.718281828459045235f))
// Again some functions taken gracefully from F4GKR : https://github.com/f4gkr/RadiantBee
//Normalize to [-180,180):
inline double constrainAngle(double x){
@ -532,21 +538,22 @@ inline uint32_t FrequencyAmplitudeToRegister2(double TuneFrequency,uint32_t Ampl
int CompensateWait=WaitNanoSecond-OverWaitNanoSecond;
for(i=1;i<PWM_STEP_MAXI;i++)
{
if(CalibrationTab[i]+150>=CompensateWait)
if(CalibrationTab[i]+DelayStep>=CompensateWait)
{
break;
}
}
OverWaitNanoSecond+=CalibrationTab[i]+150-WaitNanoSecond;
OverWaitNanoSecond+=CalibrationTab[i]+DelayStep-WaitNanoSecond;
//printf("step %d Overwait=%d\n",i,OverWaitNanoSecond);
int PwmStepDMA=i; //Number step performs by DMA
int DelayStep=CalibrationTab[i+1]-CalibrationTab[i];
/* int DelayStep=CalibrationTab[i+1]-CalibrationTab[i];
int DelayMini=CalibrationTab[i]-((CalibrationTab[i+1]-CalibrationTab[i])*i);
DelayStep=157;
DelayMini=2400;
DelayMini=1200;
*/
int DelayMiniStep=DelayMini/DelayStep;
int NbStepPWM=PwmStepDMA+DelayMiniStep; // Number step we use to calculate including delay of Minimum constant due to perform Amplitude and getting the AXI bus
double UnitFrequency=DeltaFreq/(double)NbStepPWM; // Frequency granularity resulting in PWM Frequency
@ -943,8 +950,52 @@ inline uint32_t FrequencyAmplitudeToRegister(double TuneFrequency,uint32_t Ampli
}
//Get from http://stackoverflow.com/questions/5083465/fast-efficient-least-squares-fit-algorithm-in-c
#define REAL double
inline static REAL sqr(REAL x) {
return x*x;
}
int linreg(int n, const REAL x[], const REAL y[], REAL* m, REAL* b, REAL* r)
{
REAL sumx = 0.0; /* sum of x */
REAL sumx2 = 0.0; /* sum of x**2 */
REAL sumxy = 0.0; /* sum of x * y */
REAL sumy = 0.0; /* sum of y */
REAL sumy2 = 0.0; /* sum of y**2 */
int i;
for (i=0;i<n;i++)
{
sumx += x[i];
sumx2 += sqr(x[i]);
sumxy += x[i] * y[i];
sumy += y[i];
sumy2 += sqr(y[i]);
}
REAL denom = (n * sumx2 - sqr(sumx));
if (denom == 0) {
// singular matrix. can't solve the problem.
*m = 0;
*b = 0;
if (r) *r = 0;
return 1;
}
*m = (n * sumxy - sumx * sumy) / denom;
*b = (sumy * sumx2 - sumx * sumxy) / denom;
if (r!=NULL) {
*r = (sumxy - sumx * sumy / n) / /* compute correlation coeff */
sqrt((sumx2 - sqr(sumx)/n) *
(sumy2 - sqr(sumy)/n));
}
return 0;
}
int GetDMADelay(int Step)
@ -1034,9 +1085,16 @@ int CalibrateSystem(int *ppm,int *BaseDelayDMA,float *StepDelayDMA)
ntx.modes = 0; /* only read */
status = ntp_adjtime(&ntx);
double clockppm;
int hFileCsv;
hFileCsv=open("calib.csv",O_CREAT | O_WRONLY);
switch(info.model)
{
case RPI_MODEL_B_PI_2:InitCalibrationTabPi2();break;
case RPI_MODEL_ZERO:InitCalibrationTabPiZero();break;
case RPI_MODEL_B_PI_3:InitCalibrationTabPi3();break;
default:printf("Warning: No calibration for this pi model \n");InitCalibrationTabPiZero();break;
}
if (status != TIME_OK)
{
printf("Error: NTP\n");
@ -1057,19 +1115,50 @@ int CalibrateSystem(int *ppm,int *BaseDelayDMA,float *StepDelayDMA)
*StepDelayDMA=(GetDMADelay(PWM_STEP_MAXI/2)-(*BaseDelayDMA))/(PWM_STEP_MAXI/2);*/
char csvline[255];
#include "calibration.h"
REAL x[PWM_STEP_MAXI];
REAL y[PWM_STEP_MAXI];
/* for(i=1;i<200;i+=1)
/*
int hFileCsv;
hFileCsv=open("calib.csv",O_CREAT | O_WRONLY);
for(i=1;i<PWM_STEP_MAXI;i+=1)
{
int Delay=GetDMADelay(111);
int Delay=GetDMADelay(i);
printf("Step %d :%d \n",i,Delay);//,(GetDMADelay(i)-BaseDelay)/i);
sprintf(csvline,"CalibrationTab[%d]=%d\n",i,Delay);
sprintf(csvline,"CalibrationTab[%d]=%d;\n",i,Delay);
CalibrationTab[i]=Delay;
write(hFileCsv,csvline,strlen(csvline));
}*/
REAL m,b,r;
for(i=1;i<PWM_STEP_MAXI;i++)
{
x[i]=i;
y[i]=CalibrationTab[i];
}
#define TangentWindow 10
float Sum[2]={0.0,0.0};
int NumberToAverage=0;
for(i=20;i<PWM_STEP_MAXI-20;i++)
{
int n=TangentWindow+i<PWM_STEP_MAXI?TangentWindow:PWM_STEP_MAXI-i;
int Begin=((i-TangentWindow)<0)?i:i-TangentWindow;
linreg(n*2,x+Begin,y+Begin,&m,&b,&r);
Sum[0]+=m;
Sum[1]+=b;
NumberToAverage++;
//printf("Timing step %d = %f step + %f\n",i,m,b);
}
DelayStep=Sum[0]/NumberToAverage;
DelayMini=Sum[1]/NumberToAverage;
printf("DMA Delay Step =%f Delay =%f\n",DelayStep,DelayMini);
return 1;
}
@ -1103,7 +1192,7 @@ int pitx_init(int SampleRate, double TuningFrequency, int* skipSignals,int SetDm
//int FREQ_MINI_TIMING=157;
//int PWMF_MARGIN = 1120; //A Margin for now at 1us with PCM ->OK
if(CalibrateSystem(&globalppmpll,&PWMF_MARGIN,&FREQ_MINI_TIMING)) printf("Calibrate : ppm=%d DMA %fns:%dns\n",globalppmpll,FREQ_MINI_TIMING,PWMF_MARGIN);
if(CalibrateSystem(&globalppmpll,&PWMF_MARGIN,&FREQ_MINI_TIMING)) printf("Calibrate : ppm=%d DMA %fns:%fns\n",globalppmpll,DelayStep,DelayMini);
//printf("Timing : 1 cyle=%dns 1sample=%dns\n",NBSAMPLES_PWM_FREQ_MAX*400*3,(int)(1e9/(float)SampleRate));
return 1;
}
@ -1720,7 +1809,7 @@ int pitx_run(
{
CompteSample++;
// if(CompteSample==327670) Up=0;
if(CompteSample==327670) Up=0;
}
else
{
@ -1728,9 +1817,9 @@ int pitx_run(
if(CompteSample==0) Up=1;
}
debug=1;//(debug+1)%2;
OutputPower=((CompteSample/50)%2)*32767;
//OutputPower=((CompteSample/50)%2)*32767;
uint32_t RealWait=FrequencyAmplitudeToRegister2(GlobalTuningFrequency/HarmonicNumber+(CompteSample*0.00),OutputPower,last_sample++,20000,0,NoUsePwmFrequency,debug);
uint32_t RealWait=FrequencyAmplitudeToRegister2(GlobalTuningFrequency/HarmonicNumber+(CompteSample*0.05),OutputPower,last_sample++,20000,0,NoUsePwmFrequency,debug);
//printf("RealWait %d\n",(CompteSample/100)%15000+5000);
free_slots--;
//printf("%f \n",GlobalTuningFrequency+(((CompteSample/10)*1)%50000));

203
src/calibrationpi2.h Normal file
View file

@ -0,0 +1,203 @@
void InitCalibrationTabPi2(void)
{
CalibrationTab[1]=1504;
CalibrationTab[2]=1777;
CalibrationTab[3]=2048;
CalibrationTab[4]=2361;
CalibrationTab[5]=2617;
CalibrationTab[6]=2865;
CalibrationTab[7]=3082;
CalibrationTab[8]=3315;
CalibrationTab[9]=3538;
CalibrationTab[10]=3774;
CalibrationTab[11]=3968;
CalibrationTab[12]=4219;
CalibrationTab[13]=4452;
CalibrationTab[14]=4689;
CalibrationTab[15]=4900;
CalibrationTab[16]=5127;
CalibrationTab[17]=5315;
CalibrationTab[18]=5507;
CalibrationTab[19]=5660;
CalibrationTab[20]=5830;
CalibrationTab[21]=5975;
CalibrationTab[22]=6129;
CalibrationTab[23]=6286;
CalibrationTab[24]=6444;
CalibrationTab[25]=6603;
CalibrationTab[26]=6756;
CalibrationTab[27]=6915;
CalibrationTab[28]=7072;
CalibrationTab[29]=7231;
CalibrationTab[30]=7389;
CalibrationTab[31]=7539;
CalibrationTab[32]=7707;
CalibrationTab[33]=7838;
CalibrationTab[34]=8002;
CalibrationTab[35]=8158;
CalibrationTab[36]=8315;
CalibrationTab[37]=8474;
CalibrationTab[38]=8634;
CalibrationTab[39]=8790;
CalibrationTab[40]=8943;
CalibrationTab[41]=9105;
CalibrationTab[42]=9260;
CalibrationTab[43]=9415;
CalibrationTab[44]=9569;
CalibrationTab[45]=9745;
CalibrationTab[46]=9883;
CalibrationTab[47]=10032;
CalibrationTab[48]=10197;
CalibrationTab[49]=10351;
CalibrationTab[50]=10509;
CalibrationTab[51]=10663;
CalibrationTab[52]=10823;
CalibrationTab[53]=10981;
CalibrationTab[54]=11138;
CalibrationTab[55]=11295;
CalibrationTab[56]=11450;
CalibrationTab[57]=11616;
CalibrationTab[58]=11745;
CalibrationTab[59]=11910;
CalibrationTab[60]=12067;
CalibrationTab[61]=12216;
CalibrationTab[62]=12380;
CalibrationTab[63]=12534;
CalibrationTab[64]=12697;
CalibrationTab[65]=12850;
CalibrationTab[66]=13012;
CalibrationTab[67]=13164;
CalibrationTab[68]=13319;
CalibrationTab[69]=13477;
CalibrationTab[70]=13653;
CalibrationTab[71]=13786;
CalibrationTab[72]=13944;
CalibrationTab[73]=14103;
CalibrationTab[74]=14259;
CalibrationTab[75]=14411;
CalibrationTab[76]=14569;
CalibrationTab[77]=14730;
CalibrationTab[78]=14887;
CalibrationTab[79]=15036;
CalibrationTab[80]=15202;
CalibrationTab[81]=15356;
CalibrationTab[82]=15519;
CalibrationTab[83]=15648;
CalibrationTab[84]=15816;
CalibrationTab[85]=15973;
CalibrationTab[86]=16119;
CalibrationTab[87]=16284;
CalibrationTab[88]=16445;
CalibrationTab[89]=16602;
CalibrationTab[90]=16758;
CalibrationTab[91]=16920;
CalibrationTab[92]=17072;
CalibrationTab[93]=17228;
CalibrationTab[94]=17381;
CalibrationTab[95]=17556;
CalibrationTab[96]=17694;
CalibrationTab[97]=17850;
CalibrationTab[98]=18012;
CalibrationTab[99]=18164;
CalibrationTab[100]=18317;
CalibrationTab[101]=18474;
CalibrationTab[102]=18637;
CalibrationTab[103]=18790;
CalibrationTab[104]=18949;
CalibrationTab[105]=19107;
CalibrationTab[106]=19262;
CalibrationTab[107]=19423;
CalibrationTab[108]=19550;
CalibrationTab[109]=19722;
CalibrationTab[110]=19881;
CalibrationTab[111]=20028;
CalibrationTab[112]=20192;
CalibrationTab[113]=20354;
CalibrationTab[114]=20505;
CalibrationTab[115]=20664;
CalibrationTab[116]=20823;
CalibrationTab[117]=20978;
CalibrationTab[118]=21135;
CalibrationTab[119]=21288;
CalibrationTab[120]=21462;
CalibrationTab[121]=21604;
CalibrationTab[122]=21759;
CalibrationTab[123]=21917;
CalibrationTab[124]=22071;
CalibrationTab[125]=22222;
CalibrationTab[126]=22384;
CalibrationTab[127]=22534;
CalibrationTab[128]=22699;
CalibrationTab[129]=22855;
CalibrationTab[130]=23014;
CalibrationTab[131]=23168;
CalibrationTab[132]=23326;
CalibrationTab[133]=23450;
CalibrationTab[134]=23626;
CalibrationTab[135]=23785;
CalibrationTab[136]=23934;
CalibrationTab[137]=24099;
CalibrationTab[138]=24264;
CalibrationTab[139]=24407;
CalibrationTab[140]=24571;
CalibrationTab[141]=24725;
CalibrationTab[142]=24887;
CalibrationTab[143]=25033;
CalibrationTab[144]=25193;
CalibrationTab[145]=25370;
CalibrationTab[146]=25511;
CalibrationTab[147]=25664;
CalibrationTab[148]=25825;
CalibrationTab[149]=25978;
CalibrationTab[150]=26129;
CalibrationTab[151]=26285;
CalibrationTab[152]=26448;
CalibrationTab[153]=26604;
CalibrationTab[154]=26764;
CalibrationTab[155]=26918;
CalibrationTab[156]=27081;
CalibrationTab[157]=27238;
CalibrationTab[158]=27352;
CalibrationTab[159]=27531;
CalibrationTab[160]=27692;
CalibrationTab[161]=27845;
CalibrationTab[162]=28005;
CalibrationTab[163]=28164;
CalibrationTab[164]=28313;
CalibrationTab[165]=28478;
CalibrationTab[166]=28633;
CalibrationTab[167]=28791;
CalibrationTab[168]=28948;
CalibrationTab[169]=29099;
CalibrationTab[170]=29271;
CalibrationTab[171]=29415;
CalibrationTab[172]=29569;
CalibrationTab[173]=29729;
CalibrationTab[174]=29885;
CalibrationTab[175]=30031;
CalibrationTab[176]=30196;
CalibrationTab[177]=30352;
CalibrationTab[178]=30508;
CalibrationTab[179]=30670;
CalibrationTab[180]=30827;
CalibrationTab[181]=30986;
CalibrationTab[182]=31146;
CalibrationTab[183]=31254;
CalibrationTab[184]=31441;
CalibrationTab[185]=31597;
CalibrationTab[186]=31751;
CalibrationTab[187]=31911;
CalibrationTab[188]=32070;
CalibrationTab[189]=32219;
CalibrationTab[190]=32386;
CalibrationTab[191]=32535;
CalibrationTab[192]=32699;
CalibrationTab[193]=32854;
CalibrationTab[194]=33007;
CalibrationTab[195]=33176;
CalibrationTab[196]=33323;
CalibrationTab[197]=33475;
CalibrationTab[198]=33636;
CalibrationTab[199]=33790;
}

202
src/calibrationpi3.h Normal file
View file

@ -0,0 +1,202 @@
void InitCalibrationTabPi3(void)
{
CalibrationTab[1]=1280;
CalibrationTab[2]=1533;
CalibrationTab[3]=1786;
CalibrationTab[4]=2028;
CalibrationTab[5]=2289;
CalibrationTab[6]=2527;
CalibrationTab[7]=2739;
CalibrationTab[8]=2957;
CalibrationTab[9]=3158;
CalibrationTab[10]=3367;
CalibrationTab[11]=3556;
CalibrationTab[12]=3772;
CalibrationTab[13]=3941;
CalibrationTab[14]=4160;
CalibrationTab[15]=4348;
CalibrationTab[16]=4556;
CalibrationTab[17]=4760;
CalibrationTab[18]=4927;
CalibrationTab[19]=5097;
CalibrationTab[20]=5272;
CalibrationTab[21]=5391;
CalibrationTab[22]=5567;
CalibrationTab[23]=5752;
CalibrationTab[24]=5871;
CalibrationTab[25]=6039;
CalibrationTab[26]=6201;
CalibrationTab[27]=6340;
CalibrationTab[28]=6495;
CalibrationTab[29]=6672;
CalibrationTab[30]=6835;
CalibrationTab[31]=7029;
CalibrationTab[32]=7117;
CalibrationTab[33]=7298;
CalibrationTab[34]=7462;
CalibrationTab[35]=7638;
CalibrationTab[36]=7798;
CalibrationTab[37]=7914;
CalibrationTab[38]=8038;
CalibrationTab[39]=8227;
CalibrationTab[40]=8399;
CalibrationTab[41]=8550;
CalibrationTab[42]=8721;
CalibrationTab[43]=8894;
CalibrationTab[44]=9050;
CalibrationTab[45]=9162;
CalibrationTab[46]=9331;
CalibrationTab[47]=9504;
CalibrationTab[48]=9663;
CalibrationTab[49]=9812;
CalibrationTab[50]=9976;
CalibrationTab[51]=10135;
CalibrationTab[52]=10307;
CalibrationTab[53]=10538;
CalibrationTab[54]=10576;
CalibrationTab[55]=10737;
CalibrationTab[56]=10914;
CalibrationTab[57]=11077;
CalibrationTab[58]=11237;
CalibrationTab[59]=11412;
CalibrationTab[60]=11544;
CalibrationTab[61]=11697;
CalibrationTab[62]=11859;
CalibrationTab[63]=12008;
CalibrationTab[64]=12183;
CalibrationTab[65]=12347;
CalibrationTab[66]=12534;
CalibrationTab[67]=12670;
CalibrationTab[68]=12762;
CalibrationTab[69]=12949;
CalibrationTab[70]=13116;
CalibrationTab[71]=13277;
CalibrationTab[72]=13444;
CalibrationTab[73]=13592;
CalibrationTab[74]=13757;
CalibrationTab[75]=13929;
CalibrationTab[76]=14084;
CalibrationTab[77]=14196;
CalibrationTab[78]=14381;
CalibrationTab[79]=14558;
CalibrationTab[80]=14682;
CalibrationTab[81]=14862;
CalibrationTab[82]=15009;
CalibrationTab[83]=15188;
CalibrationTab[84]=15344;
CalibrationTab[85]=15537;
CalibrationTab[86]=15722;
CalibrationTab[87]=15831;
CalibrationTab[88]=15875;
CalibrationTab[89]=16074;
CalibrationTab[90]=16248;
CalibrationTab[91]=16427;
CalibrationTab[92]=16575;
CalibrationTab[93]=16751;
CalibrationTab[94]=16908;
CalibrationTab[95]=17068;
CalibrationTab[96]=17234;
CalibrationTab[97]=17351;
CalibrationTab[98]=17523;
CalibrationTab[99]=17700;
CalibrationTab[100]=17863;
CalibrationTab[101]=18061;
CalibrationTab[102]=18130;
CalibrationTab[103]=18308;
CalibrationTab[104]=18486;
CalibrationTab[105]=18646;
CalibrationTab[106]=18800;
CalibrationTab[107]=18998;
CalibrationTab[108]=19093;
CalibrationTab[109]=19265;
CalibrationTab[110]=19454;
CalibrationTab[111]=19557;
CalibrationTab[112]=19719;
CalibrationTab[113]=19895;
CalibrationTab[114]=20049;
CalibrationTab[115]=20217;
CalibrationTab[116]=20374;
CalibrationTab[117]=20540;
CalibrationTab[118]=20718;
CalibrationTab[119]=20926;
CalibrationTab[120]=21103;
CalibrationTab[121]=21150;
CalibrationTab[122]=21212;
CalibrationTab[123]=21447;
CalibrationTab[124]=21614;
CalibrationTab[125]=21776;
CalibrationTab[126]=21939;
CalibrationTab[127]=22096;
CalibrationTab[128]=22260;
CalibrationTab[129]=22418;
CalibrationTab[130]=22586;
CalibrationTab[131]=22737;
CalibrationTab[132]=22908;
CalibrationTab[133]=23056;
CalibrationTab[134]=23206;
CalibrationTab[135]=23361;
CalibrationTab[136]=23522;
CalibrationTab[137]=23725;
CalibrationTab[138]=23792;
CalibrationTab[139]=23973;
CalibrationTab[140]=24146;
CalibrationTab[141]=24311;
CalibrationTab[142]=24449;
CalibrationTab[143]=24616;
CalibrationTab[144]=24782;
CalibrationTab[145]=24942;
CalibrationTab[146]=25115;
CalibrationTab[147]=25330;
CalibrationTab[148]=25383;
CalibrationTab[149]=25526;
CalibrationTab[150]=25712;
CalibrationTab[151]=25881;
CalibrationTab[152]=26043;
CalibrationTab[153]=26201;
CalibrationTab[154]=26375;
CalibrationTab[155]=26496;
CalibrationTab[156]=26672;
CalibrationTab[157]=26842;
CalibrationTab[158]=27017;
CalibrationTab[159]=27165;
CalibrationTab[160]=27287;
CalibrationTab[161]=27433;
CalibrationTab[162]=27597;
CalibrationTab[163]=27764;
CalibrationTab[164]=27939;
CalibrationTab[165]=28094;
CalibrationTab[166]=28212;
CalibrationTab[167]=28385;
CalibrationTab[168]=28560;
CalibrationTab[169]=28717;
CalibrationTab[170]=28856;
CalibrationTab[171]=29027;
CalibrationTab[172]=29213;
CalibrationTab[173]=29322;
CalibrationTab[174]=29509;
CalibrationTab[175]=29651;
CalibrationTab[176]=29834;
CalibrationTab[177]=29963;
CalibrationTab[178]=30142;
CalibrationTab[179]=30297;
CalibrationTab[180]=30470;
CalibrationTab[181]=30609;
CalibrationTab[182]=30792;
CalibrationTab[183]=30953;
CalibrationTab[184]=31129;
CalibrationTab[185]=31322;
CalibrationTab[186]=31598;
CalibrationTab[187]=31656;
CalibrationTab[188]=31707;
CalibrationTab[189]=31777;
CalibrationTab[190]=31917;
CalibrationTab[191]=32145;
CalibrationTab[192]=32335;
CalibrationTab[193]=32465;
CalibrationTab[194]=32648;
CalibrationTab[195]=32803;
CalibrationTab[196]=32980;
CalibrationTab[197]=33105;
CalibrationTab[198]=33288;
CalibrationTab[199]=33439;}

203
src/calibrationpizero.h Normal file
View file

@ -0,0 +1,203 @@
void InitCalibrationTabPiZero(void)
{
CalibrationTab[1]=1135;
CalibrationTab[2]=1317;
CalibrationTab[3]=1521;
CalibrationTab[4]=1712;
CalibrationTab[5]=1891;
CalibrationTab[6]=2064;
CalibrationTab[7]=2239;
CalibrationTab[8]=2414;
CalibrationTab[9]=2578;
CalibrationTab[10]=2752;
CalibrationTab[11]=2894;
CalibrationTab[12]=3057;
CalibrationTab[13]=3212;
CalibrationTab[14]=3363;
CalibrationTab[15]=3527;
CalibrationTab[16]=3714;
CalibrationTab[17]=3866;
CalibrationTab[18]=3979;
CalibrationTab[19]=4175;
CalibrationTab[20]=4316;
CalibrationTab[21]=4512;
CalibrationTab[22]=4627;
CalibrationTab[23]=4805;
CalibrationTab[24]=4930;
CalibrationTab[25]=5104;
CalibrationTab[26]=5281;
CalibrationTab[27]=5408;
CalibrationTab[28]=5578;
CalibrationTab[29]=5759;
CalibrationTab[30]=5882;
CalibrationTab[31]=6044;
CalibrationTab[32]=6208;
CalibrationTab[33]=6349;
CalibrationTab[34]=6507;
CalibrationTab[35]=6678;
CalibrationTab[36]=6831;
CalibrationTab[37]=7036;
CalibrationTab[38]=7121;
CalibrationTab[39]=7292;
CalibrationTab[40]=7464;
CalibrationTab[41]=7620;
CalibrationTab[42]=7796;
CalibrationTab[43]=7929;
CalibrationTab[44]=8254;
CalibrationTab[45]=8232;
CalibrationTab[46]=8398;
CalibrationTab[47]=8533;
CalibrationTab[48]=8701;
CalibrationTab[49]=8881;
CalibrationTab[50]=9055;
CalibrationTab[51]=9149;
CalibrationTab[52]=9320;
CalibrationTab[53]=9489;
CalibrationTab[54]=9647;
CalibrationTab[55]=9774;
CalibrationTab[56]=9952;
CalibrationTab[57]=10105;
CalibrationTab[58]=10277;
CalibrationTab[59]=10544;
CalibrationTab[60]=10579;
CalibrationTab[61]=10722;
CalibrationTab[62]=10887;
CalibrationTab[63]=11046;
CalibrationTab[64]=11207;
CalibrationTab[65]=11364;
CalibrationTab[66]=11690;
CalibrationTab[67]=11697;
CalibrationTab[68]=11826;
CalibrationTab[69]=11973;
CalibrationTab[70]=12141;
CalibrationTab[71]=12311;
CalibrationTab[72]=12513;
CalibrationTab[73]=12679;
CalibrationTab[74]=12736;
CalibrationTab[75]=12911;
CalibrationTab[76]=13071;
CalibrationTab[77]=13234;
CalibrationTab[78]=13381;
CalibrationTab[79]=13579;
CalibrationTab[80]=13688;
CalibrationTab[81]=13861;
CalibrationTab[82]=14182;
CalibrationTab[83]=14209;
CalibrationTab[84]=14328;
CalibrationTab[85]=14485;
CalibrationTab[86]=14653;
CalibrationTab[87]=14799;
CalibrationTab[88]=14948;
CalibrationTab[89]=15119;
CalibrationTab[90]=15275;
CalibrationTab[91]=15453;
CalibrationTab[92]=15741;
CalibrationTab[93]=15841;
CalibrationTab[94]=15875;
CalibrationTab[95]=16029;
CalibrationTab[96]=16294;
CalibrationTab[97]=16368;
CalibrationTab[98]=16516;
CalibrationTab[99]=16682;
CalibrationTab[100]=16834;
CalibrationTab[101]=16961;
CalibrationTab[102]=17148;
CalibrationTab[103]=17315;
CalibrationTab[104]=17453;
CalibrationTab[105]=17621;
CalibrationTab[106]=17772;
CalibrationTab[107]=17944;
CalibrationTab[108]=18129;
CalibrationTab[109]=18319;
CalibrationTab[110]=18387;
CalibrationTab[111]=18548;
CalibrationTab[112]=18690;
CalibrationTab[113]=18872;
CalibrationTab[114]=19046;
CalibrationTab[115]=19166;
CalibrationTab[116]=19338;
CalibrationTab[117]=19531;
CalibrationTab[118]=19627;
CalibrationTab[119]=19813;
CalibrationTab[120]=20050;
CalibrationTab[121]=20106;
CalibrationTab[122]=20273;
CalibrationTab[123]=20434;
CalibrationTab[124]=20613;
CalibrationTab[125]=20853;
CalibrationTab[126]=21102;
CalibrationTab[127]=21134;
CalibrationTab[128]=21185;
CalibrationTab[129]=21347;
CalibrationTab[130]=21592;
CalibrationTab[131]=21666;
CalibrationTab[132]=21834;
CalibrationTab[133]=21991;
CalibrationTab[134]=22143;
CalibrationTab[135]=22304;
CalibrationTab[136]=22437;
CalibrationTab[137]=22638;
CalibrationTab[138]=22767;
CalibrationTab[139]=22929;
CalibrationTab[140]=23178;
CalibrationTab[141]=23241;
CalibrationTab[142]=23413;
CalibrationTab[143]=23551;
CalibrationTab[144]=23784;
CalibrationTab[145]=23835;
CalibrationTab[146]=24010;
CalibrationTab[147]=24187;
CalibrationTab[148]=24345;
CalibrationTab[149]=24573;
CalibrationTab[150]=24658;
CalibrationTab[151]=24802;
CalibrationTab[152]=24963;
CalibrationTab[153]=25151;
CalibrationTab[154]=25370;
CalibrationTab[155]=25401;
CalibrationTab[156]=25567;
CalibrationTab[157]=25813;
CalibrationTab[158]=25890;
CalibrationTab[159]=26055;
CalibrationTab[160]=26182;
CalibrationTab[161]=26387;
CalibrationTab[162]=26504;
CalibrationTab[163]=26684;
CalibrationTab[164]=26833;
CalibrationTab[165]=27080;
CalibrationTab[166]=27207;
CalibrationTab[167]=27308;
CalibrationTab[168]=27444;
CalibrationTab[169]=27617;
CalibrationTab[170]=27790;
CalibrationTab[171]=27933;
CalibrationTab[172]=28097;
CalibrationTab[173]=28320;
CalibrationTab[174]=28390;
CalibrationTab[175]=28559;
CalibrationTab[176]=28707;
CalibrationTab[177]=28873;
CalibrationTab[178]=29016;
CalibrationTab[179]=29191;
CalibrationTab[180]=29407;
CalibrationTab[181]=29494;
CalibrationTab[182]=29644;
CalibrationTab[183]=29812;
CalibrationTab[184]=29936;
CalibrationTab[185]=30110;
CalibrationTab[186]=30274;
CalibrationTab[187]=30496;
CalibrationTab[188]=30613;
CalibrationTab[189]=30762;
CalibrationTab[190]=30932;
CalibrationTab[191]=31146;
CalibrationTab[192]=31604;
CalibrationTab[193]=31659;
CalibrationTab[194]=31714;
CalibrationTab[195]=31716;
CalibrationTab[196]=31796;
CalibrationTab[197]=31973;
CalibrationTab[198]=32129;
CalibrationTab[199]=32299;
}