Dmitry Kovalev
/
LGfiltr
forkd
Fork of LGstaandart by
Diff: Command.c
- Revision:
- 222:7de7b3bf3a1d
- Parent:
- 221:53b256368ca1
- Child:
- 224:598aec95415f
--- a/Command.c Mon Oct 23 05:31:10 2017 +0000 +++ b/Command.c Mon Nov 20 13:06:31 2017 +0000 @@ -121,6 +121,7 @@ NVIC_EnableIRQ(EINT3_IRQn); } ///////////////end flah and boot/////////// + void M_RateA(void) { switch(Gyro.ModeOut) @@ -135,6 +136,7 @@ case 8: if(Gyro.Rate3_Event ) CMD_Rate3(); break; case 9: if(Gyro.Reper_Event ){ CMD_Rate2(); Gyro.ModeOut=0;} break; case 10: if(Gyro.EvenRate7 ){ CMD_Rate7(); Gyro.EvenRate7=0;} break; + case 11: if(Gyro.EvenRate5K ){ M_Rate5K(); Gyro.EvenRate5K--;} break; } } @@ -145,6 +147,12 @@ BuffTemp[q]=0; } } + + + + + + void CMD_Rate7(void) { //Buff_Restored_Mod[CountV31] BuffADC_znak[q] @@ -155,41 +163,40 @@ int Temp; int Temp1; float Temp2; - int Shift = -11463; - static unsigned int t=16; + static unsigned int t=0; BuffTemp[0] = Gyro.SOC_Out; BuffTemp[1] = Gyro.My_Addres; - iRate_7 =(BuffADC_10v_F[(t)&0x3f])&0xffff; + iRate_7 = Buff_OUT[(t)] ; BuffTemp[ 2] =(iRate_7 >> 8) & 0xff;//младший байт разности счетчиков BuffTemp[ 3] =(iRate_7 >> 0) & 0xff;//младший байт разности счетчиков - iRate_7 =(BuffADC_10v_F[(t - 2)&0x3f])&0xffff; + iRate_7 = Buff_OUT[(t)+8] ; BuffTemp[ 4] =(iRate_7 >> 8) & 0xff;//младший байт разности счетчиков BuffTemp[ 5] =(iRate_7 >> 0) & 0xff;//младший байт разности счетчиков; - iRate_7 =(BuffADC_10v_F[((t - 4))&0x3f])&0xffff; + iRate_7 = Buff_OUT[(t)+16]; BuffTemp[ 6] =(iRate_7 >> 8) & 0xff;//младший байт разности счетчиков BuffTemp[ 7] =(iRate_7 >> 0) & 0xff;//младший байт разности счетчиков; - iRate_7 =(BuffADC_10v_F[((t - 6))&0x3f])&0xffff; + iRate_7 = Buff_OUT[(t)+24]; BuffTemp[ 8] =(iRate_7 >> 8) & 0xff;//младший байт разности счетчиков BuffTemp[ 9] =(iRate_7 >> 0) & 0xff;//младший байт разности счетчиков; - iRate_7 =(BuffADC_10v_F[((t - 8))&0x3f])&0xffff; + iRate_7 = Buff_OUT[(t)+32] ; BuffTemp[10] =(iRate_7 >> 8) & 0xff;//младший байт разности счетчиков BuffTemp[11] =(iRate_7 >> 0) & 0xff;//младший байт разности счетчиков; - iRate_7 =(BuffADC_10v[((t - 10))&0x3f])&0xffff; + iRate_7 = Buff_OUT[(t)+40] ; BuffTemp[12] =(iRate_7 >> 8) & 0xff;//младший байт разности счетчиков BuffTemp[13] =(iRate_7 >> 0) & 0xff;//младший байт разности счетчиков; - iRate_7 =(BuffADC_10v_F[((t - 12))&0x3f])&0xffff; + iRate_7 =Buff_OUT[(t)+ 48]; BuffTemp[14] =(iRate_7 >> 8) & 0xff;//младший байт разности счетчиков BuffTemp[15] =(iRate_7 >> 0) & 0xff;//младший байт разности счетчиков; - - iRate_7 = (BuffADC_10v_F[((t - 14))&0x3f])&0xffff; + + iRate_7 = Buff_OUT[(t)+56] ; BuffTemp[16] =(iRate_7 >> 8) & 0xff;//младший байт разности счетчиков BuffTemp[17] =(iRate_7 >> 0) & 0xff;//младший байт разности счетчиков; @@ -197,35 +204,35 @@ - iRate_7 = ModArraySin[(t)+ (Gyro.PLC_Phase)] - 50; + iRate_7 = ModArraySin[(t + Gyro.PLC_Phase)&0x3f] - 50; BuffTemp[ 18] = (iRate_7 >> 8) & 0xff;//младший байт разности счетчиков BuffTemp[ 19] = (iRate_7 >> 0) & 0xff;//младший байт разности счетчиков; - iRate_7 = ModArraySin[(t - 2+ (Gyro.PLC_Phase))&0x3f] - 50; + iRate_7 = ModArraySin[(t + 8 + (Gyro.PLC_Phase))&0x3f] - 50; BuffTemp[ 20] = (iRate_7 >> 8) & 0xff;//младший байт разности счетчиков BuffTemp[ 21] = (iRate_7 >> 0) & 0xff;//младший байт разности счетчиков; - iRate_7 = ModArraySin[(t - 4+ (Gyro.PLC_Phase))&0x3f] - 50; + iRate_7 = ModArraySin[(t + 16 + (Gyro.PLC_Phase))&0x3f] - 50; BuffTemp[ 22] = (iRate_7 >> 8) & 0xff;//младший байт разности счетчиков BuffTemp[ 23] = (iRate_7 >> 0) & 0xff;//младший байт разности счетчиков; - iRate_7 = ModArraySin[(t - 6+ (Gyro.PLC_Phase))&0x3f] - 50; + iRate_7 = ModArraySin[(t + 24 + (Gyro.PLC_Phase))&0x3f] - 50; BuffTemp[ 24] = (iRate_7 >> 8) & 0xff;//младший байт разности счетчиков BuffTemp[ 25] = (iRate_7 >> 0) & 0xff;//младший байт разности счетчиков; - iRate_7 = ModArraySin[(t - 8+ (Gyro.PLC_Phase))&0x3f] - 50; + iRate_7 = ModArraySin[(t + 32 + (Gyro.PLC_Phase))&0x3f] - 50; BuffTemp[ 26] = (iRate_7 >> 8) & 0xff;//младший байт разности счетчиков BuffTemp[ 27] = (iRate_7 >> 0) & 0xff;//младший байт разности счетчиков; - iRate_7 = ModArraySin[(t - 10+ (Gyro.PLC_Phase))&0x3f] - 50; + iRate_7 = ModArraySin[(t + 40 + (Gyro.PLC_Phase))&0x3f] - 50; BuffTemp[ 28] = (iRate_7 >> 8) & 0xff;//младший байт разности счетчиков BuffTemp[ 29] = (iRate_7 >> 0) & 0xff;//младший байт разности счетчиков; - iRate_7 = ModArraySin[(t - 12+ (Gyro.PLC_Phase))&0x3f] - 50; + iRate_7 = ModArraySin[(t + 48 + (Gyro.PLC_Phase))&0x3f] - 50; BuffTemp[ 30] = (iRate_7 >> 8) & 0xff;//младший байт разности счетчиков BuffTemp[ 31] = (iRate_7 >> 0) & 0xff;//младший байт разности счетчиков; - iRate_7 = ModArraySin[(t - 14+ (Gyro.PLC_Phase))&0x3f] - 50; + iRate_7 = ModArraySin[(t + 56+ (Gyro.PLC_Phase))&0x3f] - 50; BuffTemp[ 32] = (iRate_7 >> 8) & 0xff;//младший байт разности счетчиков BuffTemp[ 33] = (iRate_7 >> 0) & 0xff;//младший байт разности счетчиков; @@ -258,8 +265,8 @@ Check(BuffTemp, 42); WriteConN (BuffTemp,42); - /* if(t<31)t+=8; - else t =15;*/ + /* if(t<60)t+=32; + else t =0;*/ } @@ -305,7 +312,7 @@ Param |= BuffTemp[5]; GyroP.Array[NP] = Param; - flash=GyroP.Array[5]; + flash=GyroP.Array[115]; switch(NP) { @@ -317,6 +324,9 @@ case 4: if(Gyro.LG_Type) Gyro.HFO_Min=((int)(GyroP.Str.DAC_current_Start*0.67)-2000); break; + case 5: Gyro.TimeToJump = GyroP.Str.TimeToJump; break; + case 6: Gyro.JumpDelta = GyroP.Str.JumpDelta; 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; @@ -380,7 +390,7 @@ Check(BuffTemp, 6); WriteConN (BuffTemp,6); - if(flash){GyroP.Array[5]=0; flash=0; WriteFlash(); ReadFlash ();} + if(flash){GyroP.Array[115]=0; flash=0; WriteFlash(); ReadFlash ();} } @@ -629,6 +639,45 @@ } + + void M_Rate5K(void) + { + + unsigned int Temp; + BuffTemp[ 0] = Gyro.SOC_Out; //1 --старт данных + BuffTemp[ 1] = Gyro.My_Addres; //2 --адрес отвечающего устройствва + + //Temp=Gyro.CuruAngle; //приводим к форме вывода + BuffTemp[ 3] =(Gyro.CuruAngle >> 8) & 0xff;//старший байт разности счетчиков 7 --младший байт разности счетчиков + BuffTemp[ 2] =(Gyro.CuruAngle >> 0) & 0xff;//младший байт разности счетчиков 8 --старший байт разности счетчиков + Gyro.CuruAngle=0; + + + // Temp =(Spi.DAC_B-0x7fff); + BuffTemp[5] = (Spi.DAC_B >> 8) & 0xff; //23 Выход регулятора рабочего периметра + BuffTemp[4] = (Spi.DAC_B >> 0) & 0xff; + + /* switch(Gyro.LG_Type) + { + case 1: Temp =(int)(((float)(Spi.DAC_A)/0.6667)- 0xefff); break; + + case 0: // Temp2 = (Spi.DAC_A*1.538) - 0xd80f; + Temp =(int)(((float)(Spi.DAC_A)/0.64)- 56000); break; + } + */ + Temp=Spi.DAC_A; + BuffTemp[7] =(Temp >> 8) & 0xff;//выход регулятора гвч; 11 --выход регулятора ГВЧ + BuffTemp[6] =(Temp >> 0) & 0xff; + + /* sprintf((Time),"%d %d %d\r\n",Gyro.CuruAngle,(Spi.DAC_B-0x7fff),Temp); + WriteCon(Time);*/ + + //Check(BuffTemp, 7); + WriteConN (BuffTemp,8); + Gyro.EvenRate5K++; + } + + void CMD_Rate(void) { Gyro.Rate1_Event=0; @@ -672,8 +721,10 @@ case 1: Temp1 =(int)(((float)(Spi.DAC_A)/0.6667)- 0xefff); break; case 0: // Temp2 = (Spi.DAC_A*1.538) - 0xd80f; - Temp1 =(int)(((float)(Spi.DAC_A)/0.64)- 56000); break; + Temp1 =(0xffff-Spi.DAC_A); break;//Temp1 =(int)(((float)(Spi.DAC_A)/0.64)- 56000); break; } + sprintf((Time),"%d %d \r\n",Spi.DAC_A,Temp1); + WriteCon(Time); //Temp1=Gyro.DacIn/*-0x7fff*/; BuffTemp[10] = (Temp1 >> 8) & 0xff;//выход регулятора гвч; 11 --выход регулятора ГВЧ BuffTemp[11] = (Temp1 >> 0) & 0xff; //12 --выход регулятора ГВЧ @@ -681,7 +732,7 @@ if(Gyro.LG_Type) Temp =(int)(tempDeltaRegul); - else Temp =(unsigned int)((0x7fff-Spi.ADC5)*0.79)<<1; + else Temp =(unsigned int)(0xffff-Spi.ADC5) ; //Temp =(unsigned int)((0x7fff-Spi.ADC5)*0.79)<<1; BuffTemp[12]=(Temp >> 8) & 0xff;//// HFO 13 --сигнал ошибки регулятора ГВЧ BuffTemp[13]=(Temp >> 0) & 0xff;//// 14 --сигнал ошибки регулятора ГВЧ @@ -803,7 +854,7 @@ { Gyro.DacIn=temp; if(Gyro.LG_Type==1) Spi.DAC_A = ((unsigned int)((Gyro.DacIn+0x7011)*0.6667)); - else Spi.DAC_A = ((unsigned int)((Gyro.DacIn+23200)*0.64)); + else Spi.DAC_A = (unsigned int)(0xffff-Gyro.DacIn); //Spi.DAC_A = ((unsigned int)((Gyro.DacIn+23200)*0.64)); /*Temp2 = (Spi.DAC_A*1.538) - 0xd80f; Temp1= (int)Temp2; */ @@ -882,6 +933,7 @@ case 0x05: AVibOFF break; case 0x01: HFOOFF break; case 0x03: PlcOFF break; + case 0x02: Gyro.RgConA &= ~(1<<2); break; } break; case 1: @@ -902,10 +954,11 @@ case 0: switch (Bit_num) { - case 0x06: FrqON break; - case 0x05: AVibON break; - case 0x01: HFOON break; - case 0x03: PlcON break; + case 0x06: FrqON break; + case 0x05: AVibON break; + case 0x01: HFOON break; + case 0x03: PlcON break; + case 0x02: Gyro.RgConA |= (1<<2); break; } break; case 1: @@ -1147,6 +1200,11 @@ case PRate3 : Gyro.ModeOut=8; break; case Rate7 : CMD_Rate7(); break; case PRate7 : Gyro.ModeOut=10; break; + case Rate5K : M_Rate5K(); break; + case PRate5K: + if(Gyro.ModeOut){} + else Gyro.ModeOut=11; + break; } break; //DropDelay(); выставка задержки для мультидропа сбрасывается в команде CMD_Maintenance() на () микросекунд; @@ -1184,7 +1242,7 @@ void TechLog(void) { unsigned int temp=0; - if (ReadCon (Time)) + /*if (ReadCon (Time)) { int a=0; ///////////////////////////////////////////////////////////////// @@ -1202,16 +1260,16 @@ - /* if (Time[0] == 'f') { // выдача технологическая + if (Time[0] == 'f') { // выдача технологическая Gyro.ModAmp += 1; sprintf((Time),"%d \r\n", Gyro.ModAmp); WriteCon(Time); - }*/ - /* if (Time[0] == 'd') { // выдача технологическая + } + if (Time[0] == 'd') { // выдача технологическая Gyro.ModAmp -= 1; sprintf((Time),"%d \r\n", Gyro.ModAmp); WriteCon(Time); - }*/ + } if (Time[0] == 'V') { // выдача технологическая F_vib += 1; LPC_MCPWM->LIM1 = F_vib; @@ -1286,9 +1344,10 @@ { // выдача технологическая for(int q=0; q<64; q++) { - sprintf((Time),"%d \r\n", Buff_OUT[q]); + sprintf((Time),"%d ", Buff_OUT[q]); WriteCon(Time); - + sprintf((Time),"%d \r\n",ModArraySin[(q+Gyro.PLC_Phase)&0x3f]); + WriteCon(Time); } Spi.DAC_B+=500; @@ -1365,7 +1424,7 @@ } - } + }*/ }