Dmitry Kovalev
/
LGfiltr
forkd
Fork of LGstaandart by
Diff: Command.c
- Revision:
- 208:19150d2b528f
- Parent:
- 207:d1ce992f5d17
- Child:
- 209:224e7331a061
diff -r d1ce992f5d17 -r 19150d2b528f Command.c --- a/Command.c Fri Jan 13 08:27:28 2017 +0000 +++ b/Command.c Tue Feb 07 10:11:35 2017 +0000 @@ -13,7 +13,7 @@ unsigned int Consol=123; unsigned int TempParam=1; unsigned int CountParam=0; - +int d8_anser=0,A=0,SA=0; int ttemp; int OLDDAC=0; int rr = 123; @@ -61,11 +61,9 @@ */ void EraseFlash(void) { - Gyro.FlashMod = 0; rr = u32IAP_PrepareSectors(19, 21); sprintf((Time)," dffddfd <%07d> ",rr); WriteCon(Time); - rr = u32IAP_EraseSectors(19, 21); sprintf((Time)," dffddfd <%07d> ",rr); WriteCon(Time); @@ -73,7 +71,8 @@ void WriteFlash(void) - { Gyro.FlashMod = 0; + { + Gyro.FlashMod = 0; //SystemInitDef(); NVIC_DisableIRQ(TIMER1_IRQn); @@ -81,26 +80,11 @@ NVIC_DisableIRQ(TIMER3_IRQn); NVIC_DisableIRQ(EINT3_IRQn); - unsigned int start_address = (unsigned int) & GyroP; - sprintf((Time)," dffddfd <%07d> ",&rr); - WriteCon(Time); - ////unsigned int address=0x0003000; + // unsigned int start_address = (unsigned int) & GyroP; rr = u32IAP_PrepareSectors(19, 21); - sprintf((Time)," dffddfd <%07d> ",rr); - WriteCon(Time); - - rr = u32IAP_EraseSectors(19, 21); - sprintf((Time)," dffddfd <%07d> ",rr); - WriteCon(Time); - + rr = u32IAP_EraseSectors (19, 21); rr = u32IAP_PrepareSectors(19, 21); - sprintf((Time)," dffddfd <%07d> ",rr); - WriteCon(Time); - - /// SystemInitDef(); - rr = u32IAP_CopyRAMToFlash(0x030000, &GyroP , 1024); - sprintf((Time)," dffddfd <%07d> ",rr); - WriteCon(Time); + rr = u32IAP_CopyRAMToFlash(0x030000, &GyroP , 1024); // SystemInit1(); // Инициализация контроллера: установка тактовых частот //SystemCoreClockUpdate1(); // расчет тактовой частоты процессора перед инициализацией UART - 103MHz @@ -108,6 +92,7 @@ NVIC_EnableIRQ(TIMER2_IRQn); NVIC_EnableIRQ(TIMER3_IRQn); NVIC_EnableIRQ(EINT3_IRQn); + //SystemCoreClockUpdate1(); } void ReadFlash ( void) @@ -127,30 +112,13 @@ NVIC_EnableIRQ(TIMER2_IRQn); NVIC_EnableIRQ(TIMER3_IRQn); NVIC_EnableIRQ(EINT3_IRQn); - //char table = (char*)your_address; - /* sprintf((Time)," dffddfd <%07d> ",GyroP.Array[10]); - WriteCon(Time);*/ - - - /*int address = flash_size() - SECTOR_SIZE; //Write in last sector - - int *data = (int*)address; - printf("Starting\r\n"); - // erase_sector(address); do not erase the previous content - // int numbers[10] = {0, 1, 10, 100, 1000, 10000, 1000000, 10000000, 100000000, 1000000000}; - // program_flash(address, (char*)&numbers, 40); //dont overwrite the previous data - printf("Resulting flash: \r\n"); - for (int i = 0; i<10; i++) - printf("%d\r\n", data[i]); //display the non volatile data - - printf("Done\r\n\n");*/ - } +} ///////////////end flah and boot/////////// void M_RateA(void) { switch(Gyro.ModeOut) { case 1: if(Gyro.Rate1_Event ) CMD_Rate(); break; - case 2: if(Gyro.Reper_Event ) CMD_Rate2(); break; //Gyro.Reper_Event выставляется при переходе синуса из - в + + case 2: if(Gyro.Reper_Event ) CMD_Rate2(); break; case 3: if(Gyro.Event_500Hz ) CMD_Delta_PS(); break; case 4: if(Gyro.EXT_Latch ) CMD_Delta_PS(); break; case 5: if(Gyro.Event_500Hz ) CMD_Delta_Bins(); break; @@ -161,49 +129,103 @@ void CMD_M_Param_R(void) { - unsigned int NP; + + unsigned int NP=0; unsigned int Param; + + NP = BuffTemp[3]; + + + + BuffTemp[0] = Gyro.SOC_Out; BuffTemp[1] = Gyro.My_Addres; - NP = BuffTemp[3]; - + + sprintf((Time),"%d = %d \r\n",NP, GyroP.Array[NP]); + WriteCon(Time); Param = GyroP.Array[NP]; - - BuffTemp[2] =(Param >> 8) & 0xff;//старший байт требуемого параметра - BuffTemp[3] =(Param >> 0) & 0xff;//младший байт требуемого параметра + BuffTemp[2] =(GyroP.Array[NP] >> 8) & 0xff;//старший байт требуемого параметра + BuffTemp[3] =(GyroP.Array[NP] >> 0) & 0xff;//младший байт требуемого параметра Check(BuffTemp, 6); WriteConN (BuffTemp,6); /*sprintf((Time),"READ Param = <%07d> GyroP.Array[NP] = <%07d> NP= <%07d> Gyro.CaunPlus+Gyro.CaunMin-5000 <%07d> \r\n",Param, GyroP.Array[NP], NP, GyroP.Str.PLC_Lern); WriteCon(Time);*/ + NP=0; } void CMD_M_Param_W(void) { - unsigned int NP; - unsigned int Param; + unsigned int NP=0; + unsigned int Param,temp,flash; NP = BuffTemp[3]; Param = (BuffTemp[4]<<8); Param |= BuffTemp[5]; - GyroP.Array[NP] = Param; - + GyroP.Array[NP] = Param; + flash=GyroP.Array[5]; + sprintf((Time),"%d\r\n",NP); + WriteCon(Time); + switch(NP) + { + case 0: Gyro.My_Addres = GyroP.Str.My_Addres; break; + case 3: Spi.DAC_A = GyroP.Str.DAC_current_Work; break; + case 7: Gyro.PLC_Phase = GyroP.Str.PLC_Phase; break; + case 8: Gyro.PLC_Gain = GyroP.Str.PLC_Gain; break; + case 12: Gyro.FrqPhase = GyroP.Str.FrqPhase; break; + case 13: Gyro.FrqChengSpeed = GyroP.Str.FrqChengSpeed; break; + + case 14: Gyro.FrqHZ = GyroP.Str.FrqHZ; + Gyro.Frq = GyroP.Str.FrqHZ<<16; + break; + + case 15: Gyro.FrqHZmin = GyroP.Str.FrqHZmin<<16; break; + case 16: Gyro.FrqHZmax = GyroP.Str.FrqHZmax<<16; break; + + case 18: temp=((GyroP.Str.VB_Fdf_Hi<<16) | GyroP.Str.VB_Fdf_Lo); + temp=temp/18.2; + Gyro.AmpTarget=(unsigned int)(temp); + break; + + case 19: Gyro.AmpSpeed = GyroP.Str.AmpSpeed; break; + case 20: Gyro.AmpPerMin = GyroP.Str.AmpPerMin; break; + case 21: Gyro.AmpPerMax = GyroP.Str.AmpPerMax; break; + + case 22: Gyro.AmpPer = GyroP.Str.AmpPer; + Gyro.Amp = GyroP.Str.AmpPer<<16; + break; + + case 23: Gyro.AmpMin = GyroP.Str.AmpMin; break; + case 24: Gyro.AmpTD = GyroP.Str.AmpTD; break; + case 25: Gyro.AmpPerDel = GyroP.Str.AmpPerDel; break; + case 34: Gyro.ModAmp = GyroP.Str.ModAmp; break; + case 56: Gyro.Gain_Sin = GyroP.Str.Gain_Sin; + Out_G_photo(Gyro.Gain_Sin, Gyro.Gain_Cos); + break; + case 57: Gyro.Gain_Cos = GyroP.Str.Gain_Cos; + Out_G_photo(Gyro.Gain_Sin, Gyro.Gain_Cos); + break; + case 60: Gyro.GLD_Serial = GyroP.Str.GLD_Serial; break; + } + + NP=0; BuffTemp[0] = Gyro.SOC_Out; BuffTemp[1] = Gyro.My_Addres; BuffTemp[2] = Gyro.CMD_In; - BuffTemp[3] = (GyroP.Array[NP]>> 8) & 0xff;//старший байт требуемого параметра + BuffTemp[3] =0; //(//GyroP.Array[NP]>> 8) & 0xff;//старший байт требуемого параметра Check(BuffTemp, 6); WriteConN (BuffTemp,6); - /* sprintf((Time),"READ Param = <%07d> GyroP.Array[NP] = <%07d> NP= <%07d> GyroP.Str.PLC_Lern = <%07d> \r\n",Param, GyroP.Array[NP], NP, GyroP.Str.PLC_Lern); - WriteCon(Time);*/ + if(flash){GyroP.Array[5]=0; flash=0; WriteFlash(); ReadFlash ();} + + } void CMD_Maintenance(void) { - - Gyro.DropDelayGLD = DropDelayGLD_0;//задержка на выдачу 45 микросекунд для любого адреса ГЛД + // Gyro.ModeOut=0; + //Gyro.DropDelayGLD = DropDelayGLD_0;//задержка на выдачу 45 микросекунд для любого адреса ГЛД BuffTemp[0] = Gyro.SOC_Out; BuffTemp[1] = Gyro.My_Addres; BuffTemp[2] = Gyro.Firmware_Version; @@ -230,6 +252,7 @@ BuffTemp[ 5] = 0x00000000; Check(BuffTemp, 8); WriteConN (BuffTemp,8); + } void CMD_Delta_Bins(void) @@ -256,7 +279,7 @@ unsigned int Temp; BuffTemp[ 0] = Gyro.SOC_Out; BuffTemp[ 1] = Gyro.My_Addres; - + Temp = Gyro.CuruAngle; Gyro.CuruAngle = 0; @@ -275,8 +298,7 @@ case 1: BuffTemp[5] = (Temp >> 0) & 0xff; break; - - + //HFO case 2: @@ -433,102 +455,107 @@ { Gyro.Rate1_Event=0; unsigned int Temp; + int Temp1; unsigned int OldCuruAngle; - Gyro.Firmware_Version=0xff; /// промежуточная затычка - - BuffTemp[ 0] = Gyro.SOC_Out; - BuffTemp[ 1] = Gyro.My_Addres; + BuffTemp[ 0] = Gyro.SOC_Out; //1 --старт данных + BuffTemp[ 1] = Gyro.My_Addres; //2 --адрес отвечающего устройствва - - BuffTemp[ 2] =(Gyro.CaunPlus >> 8) & 0xff;//старший байт счетчика +. - BuffTemp[ 3] =(Gyro.CaunPlus >> 0) & 0xff;//младший байт счетчика +. - - BuffTemp[ 4] =(Gyro.CaunMin >> 8) & 0xff;//старший байт счетчика -. - BuffTemp[ 5] =(Gyro.CaunMin >> 0) & 0xff;//младший байт счетчика -. - + BuffTemp[ 2] =(Gyro.CaunPlus >> 8) & 0xff;//старший байт счетчика +. 3 --сарший байт счентчика + + BuffTemp[ 3] =(Gyro.CaunPlus >> 0) & 0xff;//младший байт счетчика +. 4 --младший байт счетчика + - Temp=Gyro.CuruAngle; //(0,28/с) - - - //8 байт + 4 байта от прошлых измерений -//Gyro.CuruAngle = Gyro.CuruAngle + OldCuruAngle; //(72 град/с) -/* OldCuruAngle=Gyro.CuruAngle & 0xff; //сохраняем 4 байта для след измирений - Temp=Gyro.CuruAngle>>8; */ //приводим к форме вывода - - /* //(9 град/с) -OldCuruAngle=Gyro.CuruAngle & 0x1f; //сохраняем 5 бит для след измирений -Temp=Gyro.CuruAngle>>5; */ //приводим к форме вывода -Gyro.CuruAngle = 0; - BuffTemp[ 6] =(Temp >> 8) & 0xff;//старший байт разности счетчиков - BuffTemp[ 7] =(Temp >> 0) & 0xff;//младший байт разности счетчиков + BuffTemp[ 4] =(Gyro.CaunMin >> 8) & 0xff;//старший байт счетчика -. 5 --сарший байт счентчика - + BuffTemp[ 5] =(Gyro.CaunMin >> 0) & 0xff;//младший байт счетчика -. 6 --младший байт счетчика - + + Temp=Gyro.CuruAngle; //(0,28/с) + //8 байт + 4 байта от прошлых измерений + //Gyro.CuruAngle = Gyro.CuruAngle + OldCuruAngle; //(72 град/с) + /* OldCuruAngle=Gyro.CuruAngle & 0xff; //сохраняем 4 байта для след измирений + Temp=Gyro.CuruAngle>>8; */ //приводим к форме вывода + + /* //(9 град/с) + OldCuruAngle=Gyro.CuruAngle & 0x1f; //сохраняем 5 бит для след измирений + Temp=Gyro.CuruAngle>>5; */ //приводим к форме вывода + + Gyro.CuruAngle = 0; + BuffTemp[ 6] =(Temp >> 8) & 0xff;//старший байт разности счетчиков 7 --младший байт разности счетчиков + BuffTemp[ 7] =(Temp >> 0) & 0xff;//младший байт разности счетчиков 8 --старший байт разности счетчиков - Temp = Gyro.F_ras; - BuffTemp[ 8] = (Temp >> 8) & 0xff;//расщипление частота - BuffTemp[ 9] = (Temp >> 0) & 0xff;// + BuffTemp[38] =(Temp >> 24) & 0xff;; //39 приращение угла + BuffTemp[39] =(Temp >> 16) & 0xff;; //40 формат 22.10 + BuffTemp[40] =(Temp >> 8) & 0xff;; //41 1бит знак + BuffTemp[41] =(Temp >> 0) & 0xff;; //42 + + + + + + Temp = Gyro.F_ras; + BuffTemp[ 8] = (Temp >> 8) & 0xff;//расщипление частота 9 --частота расщипления + BuffTemp[ 9] = (Temp >> 0) & 0xff;// 10 --частота расщипления + + Temp = 0xffff;//HFO + BuffTemp[10] = (Temp >> 8) & 0xff;//выход регулятора гвч; 11 --выход регулятора ГВЧ + BuffTemp[11] = (Temp >> 0) & 0xff; //12 --выход регулятора ГВЧ - BuffTemp[10] = (Temp >> 8) & 0xff;//выход регулятора гвч; - BuffTemp[11] = (Temp >> 0) & 0xff; - - Temp = (Gyro.AD_Slow >> 16)- 0x7fff; - BuffTemp[12]=(Temp >> 8) & 0xff;//// - BuffTemp[13]=(Temp >> 0) & 0xff;//// + Temp =0xffff; + BuffTemp[12]=(Temp >> 8) & 0xff;//// HFO 13 --сигнал ошибки регулятора ГВЧ + BuffTemp[13]=(Temp >> 0) & 0xff;//// 14 --сигнал ошибки регулятора ГВЧ - Temp = (unsigned int)((7445000*16/(Gyro.Frq>>12))); - BuffTemp[14] = (Temp >> 8) & 0xff; - BuffTemp[15] = (Temp >> 0) & 0xff; - - BuffTemp[16] = 0xf; - BuffTemp[17] = 0x02; + Temp = (unsigned int)((7675000*16/(Gyro.Frq>>12))); + BuffTemp[14] = (Temp >> 8) & 0xff; //15 период вибропривода.(частота) T_Vibro + BuffTemp[15] = (Temp >> 0) & 0xff; //16 период вибропривода. + + Temp =0xff; + BuffTemp[16] = 0x00; //17 старший байт ФД регулятора периода вибропривода + BuffTemp[17] = 0x00; //18 - Temp = (unsigned int)(((7445000*16/200) *Gyro.AmpPer /(Gyro.Frq>>12))); - BuffTemp[18] = (Temp >> 8) & 0xff; - BuffTemp[19] = (Temp >> 0) & 0xff; - - BuffTemp[20] = 0x00; - BuffTemp[21] = 0x00; + Temp = Gyro.L_vibro>>1;//(unsigned int)(((7675000*16/200) * Gyro.AmpPer /(Gyro.Frq>>12))); + BuffTemp[18] = (Temp >> 8) & 0xff; //19 длительность импулься вибропривода(амплитуда) + BuffTemp[19] = (Temp >> 0) & 0xff; //20 + + + Temp = 0x0;//Gyro.L_vibro<<2; + BuffTemp[20] = (Temp >> 8) & 0xff;//регулятор датчика угла поворота //21 старший байт регулятора датчика угла поворота + BuffTemp[21] = (Temp >> 0) & 0xff; //22 + + Temp = (Spi.DAC_B - 0x7fff); + BuffTemp[22] = (Temp >> 8) & 0xff; //23 Выход регулятора рабочего периметра + BuffTemp[23] = (Temp >> 0) & 0xff; //24 - Temp = Spi.DAC_B - 0x7fff; - BuffTemp[22] = (Temp >> 8) & 0xff; - BuffTemp[23] = (Temp >> 0) & 0xff; - - Temp =0x0;// Gyro.PLC_Delta >> 16; - BuffTemp[24] = (Temp >> 8) & 0xff; - BuffTemp[25] = (Temp >> 0) & 0xff;// + Temp =0x0; //Gyro.AD_Slow >> 16; + BuffTemp[24] = (Temp >> 8) & 0xff;// //25 ФД СРП + BuffTemp[25] = (Temp >> 0) & 0xff;// //26 ФД СРП Temp = Gyro.AD_Slow >> 16; - BuffTemp[26] = (Temp >> 8) & 0xff; - BuffTemp[27] = (Temp >> 0) & 0xff; + BuffTemp[26] = (Temp >> 8) & 0xff; //27 ADC 0 + BuffTemp[27] = (Temp >> 0) & 0xff; //28 - Temp = Gyro.AD_Slow >> 16; - BuffTemp[28] = (Temp >> 8) & 0xff; - BuffTemp[29] = (Temp >> 0) & 0xff; - - Temp = Gyro.In1; - BuffTemp[30] = (Temp >> 8) & 0xff;//in1//2 - BuffTemp[31] = (Temp >> 0) & 0xff; - - Temp = Gyro.In2; - BuffTemp[32] = (Temp >> 8) & 0xff; - BuffTemp[33] = (Temp >> 0) & 0xff;//in2//3 + Temp = Gyro.AD_Slow >> 16; + BuffTemp[28] = (Temp >> 8) & 0xff; //29 ADC 1 + BuffTemp[29] = (Temp >> 0) & 0xff; //30 - Temp = Gyro.DeltaT; - BuffTemp[34] = (Temp >> 8) & 0xff;//дельта - BuffTemp[35] = (Temp >> 0) & 0xff; - // Temp = 000; - Temp = Gyro.Termo; - Temp = (0x7fff + Temp);///164 + Temp = (Gyro.In1 - 0x7fff); + BuffTemp[30] = (Temp >> 8) & 0xff;//in1//2 //31 ADC 2 + BuffTemp[31] = (Temp >> 0) & 0xff; //32 + + Temp = (Gyro.In2 - 0x7fff); + BuffTemp[32] = (Temp >> 8) & 0xff; //33 ADC 3 + BuffTemp[33] = (Temp >> 0) & 0xff;//in2//3 //34 + - BuffTemp[36] =(Temp >> 8) & 0xff;//температура - BuffTemp[37] =(Temp >> 0) & 0xff;//ADC6 sesnsor 5 + Temp = (Gyro.DeltaT); + BuffTemp[34] = (Temp >> 8) & 0xff;//дельта //35 ADC 4 + BuffTemp[35] = (Temp >> 0) & 0xff; //36 + // Temp = 000; + + Temp = Gyro.Termo; + BuffTemp[36] =(Temp >> 8) & 0xff;//температура //37 ADC 5 + BuffTemp[37] =(Temp >> 0) & 0xff;//ADC6 sesnsor 5 //38 - BuffTemp[38] =0x00; - BuffTemp[39] =0x00; - BuffTemp[40] =0x00; - BuffTemp[41] =0x00; Check(BuffTemp, 44); @@ -542,17 +569,18 @@ temp1 =((BuffTemp[4]<<8) | BuffTemp[5]); temp1=temp1&0xFFFF; - Gyro.Frq=(119120000/temp1)<<12; + Gyro.Frq=(122780000/temp1)<<12; temp2 =((BuffTemp[6]<<8) | BuffTemp[7]); temp2=temp2&0xFFFF; - Gyro.AmpPer=(((((Gyro.Frq>>12)*200)/16)*temp2)/7680000); + + Gyro.AmpPer=((((((Gyro.Frq>>12)*200)/16)*temp2)/7675000)/2); } void CMD_M_Control_D8()///установка\сброс регистров управления { unsigned int bit,Pa; - unsigned int SR,V,A,Bit_num; + unsigned int SR,V,Bit_num; SR=0; V=0; A=0; @@ -561,7 +589,7 @@ BuffTemp[0] = Gyro.SOC_Out; //DD BuffTemp[1] = Gyro.My_Addres; //00 BuffTemp[2] = Gyro.CMD_In; //D8 - + // Gyro.CMD_In = BuffTemp[2]; Pa = BuffTemp[3]; SR = Pa >> 0x7; V = Pa >> 0x5; @@ -569,34 +597,82 @@ A = Pa >> 0x4; A = A & 0x1; Bit_num = Pa & 0xf; + if(A) + { + if(SR) + { + switch (Bit_num) + { + case 0x00: Gyro.RgConB &= ~ 1<<0; break; + case 0x01: Gyro.RgConB &= ~ 1<<1; break; + case 0x02: Gyro.RgConB &= ~ 1<<2; break; + } + } + else + { + + switch (Bit_num) + { + + case 0x00: Gyro.RgConB = 0xfffe; break; + case 0x01: Gyro.RgConB |= 1<<1; break; + case 0x02: Gyro.RgConB |= 1<<2; break; + } + } + } + else + { + if(SR) + { + switch (Bit_num) + { + case 0x06: FrqON break; + case 0x05: AVibON break; + case 0x01: HFOON break; + case 0x03: PlcON break; + } + } + else + { + switch (Bit_num) + { + case 0x06: FrqOFF break; + case 0x05: AVibOFF break; + case 0x01: HFOOFF break; + case 0x03: PlcOFF break; + } + } + } + +} +void D8_Answer() +{ - if(SR) + + + BuffTemp[0] = Gyro.SOC_Out; //DD + + BuffTemp[1] = Gyro.My_Addres; //00 + + BuffTemp[2] = 0xD8; //D8 + + BuffTemp[3] =A<<4; + + if(A) + { + BuffTemp[ 4] =(Gyro.RgConB >> 8) & 0xff; + BuffTemp[ 5] =(Gyro.RgConB >> 0) & 0xff; + + } + else { - switch (Bit_num){ - case 0x06: FrqON break; - case 0x05: AVibON break; - case 0x01: HFOON break; - case 0x03: PlcON break; - } - } - else{ - switch (Bit_num){ - case 0x06: FrqOFF break; - case 0x05: AVibOFF break; - case 0x01: HFOOFF break; - case 0x03: PlcOFF break; - } - } - BuffTemp[0] = Gyro.SOC_Out; //DD - BuffTemp[1] = Gyro.My_Addres; //00 - BuffTemp[2] = Gyro.CMD_In; //D8 - BuffTemp[3] = A<<4; - BuffTemp[4] = 0x0; - BuffTemp[5] = 0x0; + BuffTemp[ 4] =(Gyro.RgConA >> 8) & 0xff; + BuffTemp[ 5] =(Gyro.RgConA >> 0) & 0xff; + } Check(BuffTemp, CRC_N); WriteConN (BuffTemp,CRC_N); + } - void CMD_M_Control_D9()///чтение регистров управления { int bit,NReg; @@ -616,12 +692,24 @@ WriteConN (BuffTemp,CRC_N); } // (номер (код) ЦАПа 0...3, старший байт требуемого ЦАПа, младший байт треб ЦАПа) +void CMD_M_Stymul_Answer() +{ SA=0; + BuffTemp[ 0] =0xdd; + BuffTemp[ 1] = 0x00; + BuffTemp[ 2] = 0x0A; + BuffTemp[ 3] =0; + Check(BuffTemp, CRC_N); + WriteConN (BuffTemp,CRC_N); +} void CMD_M_Stymul() { int temp; int HFO; + int b4; temp=BuffTemp[3]; - Consol = temp&0x3; + b4=temp; + Consol = temp>>7; + if(Consol)SA=1; HFO = temp&0x3;// // (номер (код) ЦАПа 0...3, HFO - 3dac, PLC - 0DAC temp =((BuffTemp[4]<<8) | BuffTemp[5]); // temp=0; @@ -632,13 +720,15 @@ Spi.DAC_A=(unsigned int)temp; } else{ - DACF =(temp*K_DAC)+deltaDAC; + DACF =/*(*/temp/*K_DAC)+deltaDAC;*/; Spi.DAC_B =(unsigned int)(DACF) /*(unsigned int)(temp*K_DAC+deltaDAC)*/; // K_DAC); } + } void GLDStartDischarg(void) -{ +{ TimeDischarg=0; + Try=0; switch(Gyro.My_Addres) {//смещение поджига и подсветки в зависимости от адреса ГЛД case 0: @@ -663,6 +753,7 @@ void Gph_W() { //Gyro.flagGph_W=3; + Out_G_photo(BuffTemp[4],BuffTemp[5]); } @@ -711,7 +802,7 @@ case 0x0F: lengf=6; CRC_N=8; break; //Delta_Bins case 0xA0: lengf=6; CRC_N=8; break; //Delta_PS case 0xDD: lengf=6; CRC_N=44; break; //m_rate - case 0x0A: lengf=8; break; //m_stymul + case 0x0A: lengf=8; CRC_N=6; break; //m_stymul case 0xE9: lengf=6; CRC_N=8; break; //DeviceMode case 0xE8: lengf=6; CRC_N=8; break; //DeviceMode case 0xA5: lengf=6; CRC_N=8; break; //DeviceMode @@ -775,14 +866,18 @@ else if(CountBuFFIn > (N-1)) { ReadCon1(BuffTemp); + + if(SA)CMD_M_Stymul_Answer(); + // if(d8_anser)D8_Answer(); + switch(Gyro.CMD_In) { case 0x99: Gyro.ModeOut=0; CMD_Maintenance(); break; - case 0xD8: CMD_M_Control_D8(); break; + case 0xD8: CMD_M_Control_D8(); D8_Answer(); break; case 0xE9: CMD_M_Param_R(); break; //чтение параметров case 0xE8: CMD_M_Param_W(); break; //запись параметра case 0xDA: GLDStartDischarg(); break; case 0xD9: CMD_M_Control_D9(); break; - case 0x0A: CMD_M_Stymul(); break; + case 0x0A: CMD_M_Stymul(); break; case 0xDD: TempParam=(BuffTemp[3]) & 0x9f; //Rate switch(TempParam) { case Rate1 : CMD_Rate(); break; @@ -823,14 +918,15 @@ void TechLog(void) { - if (ReadCon (Time)) { + unsigned int temp=0; + if (ReadCon (Time)) + { ///////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////Выбор FlashMod/////////////////////////// //////////////////////////////////////////////////////////////// if (Time[0] == 'B') Gyro.FlashMod=1; - if (Time[0] == 'W') {Gyro.FlashMod=2;} if (Time[0] == 'R') {Gyro.FlashMod=3;} if (Time[0] == 'E') {Gyro.FlashMod=4;} /////////////////////////////////////////////////////////////// @@ -846,65 +942,38 @@ /* sprintf(Time,"%d\r\n", Spi.DAC_B); WriteCon(Time);*/ } - if (Time[0] == 'l') { // выдача технологическая + if (Time[0] == 'l') + { // выдача технологическая Gyro.My_Addres = GyroP.Str.My_Addres; // Gyro.My_Addres = 0; - Gyro.GLD_Serial = GyroP.Str.GLD_Serial; - Gyro.Firmware_Version = GyroP.Str.Firmware_Version; - - Gyro.FrqHZ = GyroP.Str.FrqHZ; + Gyro.GLD_Serial = GyroP.Str.GLD_Serial; + Gyro.FrqHZ = GyroP.Str.FrqHZ; Gyro.Frq = GyroP.Str.FrqHZ<<16; Gyro.FrqHZmin = GyroP.Str.FrqHZmin<<16; Gyro.FrqHZmax = GyroP.Str.FrqHZmax<<16; Gyro.FrqChengSpeed = GyroP.Str.FrqChengSpeed; - + Gyro.PLC_Gain = GyroP.Str.PLC_Gain; + Gyro.PLC_Phase = GyroP.Str.PLC_Phase; Gyro.ModAmp = GyroP.Str.ModAmp; - + Gyro.FrqPhase = GyroP.Str.FrqPhase; Gyro.AmpPer = GyroP.Str.AmpPer; Gyro.Amp = GyroP.Str.AmpPer<<16; - Gyro.AmpSpeed = GyroP.Str.AmpSpeed; + Gyro.AmpSpeed = GyroP.Str.AmpSpeed; Gyro.AmpPerDel = GyroP.Str.AmpPerDel; - Gyro.AmpTarget = GyroP.Str.AmpTarget; + temp=((GyroP.Str.VB_Fdf_Hi<<16) | GyroP.Str.VB_Fdf_Lo); + temp=temp/18.2; + Gyro.AmpTarget=(unsigned int)(temp); Gyro.AmpPerMin = GyroP.Str.AmpPerMin; Gyro.AmpPerMax = GyroP.Str.AmpPerMax; Gyro.AmpMin = GyroP.Str.AmpMin; Gyro.AmpTD = GyroP.Str.AmpTD; - - Gyro.TermoNKU = GyroP.Str.TermoNKU<<2; - - Spi.DAC_A = GyroP.Str.DAC_A<<2; - Spi.DAC_B = GyroP.Str.DAC_B<<2; - + Spi.DAC_A = GyroP.Str.DAC_current_Work; Gyro.Gain_Sin = GyroP.Str.Gain_Sin; Gyro.Gain_Cos = GyroP.Str.Gain_Cos; Out_G_photo(Gyro.Gain_Sin, Gyro.Gain_Cos); - for(int i=0;i<26;i++) - { - sprintf(Time," %d=%d\r\n",i, GyroP.Array[i]); - WriteCon(Time); } - } - if (Time[0] == 'w') TypeMod=2; - if (Time[0] == 'a') TypeMod=1; - if (Time[0] == 's') TypeMod=0; - //////////////////////////////////////////////////////////////////////////////// - /*Запись лога регулировки периметра*/ - if (Time[0] == 'g') Gyro.LogPLC=1; if(OLDDAC) Spi.DAC_B=OLDDAC; //включит передачу - if (Time[0] == 'h') {Gyro.LogPLC=2; Spi.DAC_B=19000; Gyro.PLC_Error2Mode = 1400; OLDDAC=Spi.DAC_B; Spi.DAC_B=19000;} //десперсионка - if (Time[0] == 'j') Gyro.LogPLC=0; if(OLDDAC) Spi.DAC_B=OLDDAC; //регулировка без выдачиж - - if (Time[0] == 'k') Gyro.LogPLC = 0; //Отключить передачу - - ////////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////выдача частоты в терминал длля записи лога/////////////////////////////////////////////////////////////////////////////////////////////////////// - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - if (Gyro.PLC_Error2Mode) { // выдача технологическая - // sprintf(Time,"\r\nPLC_Error2Mode"); - WriteCon(Time); - } - } + + + } }