Dmitry Kovalev
/
LG2
fork
Fork of LG by
Diff: Command.c
- Revision:
- 193:a0fe8bfc97e4
- Parent:
- 192:d32c8cf7bcd9
- Child:
- 194:8f3cb37a5541
diff -r d32c8cf7bcd9 -r a0fe8bfc97e4 Command.c --- a/Command.c Thu Sep 01 08:23:30 2016 +0000 +++ b/Command.c Thu Sep 15 11:09:00 2016 +0000 @@ -72,13 +72,18 @@ } ///////////////end flah and boot/////////// void M_RateA(void) - { + { + /*Gyro.Delta500_Event=0; + Gyro.DeltaEXT_Event=0;*/ switch(Gyro.ModeOut) { - case 1: if(Gyro.Rate1_Event == 1) CMD_Rate(); break; - case 2: if(Gyro.Rate2_Event == 1) CMD_Rate2(); break; - case 3: if(Gyro.Delta500_Event == 1) CMD_Delta_500Hz(); break; - case 4: if(Gyro.EXT_Latch == 1) CMD_Delta_Ext(); break; - } + case 1: if(Gyro.Rate1_Event ) CMD_Rate(); break; + case 2: if(Gyro.Reper_Event ) CMD_Rate2(); break; //Gyro.Reper_Event выставляется при переходе синуса из - в + + case 3: if(Gyro.Delta500_Event ) CMD_Delta_PS(); break; + case 4: if(Gyro.EXT_Latch ) CMD_Delta_PS(); break; + case 5: if(Gyro.Delta_Bins_Event500 ) CMD_Delta_Bins(); break; + case 6: if(Gyro.B_Delta_EventEXT ) CMD_B_Delta(); break; + case 7: if(Gyro.B_Delta_Event500 ) CMD_B_Delta(); break; + } } void CMD_M_Param_R(void) @@ -120,7 +125,7 @@ } void CMD_Maintenance(void) { - + Gyro.DropDelayGLD = DropDelayGLD_0;//задержка на выдачу 45 микросекунд для любого адреса ГЛД BuffTemp[0] = Gyro.SOC_Out; BuffTemp[1] = Gyro.My_Addres; @@ -132,16 +137,52 @@ WriteConN (BuffTemp,8); } +void CMD_B_Delta(void) +{ + Gyro.B_Delta_Event500=0; + Gyro.B_Delta_EventEXT=0; + unsigned int Temp; + BuffTemp[ 0] = Gyro.SOC_Out; + BuffTemp[ 1] = Gyro.My_Addres; + + Temp = Gyro.CuruAngle; + Gyro.CuruAngle = 0; + BuffTemp[ 2] =(Temp >> 16) & 0xff;//младший байт разности счетчиков + BuffTemp[ 3] =(Temp >> 8) & 0xff;//младший байт разности счетчиков + BuffTemp[ 4] =(Temp >> 0) & 0xff;//младший байт разности счетчиков + BuffTemp[ 5] = 0x00000000; + Check(BuffTemp, 8); + WriteConN (BuffTemp,8); +} -void CMD_Delta_500Hz(void) +void CMD_Delta_Bins(void) +{ + Gyro.Delta_Bins_Event500=0; + unsigned int Temp; + BuffTemp[ 0] = Gyro.SOC_Out; + BuffTemp[ 1] = Gyro.My_Addres; + + Temp = Gyro.CuruAngle; + Gyro.CuruAngle = 0; + + BuffTemp[ 2] =(Temp >> 24) & 0xff;//старший байт разности счетчиков + BuffTemp[ 3] =(Temp >> 16) & 0xff;//младший байт разности счетчиков + BuffTemp[ 4] =(Temp >> 8) & 0xff;//младший байт разности счетчиков + BuffTemp[ 5] =(Temp >> 0) & 0xff;//младший байт разности счетчиков + BuffTemp[ 6] = 0x0000; + Check(BuffTemp, 9); + WriteConN (BuffTemp,9); +} +void CMD_Delta_PS(void) { - Gyro.Delta500_Event=0; + Gyro.EXT_Latch=0; + unsigned int Temp; BuffTemp[ 0] = Gyro.SOC_Out; BuffTemp[ 1] = Gyro.My_Addres; - Temp = Gyro.CuruAngle>>5; + Temp = Gyro.CuruAngle; Gyro.CuruAngle = 0; BuffTemp[ 2] =(Temp >> 8) & 0xff;//старший байт разности счетчиков @@ -295,160 +336,10 @@ else CountParam++; } -void CMD_Delta_Ext(void) -{ - unsigned int Temp; - Gyro.EXT_Latch=0; - BuffTemp[ 0] = Gyro.SOC_Out; - BuffTemp[ 1] = Gyro.My_Addres; - Temp = Gyro.CuruAngle>>5; - Gyro.CuruAngle = 0; - - BuffTemp[ 2] =(Temp >> 8) & 0xff;//старший байт разности счетчиков - BuffTemp[ 3] =(Temp >> 0) & 0xff;//младший байт разности счетчиков - - BuffTemp[ 4] = CountParam; - switch(CountParam) { - //F_ras - case 0: - Temp = Gyro.F_ras; - BuffTemp[5] = (Temp >> 8) & 0xff; - break; - - case 1: - BuffTemp[5] = (Temp >> 0) & 0xff; - break; - - - - //HFO - case 2: - Temp = 0;//HFO - BuffTemp[5] = (Temp >> 8) & 0xff; - break; - - case 3: - Temp = 0;//HFO - BuffTemp[5] = (Temp >> 0) & 0xff; - break; - - - - //T_Vibro - case 4: - Temp = (unsigned int)((7680000*16/(Gyro.Frq>>12))); - BuffTemp[5] = (Temp >> 8) & 0xff; - break; - - case 5: - BuffTemp[5] = (Temp >> 0) & 0xff; - break; - - - - //L_Vibro - case 6: - Temp = (unsigned int)(((7680000*16/200) *Gyro.AmpPer /(Gyro.Frq>>12))); - BuffTemp[5] = (Temp >> 8) & 0xff; - break; - - case 7: - BuffTemp[5] = (Temp >> 0) & 0xff; - break; - - - - //Напряжение на регуляторе периметра - case 8: - Temp = Spi.DAC_B /*- 0x7fff*/; - BuffTemp[5] = (Temp >> 8) & 0xff; - break; - - case 9: - BuffTemp[5] = (Temp >> 0) & 0xff; - break; - - - - //темпкратурный канал 0 - case 10: - Temp = 100; - BuffTemp[5] = (Temp >> 8) & 0xff; - break; - - case 11: - BuffTemp[5] = (Temp >> 0) & 0xff; - break; - - - - //темпкратурный канал 1 - case 12: - Temp = Gyro.AD_Slow >> 16; - BuffTemp[5] = (Temp >> 8) & 0xff; - break; - - case 13: - BuffTemp[5] = (Temp >> 0) & 0xff; - break; - - - - //ток 1 - case 14: - Temp = Gyro.In1; - BuffTemp[5] = (Temp >> 8) & 0xff;//in1//2 - break; - - case 15: - BuffTemp[5] = (Temp >> 0) & 0xff; - break; - - - - //ток 2 - case 16: - Temp = Gyro.In2; - BuffTemp[5] = (Temp >> 8) & 0xff; - break; - - case 17: - BuffTemp[5] = (Temp >> 0) & 0xff;//in2//3 - break; - - - - //разностный температурный канал Delta Temp - case 18: - Temp = Gyro.DeltaT; - BuffTemp[5] = (Temp >> 8) & 0xff;//дельта - break; - - case 19: - BuffTemp[5] = (Temp >> 0) & 0xff; - break; - - - - //температурный канал 5 - case 20: - Temp = Gyro.Termo;//0xa4=164 - BuffTemp[5] =(Temp >> 8) & 0xff;//температура - break; - - case 21: - BuffTemp[5] =(Temp >> 0) & 0xff;//ADC6 sesnsor 5 - break; - } - Check(BuffTemp, CRC_N); - WriteConN (BuffTemp,CRC_N); - CountParam++; - if(CountParam>21)CountParam=0;//зацикливания буфера от 0 до 21 -} void CMD_Rate2(void) { - Gyro.Rate2_Event=0; + Gyro.Reper_Event=0; BuffTemp[ 0] = Gyro.SOC_Out; BuffTemp[ 1] = Gyro.My_Addres; @@ -484,16 +375,15 @@ Temp=Gyro.CuruAngle; //(0,28/с) - // 8 байт + 4 байта от прошлых измерений - /* Gyro.CuruAngle = Gyro.CuruAngle + OldCuruAngle; //(72 град/с) - OldCuruAngle=Gyro.CuruAngle & 0xff; //сохраняем 4 байта для след измирений - Temp=Gyro.CuruAngle>>8; */ //приводим к форме вывода - + //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; */ //приводим к форме вывода +OldCuruAngle=Gyro.CuruAngle & 0x1f; //сохраняем 5 бит для след измирений + Temp=Gyro.CuruAngle>>5; */ //приводим к форме вывода Gyro.CuruAngle = 0; - BuffTemp[ 6] =(Temp >> 8) & 0xff;//старший байт разности счетчиков BuffTemp[ 7] =(Temp >> 0) & 0xff;//младший байт разности счетчиков @@ -759,18 +649,31 @@ unsigned int lengf; lengf = 1; switch(Gyro.CMD_In) { - case 0x99://Gyrotainance - + case 0x99://Mintainance lengf=6; CRC_N=8; break; + case 0xB0://Delta_Bins + lengf=6; + CRC_N=9; + break; + + case 0xA0://Delta_PS + lengf=6; + CRC_N=8; + break; + + case 0xDD://m_rate + lengf=6; + CRC_N=44; + break; + case 0x0A: //m_stymul lengf=8; break; case 0xE9://DeviceMode - lengf=6; CRC_N=8; break; @@ -785,29 +688,11 @@ lengf=6; CRC_N=8; break; - - case 0xDD://m_rate - lengf=6; - CRC_N=44; - break; - - - case 0xA0://Delta_PS - lengf=6; - CRC_N=8; - break; - - - case 0xB0://DeviceMode - - lengf=6; - CRC_N=8; - break; - + case 0xD8://m_control lengf=6; - CRC_N=8; + CRC_N=6; break; case 0xD9://m_control @@ -884,21 +769,12 @@ { ReadCon1(BuffTemp); switch(Gyro.CMD_In) { - Rate_Flag=0; + case 0x99: Gyro.ModeOut=0; CMD_Maintenance(); break; - - case 0xA0: - DropDelay();//выставка задержки для мультидропа сбрасывается в команде CMD_Maintenance() на 45 микросекунд; - TempParam=(BuffTemp[3]) & 0x90; - if (TempParam==Delta_500) {CMD_Delta_500Hz();} - else if (TempParam==Delta_EXT) {CMD_Delta_Ext(); } - else if (TempParam==PDelta_500) { Gyro.ModeOut=3; Gyro.Delta500_Event=0; /*WriteCon("Delta500");*/ } - else if (TempParam==PDelta_EXT) { Gyro.ModeOut=4; Gyro.DeltaEXT_Event=0;/* WriteCon("deltaEXT"); */} - break; - + case 0xD8: CMD_M_Control_D8(); break; @@ -931,7 +807,7 @@ Gyro.BackLight = StartBackLight << ShiftStart3; break; } - break; + break; case 0xD9: CMD_M_Control_D9(); @@ -941,14 +817,44 @@ CMD_M_Stymul(); break; - case 0xDD: - - TempParam=(BuffTemp[3]) & 0x9f; - if (TempParam == Rate1) { CMD_Rate(); WriteCon("Rate11");} - else if (TempParam == Rate2) { CMD_Rate2(); WriteCon("Rate21");} - else if (TempParam == PRate1) { Gyro.ModeOut=1; Gyro.Rate1_Event=0; WriteCon("Rate12");} - else if (TempParam == PRate2) { Gyro.ModeOut=2; Gyro.Rate2_Event=0; WriteCon("Rate22");} + case 0xDD: //Rate + TempParam=(BuffTemp[3]) & 0x9f; + switch(TempParam) { + case Rate1 : CMD_Rate(); break; + case Rate2 : CMD_Rate2(); break; + case PRate1 : Gyro.ModeOut=1; Gyro.Rate1_Event=0; break; + case PRate2 : Gyro.ModeOut=2; Gyro.Reper_Event=0; break; + } break; + + case 0xA0: //Delta_PS + DropDelay();//выставка задержки для мультидропа сбрасывается в команде CMD_Maintenance() на () микросекунд; + TempParam=(BuffTemp[3]) & 0x90; + switch(TempParam) { + case Delta_500 : CMD_Delta_PS(); break; + case Delta_EXT : CMD_Delta_PS(); break; + case PDelta_500 : Gyro.ModeOut=3; break; + case PDelta_EXT : Gyro.ModeOut=4; break; + } + break; + + case 0xB0://Delta_Bins + DropDelay();//выставка задержки для мультидропа сбрасывается в команде CMD_Maintenance() на () микросекунд; + switch(TempParam) { + case PDelta_Bins: Gyro.ModeOut=5; break; + case Delta_Bins : CMD_Delta_Bins(); break; + } + break; + + case 0x0F://B_Delta + TempParam = (((BuffTemp[3])>>4) & 0x9); + switch(TempParam) { + case PB_Delta_EXT: Gyro.ModeOut=6; break; + case PB_Delta_INT: Gyro.ModeOut=7; break; + case B_Delta_EXT: CMD_B_Delta(); break; + case B_Delta_INT: CMD_B_Delta(); break; + } + break; case 0xE4: CMD_M_vib(); @@ -961,6 +867,27 @@ } } } + + + + + + + + + + + + + + + + + + + + + void TechLog(void) { if (ReadCon (Time)) { @@ -969,7 +896,10 @@ //////////////////////Выбор FlashMod/////////////////////////// //////////////////////////////////////////////////////////////// - if (Time[0] == 'B') {Gyro.FlashMod=1;} + if (Time[0] == 'B') + { + sprintf((Time),"<%015d>\r\n", Gyro.tempdelta); + WriteCon(Time);} if (Time[0] == 'W') {Gyro.FlashMod=2;} if (Time[0] == 'R') {Gyro.FlashMod=3;} /////////////////////////////////////////////////////////////// @@ -1017,6 +947,10 @@ if (Time[0] == '4') { // выдача технологическая sprintf(Time,"\r\n"); WriteCon(Time); + for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%07d> ", Buff_8Point[i]); + WriteCon(Time); + sprintf(Time,"\r\n"); + WriteCon(Time); for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%07d> ", Buff_16PointD[i]); WriteCon(Time); sprintf(Time,"\r\n"); @@ -1031,21 +965,62 @@ WriteCon(Time); for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%07d> ", Buff_Restored_sin[i]); WriteCon(Time); - sprintf(Time,"\r\n"); + sprintf(Time,"\r\n\r\n\r\n"); WriteCon(Time); - sprintf(Time,"\r\n"); - WriteCon(Time); + } + if (Time[0] == 'z'){ // выдача технологичес6кая + sprintf(Time,"\r\n"); WriteCon(Time); - } - if (Time[0] == 'z'){ // выдача технологичес6кая - sprintf(Time,"\r\n"); - WriteCon(Time); - for (int i = 0; i < 32; i++ ) + + for (int i = 0; i < 32; i++ ) + { + ttemp+=(Buff_Restored_sin[i]); + } + sprintf((Time)," %d ",ttemp); + WriteCon(Time); + + for (int i = 0; i < 32; i++ ) + { + ttemp += Buff_64Point[i]; + } + sprintf((Time)," %d ",ttemp); + WriteCon(Time); + + for (int i = 0; i < 32; i++ ) + { + ttemp += Buff_32Point[i]; + } + sprintf((Time)," %d ",ttemp); + WriteCon(Time); + + for (int i = 0; i < 32; i++ ) { - ttemp=(Buff_Restored_sin[i]); - if (ttemp > 0) WriteCon("1"); else WriteCon("0"); + ttemp += Buff_16Point[i]; + } + sprintf((Time)," %d ",ttemp); + WriteCon(Time); + + for (int i = 0; i < 32; i++ ) + { + ttemp += Buff_16PointD[i]; } + sprintf((Time)," %d ",ttemp); + WriteCon(Time); + + for (int i = 0; i < 32; i++ ) + { + ttemp += Buff_8Point[i]; + } + sprintf((Time)," %d ",ttemp); + WriteCon(Time); + + for (int i = 0; i < 32; i++ ) + { + ttemp += Buff_1Point[i]; + } + sprintf((Time)," %d ",ttemp); + WriteCon(Time); } if (Time[0] == '6') { // выдача технологическая sprintf(Time,"\r\n"); @@ -1065,12 +1040,12 @@ for (int i = 0; i < 32; i++ )sprintf((Time)," <%07d> ",Gyro.Frq); WriteCon(Time); } - if (Time[0] == 'p') { // выдача технологическая + /*if (Time[0] == 'p') { // выдача технологическая sprintf(Time,"\r\n"); WriteCon(Time); for (int i = 0; i < 32; i++ )sprintf((Time)," <%07d> ",Gyro.MaxAmp); WriteCon(Time); - } + }*/ if (Time[0] == 'x') { // выдача технологическая sprintf(Time,"\r\n"); WriteCon(Time); @@ -1094,7 +1069,9 @@ if (Time[0] == 'y') Gyro.flag=1; //включит передачу if (Time[0] == 'u') Gyro.flag=0; //LPC_TIM1->MR0+1000 вносим помеху if (Time[0] == 'i') Gyro.flag=2; //LPC_TIM1->MR0 убираем помеху - if (Time[0] == 'o') Gyro.LogHZ=0; //Отключить передачу + if (Time[0] == 'o') Gyro.flag=3; //Отключить передачу + if (Time[0] == 'p') Gyro.LogHZ = 1; //Отключить передачу + if (Time[0] == 'l') Gyro.LogHZ = 0; //Отключить передачу //////////////////////////////////////////////////////////////////////////////////// /*Запись лога регулировки периметра*/ if (Time[0] == 'g') {Gyro.LogPLC=1; Gyro.PLC_Lern=0;} //включит передачу