forkd

Dependencies:   mbed

Fork of LGstaandart by Dmitry Kovalev

Committer:
Kovalev_D
Date:
Thu Jan 25 13:59:43 2018 +0000
Revision:
231:079835d508ef
Parent:
228:a8195e1b1123
Child:
232:130a2b5003e6
termo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
igor_v 0:8ad47e2b6f00 1 #include "stdlib.h"
Kovalev_D 197:7a05523bf588 2 //#include "math.h"
igor_v 0:8ad47e2b6f00 3 #include "LPC17xx.h"
igor_v 0:8ad47e2b6f00 4 #include "Global.h"
Kovalev_D 106:250ddd8629c6 5 int tempNH,tempNL;
igor_v 0:8ad47e2b6f00 6 unsigned int Rate_Flag;
igor_v 0:8ad47e2b6f00 7 unsigned int CountBuFFIn;
igor_v 21:bc8c1cec3da6 8 unsigned int N=0,CRC_N;
Kovalev_D 214:4c70e452c491 9 unsigned int Rate_7=0;
Kovalev_D 214:4c70e452c491 10 int iRate_7=0;
igor_v 21:bc8c1cec3da6 11 unsigned int Param1=0;
igor_v 21:bc8c1cec3da6 12 unsigned int Param2=0;
igor_v 21:bc8c1cec3da6 13 unsigned int Param3=0;
igor_v 21:bc8c1cec3da6 14 unsigned int Param4=0;
Kovalev_D 209:224e7331a061 15 ///unsigned int Consol=123;
Kovalev_D 121:bbae560cdd43 16 unsigned int TempParam=1;
Kovalev_D 124:9ae09249f842 17 unsigned int CountParam=0;
Kovalev_D 209:224e7331a061 18 unsigned int OldCuruAngle;
Kovalev_D 209:224e7331a061 19 unsigned int OldCaunPlus=0;
Kovalev_D 209:224e7331a061 20 unsigned int OldCaunMin=0;
Kovalev_D 211:ac8251b067d2 21 unsigned int OutDeltaPS;
Kovalev_D 211:ac8251b067d2 22 int IntOutDeltaPS;
Kovalev_D 209:224e7331a061 23 int ttemp,temp5=1;
Kovalev_D 197:7a05523bf588 24 int OLDDAC=0;
Kovalev_D 205:775d54fdf646 25 int rr = 123;
Kovalev_D 209:224e7331a061 26 unsigned int pDestT;
Kovalev_D 136:19b9e6abb86f 27 GyroParam *Flash;
Kovalev_D 211:ac8251b067d2 28 //int q;
Kovalev_D 147:1aed74f19a8f 29 ///////////////flah and boot///////////
Kovalev_D 147:1aed74f19a8f 30 void GoBoot(void)
Kovalev_D 147:1aed74f19a8f 31 {
Kovalev_D 147:1aed74f19a8f 32 /* Prepare Sectors to be flashed */
Kovalev_D 147:1aed74f19a8f 33 NVIC_DisableIRQ(TIMER1_IRQn);
Kovalev_D 147:1aed74f19a8f 34 NVIC_DisableIRQ(TIMER2_IRQn);
Kovalev_D 147:1aed74f19a8f 35 NVIC_DisableIRQ(TIMER3_IRQn);
Kovalev_D 147:1aed74f19a8f 36 NVIC_DisableIRQ(EINT3_IRQn);
Kovalev_D 147:1aed74f19a8f 37 SystemInitDef();
Kovalev_D 147:1aed74f19a8f 38 vIAP_ReinvokeISP();
Kovalev_D 147:1aed74f19a8f 39 }
Kovalev_D 181:0b022246c43c 40
Kovalev_D 181:0b022246c43c 41 void DropDelay(void)
Kovalev_D 225:f8fee6c586cc 42 {
Kovalev_D 225:f8fee6c586cc 43 Gyro.DropDelayGLD = DropDelayGLD_0;
Kovalev_D 225:f8fee6c586cc 44 switch(Gyro.My_Addres) {
Kovalev_D 225:f8fee6c586cc 45 case 1: Gyro.DropDelayGLD = DropDelayGLD_1; break;
Kovalev_D 225:f8fee6c586cc 46 case 2: Gyro.DropDelayGLD = DropDelayGLD_2; break;
Kovalev_D 225:f8fee6c586cc 47 case 3: Gyro.DropDelayGLD = DropDelayGLD_3; break;
Kovalev_D 225:f8fee6c586cc 48 }
Kovalev_D 194:8f3cb37a5541 49
Kovalev_D 181:0b022246c43c 50 }
Kovalev_D 231:079835d508ef 51
Kovalev_D 205:775d54fdf646 52 void EraseFlash(void)
Kovalev_D 205:775d54fdf646 53 {
Kovalev_D 207:d1ce992f5d17 54 rr = u32IAP_PrepareSectors(19, 21);
Kovalev_D 207:d1ce992f5d17 55 rr = u32IAP_EraseSectors(19, 21);
Kovalev_D 231:079835d508ef 56 }
Kovalev_D 205:775d54fdf646 57
Kovalev_D 205:775d54fdf646 58 void WriteFlash(void)
Kovalev_D 231:079835d508ef 59 {
Kovalev_D 208:19150d2b528f 60 Gyro.FlashMod = 0;
Kovalev_D 205:775d54fdf646 61
Kovalev_D 205:775d54fdf646 62 //SystemInitDef();
Kovalev_D 205:775d54fdf646 63 NVIC_DisableIRQ(TIMER1_IRQn);
Kovalev_D 205:775d54fdf646 64 NVIC_DisableIRQ(TIMER2_IRQn);
Kovalev_D 205:775d54fdf646 65 NVIC_DisableIRQ(TIMER3_IRQn);
Kovalev_D 205:775d54fdf646 66 NVIC_DisableIRQ(EINT3_IRQn);
Kovalev_D 205:775d54fdf646 67
Kovalev_D 208:19150d2b528f 68 // unsigned int start_address = (unsigned int) & GyroP;
Kovalev_D 207:d1ce992f5d17 69 rr = u32IAP_PrepareSectors(19, 21);
Kovalev_D 208:19150d2b528f 70 rr = u32IAP_EraseSectors (19, 21);
Kovalev_D 207:d1ce992f5d17 71 rr = u32IAP_PrepareSectors(19, 21);
Kovalev_D 208:19150d2b528f 72 rr = u32IAP_CopyRAMToFlash(0x030000, &GyroP , 1024);
Kovalev_D 205:775d54fdf646 73 // SystemInit1(); // Инициализация контроллера: установка тактовых частот
Kovalev_D 205:775d54fdf646 74 //SystemCoreClockUpdate1(); // расчет тактовой частоты процессора перед инициализацией UART - 103MHz
Kovalev_D 205:775d54fdf646 75
Kovalev_D 205:775d54fdf646 76 NVIC_EnableIRQ(TIMER1_IRQn);
Kovalev_D 205:775d54fdf646 77 NVIC_EnableIRQ(TIMER2_IRQn);
Kovalev_D 205:775d54fdf646 78 NVIC_EnableIRQ(TIMER3_IRQn);
Kovalev_D 205:775d54fdf646 79 NVIC_EnableIRQ(EINT3_IRQn);
Kovalev_D 208:19150d2b528f 80 //SystemCoreClockUpdate1();
Kovalev_D 205:775d54fdf646 81
Kovalev_D 205:775d54fdf646 82 }
Kovalev_D 136:19b9e6abb86f 83 void ReadFlash ( void)
Kovalev_D 136:19b9e6abb86f 84 {
Kovalev_D 205:775d54fdf646 85 NVIC_DisableIRQ(TIMER1_IRQn);
Kovalev_D 205:775d54fdf646 86 NVIC_DisableIRQ(TIMER2_IRQn);
Kovalev_D 205:775d54fdf646 87 NVIC_DisableIRQ(TIMER3_IRQn);
Kovalev_D 205:775d54fdf646 88 NVIC_DisableIRQ(EINT3_IRQn);
Kovalev_D 147:1aed74f19a8f 89 Gyro.FlashMod = 0;
Kovalev_D 231:079835d508ef 90
Kovalev_D 205:775d54fdf646 91
Kovalev_D 207:d1ce992f5d17 92 pDestT= (unsigned int) (0x030000);
Kovalev_D 136:19b9e6abb86f 93 Flash = (GyroParam*) pDestT;
Kovalev_D 136:19b9e6abb86f 94 GyroP = *(Flash);
Kovalev_D 205:775d54fdf646 95
Kovalev_D 205:775d54fdf646 96 NVIC_EnableIRQ(TIMER1_IRQn);
Kovalev_D 205:775d54fdf646 97 NVIC_EnableIRQ(TIMER2_IRQn);
Kovalev_D 205:775d54fdf646 98 NVIC_EnableIRQ(TIMER3_IRQn);
Kovalev_D 205:775d54fdf646 99 NVIC_EnableIRQ(EINT3_IRQn);
Kovalev_D 208:19150d2b528f 100 }
Kovalev_D 169:140743e3bb96 101 ///////////////end flah and boot///////////
Kovalev_D 222:7de7b3bf3a1d 102
Kovalev_D 191:40028201ddad 103 void M_RateA(void)
Kovalev_D 226:4a4d5bd5fcd7 104 {
Kovalev_D 226:4a4d5bd5fcd7 105
Kovalev_D 226:4a4d5bd5fcd7 106 if(Gyro.ModeOut==3)
Kovalev_D 226:4a4d5bd5fcd7 107 {
Kovalev_D 226:4a4d5bd5fcd7 108 if (Gyro.Device_Mode) Gyro.ModeOut=4;
Kovalev_D 226:4a4d5bd5fcd7 109 }
Kovalev_D 226:4a4d5bd5fcd7 110
Kovalev_D 209:224e7331a061 111 switch(Gyro.ModeOut)
Kovalev_D 209:224e7331a061 112 {
Kovalev_D 226:4a4d5bd5fcd7 113 case 1: if(Gyro.Rate1_Event ) CMD_Rate(); break;
Kovalev_D 226:4a4d5bd5fcd7 114 case 2: if(Gyro.Reper_Event ) CMD_Rate2(); break;
Kovalev_D 226:4a4d5bd5fcd7 115 case 3: if(Gyro.Event_500Hz ) CMD_Delta_PS(); break;
Kovalev_D 227:2774b56bfab0 116 case 4: if(Gyro.EXT_Latch ) CMD_Delta_PS(); Gyro.EXT_Latch=0; break;
Kovalev_D 226:4a4d5bd5fcd7 117 case 5: if(Gyro.Event_500Hz ) CMD_Delta_Bins(); break;
Kovalev_D 226:4a4d5bd5fcd7 118 case 6: if(Gyro.EXT_Latch ) CMD_B_Delta(); Gyro.EXT_Latch=0; break;
Kovalev_D 226:4a4d5bd5fcd7 119 case 7: if(Gyro.Event_500Hz ) CMD_B_Delta(); break;
Kovalev_D 226:4a4d5bd5fcd7 120 case 8: if(Gyro.Rate3_Event ) CMD_Rate3(); break;
Kovalev_D 226:4a4d5bd5fcd7 121 case 9: if(Gyro.Reper_Event ){ CMD_Rate2(); Gyro.ModeOut=0;} break;
Kovalev_D 225:f8fee6c586cc 122 case 10: CMD_Rate7();Gyro.ModeOut=0;break;//if(Gyro.EvenRate7 ){ CMD_Rate7(); Gyro.EvenRate7=0;} break;
Kovalev_D 222:7de7b3bf3a1d 123 case 11: if(Gyro.EvenRate5K ){ M_Rate5K(); Gyro.EvenRate5K--;} break;
Kovalev_D 196:f76dbc081e63 124 }
Kovalev_D 191:40028201ddad 125 }
Kovalev_D 136:19b9e6abb86f 126
Kovalev_D 214:4c70e452c491 127 void BuffClear(void)
Kovalev_D 214:4c70e452c491 128 {
Kovalev_D 214:4c70e452c491 129 for(int q=0; q<60; q++)
Kovalev_D 214:4c70e452c491 130 {
Kovalev_D 214:4c70e452c491 131 BuffTemp[q]=0;
Kovalev_D 214:4c70e452c491 132 }
Kovalev_D 214:4c70e452c491 133 }
Kovalev_D 222:7de7b3bf3a1d 134
Kovalev_D 222:7de7b3bf3a1d 135
Kovalev_D 222:7de7b3bf3a1d 136
Kovalev_D 222:7de7b3bf3a1d 137
Kovalev_D 222:7de7b3bf3a1d 138
Kovalev_D 222:7de7b3bf3a1d 139
Kovalev_D 214:4c70e452c491 140 void CMD_Rate7(void)
Kovalev_D 214:4c70e452c491 141 {
Kovalev_D 214:4c70e452c491 142 BuffClear();
Kovalev_D 214:4c70e452c491 143
Kovalev_D 225:f8fee6c586cc 144 unsigned int Temp;
Kovalev_D 225:f8fee6c586cc 145 int ADC_Worm[70];
Kovalev_D 214:4c70e452c491 146 int Temp1;
Kovalev_D 214:4c70e452c491 147 float Temp2;
Kovalev_D 222:7de7b3bf3a1d 148 static unsigned int t=0;
Kovalev_D 231:079835d508ef 149
Kovalev_D 214:4c70e452c491 150 BuffTemp[0] = Gyro.SOC_Out;
Kovalev_D 214:4c70e452c491 151 BuffTemp[1] = Gyro.My_Addres;
Kovalev_D 231:079835d508ef 152
Kovalev_D 231:079835d508ef 153
Kovalev_D 231:079835d508ef 154
Kovalev_D 231:079835d508ef 155 for(int q=0; q<64; q++)
Kovalev_D 231:079835d508ef 156 {
Kovalev_D 231:079835d508ef 157 Temp = (WormFilt2[q]>>6) + 128;
Kovalev_D 225:f8fee6c586cc 158 BuffTemp[q+2] = (Temp) & 0xff;//младший байт разности счетчиков
Kovalev_D 225:f8fee6c586cc 159 }
Kovalev_D 214:4c70e452c491 160
Kovalev_D 214:4c70e452c491 161
Kovalev_D 225:f8fee6c586cc 162
Kovalev_D 225:f8fee6c586cc 163 iRate_7 = ((Spi.DAC_B-0x7fff)&0xffff);
Kovalev_D 225:f8fee6c586cc 164 BuffTemp[66]=(iRate_7 >> 8) & 0xff;//младший байт разности счетчиков
Kovalev_D 225:f8fee6c586cc 165 BuffTemp[67]=(iRate_7 >> 0) & 0xff;//младший байт разности счетчиков;
Kovalev_D 225:f8fee6c586cc 166
Kovalev_D 225:f8fee6c586cc 167 Rate_7 = Gyro.PLC_Eror_count>>3;
Kovalev_D 225:f8fee6c586cc 168 BuffTemp[68]=(Rate_7 >> 8) & 0xff;//младший байт разности счетчиков
Kovalev_D 225:f8fee6c586cc 169 BuffTemp[69]=(Rate_7 >> 0) & 0xff;//младший байт разности счетчиков;
Kovalev_D 214:4c70e452c491 170
Kovalev_D 214:4c70e452c491 171 Gyro.PLC_Eror_count=0;
Kovalev_D 218:b4067cac75c0 172
Kovalev_D 218:b4067cac75c0 173 switch(Gyro.LG_Type)
Kovalev_D 214:4c70e452c491 174 {
Kovalev_D 225:f8fee6c586cc 175 case 1: iRate_7 = 0xffff-Spi.DAC_A; break;
Kovalev_D 218:b4067cac75c0 176
Kovalev_D 214:4c70e452c491 177 case 0: Temp2 = (Spi.DAC_A*1.538) - 0xd80f;
Kovalev_D 218:b4067cac75c0 178 iRate_7 = (int)Temp2;
Kovalev_D 218:b4067cac75c0 179 break;
Kovalev_D 214:4c70e452c491 180 }
Kovalev_D 225:f8fee6c586cc 181 Rate_7 = (unsigned int)(iRate_7&0xffff);
Kovalev_D 225:f8fee6c586cc 182 BuffTemp[70]= (iRate_7 >> 8) & 0xff;//младший байт разности счетчиков
Kovalev_D 225:f8fee6c586cc 183 BuffTemp[71]= (iRate_7 >> 0) & 0xff;//младший байт разности счетчиков;
Kovalev_D 214:4c70e452c491 184
Kovalev_D 225:f8fee6c586cc 185 Check(BuffTemp,74);
Kovalev_D 225:f8fee6c586cc 186 WriteConN (BuffTemp,74);
Kovalev_D 214:4c70e452c491 187 }
Kovalev_D 214:4c70e452c491 188
Kovalev_D 214:4c70e452c491 189
Kovalev_D 214:4c70e452c491 190
Kovalev_D 129:406995a91322 191 void CMD_M_Param_R(void)
igor_v 0:8ad47e2b6f00 192 {
Kovalev_D 208:19150d2b528f 193
Kovalev_D 214:4c70e452c491 194
Kovalev_D 208:19150d2b528f 195 unsigned int NP=0;
Kovalev_D 129:406995a91322 196 unsigned int Param;
Kovalev_D 208:19150d2b528f 197
Kovalev_D 214:4c70e452c491 198
Kovalev_D 208:19150d2b528f 199 NP = BuffTemp[3];
Kovalev_D 208:19150d2b528f 200
Kovalev_D 209:224e7331a061 201 for (int i=0;i<8;i++)
Kovalev_D 209:224e7331a061 202 {BuffTemp[i]=0;}
Kovalev_D 208:19150d2b528f 203
Kovalev_D 208:19150d2b528f 204
Kovalev_D 129:406995a91322 205 BuffTemp[0] = Gyro.SOC_Out;
Kovalev_D 129:406995a91322 206 BuffTemp[1] = Gyro.My_Addres;
Kovalev_D 129:406995a91322 207
Kovalev_D 208:19150d2b528f 208
Kovalev_D 209:224e7331a061 209 /* sprintf((Time),"%d = %d \r\n",NP, GyroP.Array[NP]);
Kovalev_D 209:224e7331a061 210 WriteCon(Time);*/
Kovalev_D 129:406995a91322 211 Param = GyroP.Array[NP];
Kovalev_D 208:19150d2b528f 212 BuffTemp[2] =(GyroP.Array[NP] >> 8) & 0xff;//старший байт требуемого параметра
Kovalev_D 208:19150d2b528f 213 BuffTemp[3] =(GyroP.Array[NP] >> 0) & 0xff;//младший байт требуемого параметра
Kovalev_D 231:079835d508ef 214
Kovalev_D 129:406995a91322 215 Check(BuffTemp, 6);
Kovalev_D 129:406995a91322 216 WriteConN (BuffTemp,6);
Kovalev_D 205:775d54fdf646 217 /*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);
Kovalev_D 205:775d54fdf646 218 WriteCon(Time);*/
Kovalev_D 208:19150d2b528f 219 NP=0;
Kovalev_D 129:406995a91322 220 }
Kovalev_D 231:079835d508ef 221
Kovalev_D 231:079835d508ef 222
Kovalev_D 231:079835d508ef 223
Kovalev_D 231:079835d508ef 224
Kovalev_D 231:079835d508ef 225
Kovalev_D 231:079835d508ef 226 float Float(unsigned int TermoHi,unsigned int TermoLo)
Kovalev_D 231:079835d508ef 227 {
Kovalev_D 231:079835d508ef 228 char Data[4];
Kovalev_D 231:079835d508ef 229 int SecDelta;
Kovalev_D 231:079835d508ef 230 int TempTD;
Kovalev_D 231:079835d508ef 231 union
Kovalev_D 231:079835d508ef 232 {
Kovalev_D 231:079835d508ef 233 float num;
Kovalev_D 231:079835d508ef 234 char byte[4];
Kovalev_D 231:079835d508ef 235 } SimpleFloat;
Kovalev_D 231:079835d508ef 236
Kovalev_D 231:079835d508ef 237 Data[0]=TermoLo&0xfff;
Kovalev_D 231:079835d508ef 238 Data[1]=TermoLo>>8;
Kovalev_D 231:079835d508ef 239 Data[2]=TermoHi&0xfff;
Kovalev_D 231:079835d508ef 240 Data[3]=TermoHi>>8;
Kovalev_D 231:079835d508ef 241
Kovalev_D 231:079835d508ef 242 for(int i = 0; i < 4; i++)
Kovalev_D 231:079835d508ef 243 {
Kovalev_D 231:079835d508ef 244 SimpleFloat.byte[i] = Data[i];
Kovalev_D 231:079835d508ef 245 }
Kovalev_D 231:079835d508ef 246
Kovalev_D 231:079835d508ef 247
Kovalev_D 231:079835d508ef 248 return SimpleFloat.num*10000;
Kovalev_D 231:079835d508ef 249
Kovalev_D 231:079835d508ef 250 }
Kovalev_D 231:079835d508ef 251 void Switch(unsigned int NP)
Kovalev_D 231:079835d508ef 252 {
Kovalev_D 231:079835d508ef 253 unsigned int TempTermodataHi, TempTermodataLo;
Kovalev_D 231:079835d508ef 254 switch(NP)
Kovalev_D 231:079835d508ef 255 {
Kovalev_D 231:079835d508ef 256 case 63: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_0 = GyroP.Str.TStatic_0; break;
Kovalev_D 231:079835d508ef 257 case 64: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_1 = GyroP.Str.TStatic_1; break;
Kovalev_D 231:079835d508ef 258 case 65: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_2 = GyroP.Str.TStatic_2; break;
Kovalev_D 231:079835d508ef 259 case 66: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_3 = GyroP.Str.TStatic_3; break;
Kovalev_D 231:079835d508ef 260 case 67: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_4 = GyroP.Str.TStatic_4; break;
Kovalev_D 231:079835d508ef 261 case 68: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_5 = GyroP.Str.TStatic_5; break;
Kovalev_D 231:079835d508ef 262 case 69: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_6 = GyroP.Str.TStatic_6; break;
Kovalev_D 231:079835d508ef 263 case 70: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_7 = GyroP.Str.TStatic_7; break;
Kovalev_D 231:079835d508ef 264 case 71: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_8 = GyroP.Str.TStatic_8; break;
Kovalev_D 231:079835d508ef 265 case 72: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_9 = GyroP.Str.TStatic_9; break;
Kovalev_D 231:079835d508ef 266 case 73: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_10 = GyroP.Str.TStatic_10; break;
Kovalev_D 231:079835d508ef 267 case 74: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_11 = GyroP.Str.TStatic_11; break;
Kovalev_D 231:079835d508ef 268 case 75: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_12 = GyroP.Str.TStatic_12; break;
Kovalev_D 231:079835d508ef 269 case 76: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_13 = GyroP.Str.TStatic_13; break;
Kovalev_D 231:079835d508ef 270
Kovalev_D 231:079835d508ef 271
Kovalev_D 231:079835d508ef 272 case 160: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_0 = GyroP.Str.TDCool_0; break;
Kovalev_D 231:079835d508ef 273 case 161: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_1 = GyroP.Str.TDCool_1; break;
Kovalev_D 231:079835d508ef 274 case 162: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_2 = GyroP.Str.TDCool_2; break;
Kovalev_D 231:079835d508ef 275 case 163: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_3 = GyroP.Str.TDCool_3; break;
Kovalev_D 231:079835d508ef 276 case 164: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_4 = GyroP.Str.TDCool_4; break;
Kovalev_D 231:079835d508ef 277 case 165: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_5 = GyroP.Str.TDCool_5; break;
Kovalev_D 231:079835d508ef 278 case 166: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_6 = GyroP.Str.TDCool_6; break;
Kovalev_D 231:079835d508ef 279 case 167: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_7 = GyroP.Str.TDCool_7; break;
Kovalev_D 231:079835d508ef 280 case 168: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_8 = GyroP.Str.TDCool_8; break;
Kovalev_D 231:079835d508ef 281 case 169: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_9 = GyroP.Str.TDCool_9; break;
Kovalev_D 231:079835d508ef 282 case 170: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_10 = GyroP.Str.TDCool_10; break;
Kovalev_D 231:079835d508ef 283 case 171: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_11 = GyroP.Str.TDCool_11; break;
Kovalev_D 231:079835d508ef 284 case 172: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_12 = GyroP.Str.TDCool_12; break;
Kovalev_D 231:079835d508ef 285 case 173: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_13 = GyroP.Str.TDCool_13; break;
Kovalev_D 231:079835d508ef 286
Kovalev_D 231:079835d508ef 287
Kovalev_D 231:079835d508ef 288 case 78: TermoCorrStatic.TermoDeltaStatic.Str.TermoDeltaStatic_0 = Float(GyroP.Str.TermoDeltaStatic_0, GyroP.Str.TermoDeltaStatic_1 ); break;
Kovalev_D 231:079835d508ef 289 case 80: TermoCorrStatic.TermoDeltaStatic.Str.TermoDeltaStatic_1 = Float(GyroP.Str.TermoDeltaStatic_2, GyroP.Str.TermoDeltaStatic_3 ); break;
Kovalev_D 231:079835d508ef 290 case 82: TermoCorrStatic.TermoDeltaStatic.Str.TermoDeltaStatic_2 = Float(GyroP.Str.TermoDeltaStatic_4, GyroP.Str.TermoDeltaStatic_5 ); break;
Kovalev_D 231:079835d508ef 291 case 84: TermoCorrStatic.TermoDeltaStatic.Str.TermoDeltaStatic_3 = Float(GyroP.Str.TermoDeltaStatic_6, GyroP.Str.TermoDeltaStatic_7 ); break;
Kovalev_D 231:079835d508ef 292 case 86: TermoCorrStatic.TermoDeltaStatic.Str.TermoDeltaStatic_4 = Float(GyroP.Str.TermoDeltaStatic_8, GyroP.Str.TermoDeltaStatic_9 ); break;
Kovalev_D 231:079835d508ef 293 case 88: TermoCorrStatic.TermoDeltaStatic.Str.TermoDeltaStatic_5 = Float(GyroP.Str.TermoDeltaStatic_10,GyroP.Str.TermoDeltaStatic_11); break;
Kovalev_D 231:079835d508ef 294 case 90: TermoCorrStatic.TermoDeltaStatic.Str.TermoDeltaStatic_6 = Float(GyroP.Str.TermoDeltaStatic_12,GyroP.Str.TermoDeltaStatic_13); break;
Kovalev_D 231:079835d508ef 295 case 92: TermoCorrStatic.TermoDeltaStatic.Str.TermoDeltaStatic_7 = Float(GyroP.Str.TermoDeltaStatic_14,GyroP.Str.TermoDeltaStatic_15); break;
Kovalev_D 231:079835d508ef 296 case 94: TermoCorrStatic.TermoDeltaStatic.Str.TermoDeltaStatic_8 = Float(GyroP.Str.TermoDeltaStatic_16,GyroP.Str.TermoDeltaStatic_17); break;
Kovalev_D 231:079835d508ef 297 case 96: TermoCorrStatic.TermoDeltaStatic.Str.TermoDeltaStatic_9 = Float(GyroP.Str.TermoDeltaStatic_18,GyroP.Str.TermoDeltaStatic_19); break;
Kovalev_D 231:079835d508ef 298 case 98: TermoCorrStatic.TermoDeltaStatic.Str.TermoDeltaStatic_10 = Float(GyroP.Str.TermoDeltaStatic_20,GyroP.Str.TermoDeltaStatic_21); break;
Kovalev_D 231:079835d508ef 299 case 100: TermoCorrStatic.TermoDeltaStatic.Str.TermoDeltaStatic_11 = Float(GyroP.Str.TermoDeltaStatic_22,GyroP.Str.TermoDeltaStatic_23); break;
Kovalev_D 231:079835d508ef 300 case 102: TermoCorrStatic.TermoDeltaStatic.Str.TermoDeltaStatic_12 = Float(GyroP.Str.TermoDeltaStatic_24,GyroP.Str.TermoDeltaStatic_25); break;
Kovalev_D 231:079835d508ef 301 case 104: TermoCorrStatic.TermoDeltaStatic.Str.TermoDeltaStatic_13 = Float(GyroP.Str.TermoDeltaStatic_26,GyroP.Str.TermoDeltaStatic_27); break;
Kovalev_D 231:079835d508ef 302 case 175: TermoCorrDynamic.TermoDeltaDynamic.Str.TermoDeltaDynamic_0 = Float(GyroP.Str.TermoDynamicDataHeat0, GyroP.Str.TermoDynamicDataHeat1 ); break;
Kovalev_D 231:079835d508ef 303 case 177: TermoCorrDynamic.TermoDeltaDynamic.Str.TermoDeltaDynamic_1 = Float(GyroP.Str.TermoDynamicDataHeat2, GyroP.Str.TermoDynamicDataHeat3 ); break;
Kovalev_D 231:079835d508ef 304 case 179: TermoCorrDynamic.TermoDeltaDynamic.Str.TermoDeltaDynamic_2 = Float(GyroP.Str.TermoDynamicDataHeat4, GyroP.Str.TermoDynamicDataHeat5 ); break;
Kovalev_D 231:079835d508ef 305 case 181: TermoCorrDynamic.TermoDeltaDynamic.Str.TermoDeltaDynamic_3 = Float(GyroP.Str.TermoDynamicDataHeat6, GyroP.Str.TermoDynamicDataHeat7 ); break;
Kovalev_D 231:079835d508ef 306 case 183: TermoCorrDynamic.TermoDeltaDynamic.Str.TermoDeltaDynamic_4 = Float(GyroP.Str.TermoDynamicDataHeat8, GyroP.Str.TermoDynamicDataHeat9 ); break;
Kovalev_D 231:079835d508ef 307 case 185: TermoCorrDynamic.TermoDeltaDynamic.Str.TermoDeltaDynamic_5 = Float(GyroP.Str.TermoDynamicDataHeat10,GyroP.Str.TermoDynamicDataHeat11); break;
Kovalev_D 231:079835d508ef 308 case 187: TermoCorrDynamic.TermoDeltaDynamic.Str.TermoDeltaDynamic_6 = Float(GyroP.Str.TermoDynamicDataHeat12,GyroP.Str.TermoDynamicDataHeat13); break;
Kovalev_D 231:079835d508ef 309 case 189: TermoCorrDynamic.TermoDeltaDynamic.Str.TermoDeltaDynamic_7 = Float(GyroP.Str.TermoDynamicDataHeat14,GyroP.Str.TermoDynamicDataHeat15); break;
Kovalev_D 231:079835d508ef 310 case 191: TermoCorrDynamic.TermoDeltaDynamic.Str.TermoDeltaDynamic_8 = Float(GyroP.Str.TermoDynamicDataHeat16,GyroP.Str.TermoDynamicDataHeat17); break;
Kovalev_D 231:079835d508ef 311 case 193: TermoCorrDynamic.TermoDeltaDynamic.Str.TermoDeltaDynamic_9 = Float(GyroP.Str.TermoDynamicDataHeat18,GyroP.Str.TermoDynamicDataHeat19); break;
Kovalev_D 231:079835d508ef 312 case 195: TermoCorrDynamic.TermoDeltaDynamic.Str.TermoDeltaDynamic_10 = Float(GyroP.Str.TermoDynamicDataHeat20,GyroP.Str.TermoDynamicDataHeat21); break;
Kovalev_D 231:079835d508ef 313 case 197: TermoCorrDynamic.TermoDeltaDynamic.Str.TermoDeltaDynamic_11 = Float(GyroP.Str.TermoDynamicDataHeat22,GyroP.Str.TermoDynamicDataHeat23); break;
Kovalev_D 231:079835d508ef 314 case 199: TermoCorrDynamic.TermoDeltaDynamic.Str.TermoDeltaDynamic_12 = Float(GyroP.Str.TermoDynamicDataHeat24,GyroP.Str.TermoDynamicDataHeat25); break;
Kovalev_D 231:079835d508ef 315 case 201: TermoCorrDynamic.TermoDeltaDynamic.Str.TermoDeltaDynamic_13 = Float(GyroP.Str.TermoDynamicDataHeat26,GyroP.Str.TermoDynamicDataHeat27); break;
Kovalev_D 231:079835d508ef 316 }
Kovalev_D 231:079835d508ef 317
Kovalev_D 231:079835d508ef 318 }
Kovalev_D 129:406995a91322 319 void CMD_M_Param_W(void)
Kovalev_D 129:406995a91322 320 {
Kovalev_D 208:19150d2b528f 321 unsigned int NP=0;
Kovalev_D 208:19150d2b528f 322 unsigned int Param,temp,flash;
Kovalev_D 231:079835d508ef 323 unsigned int TempTermodataHi, TempTermodataLo;
Kovalev_D 231:079835d508ef 324 float Ttemp;
Kovalev_D 231:079835d508ef 325
Kovalev_D 129:406995a91322 326 NP = BuffTemp[3];
Kovalev_D 129:406995a91322 327 Param = (BuffTemp[4]<<8);
Kovalev_D 129:406995a91322 328 Param |= BuffTemp[5];
Kovalev_D 129:406995a91322 329
Kovalev_D 208:19150d2b528f 330 GyroP.Array[NP] = Param;
Kovalev_D 222:7de7b3bf3a1d 331 flash=GyroP.Array[115];
Kovalev_D 231:079835d508ef 332 sprintf((Time),"READ NP= <%07d> Param = <%07d> \r\n", NP, Param);
Kovalev_D 231:079835d508ef 333 WriteCon(Time);
Kovalev_D 231:079835d508ef 334 Gyro.NP=NP;
Kovalev_D 231:079835d508ef 335 // Switch(NP);
Kovalev_D 231:079835d508ef 336
Kovalev_D 208:19150d2b528f 337 switch(NP)
Kovalev_D 208:19150d2b528f 338 {
Kovalev_D 231:079835d508ef 339 case 63: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_0 = GyroP.Str.TStatic_0; break;
Kovalev_D 231:079835d508ef 340 case 64: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_1 = GyroP.Str.TStatic_1; break;
Kovalev_D 231:079835d508ef 341 case 65: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_2 = GyroP.Str.TStatic_2; break;
Kovalev_D 231:079835d508ef 342 case 66: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_3 = GyroP.Str.TStatic_3; break;
Kovalev_D 231:079835d508ef 343 case 67: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_4 = GyroP.Str.TStatic_4; break;
Kovalev_D 231:079835d508ef 344 case 68: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_5 = GyroP.Str.TStatic_5; break;
Kovalev_D 231:079835d508ef 345 case 69: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_6 = GyroP.Str.TStatic_6; break;
Kovalev_D 231:079835d508ef 346 case 70: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_7 = GyroP.Str.TStatic_7; break;
Kovalev_D 231:079835d508ef 347 case 71: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_8 = GyroP.Str.TStatic_8; break;
Kovalev_D 231:079835d508ef 348 case 72: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_9 = GyroP.Str.TStatic_9; break;
Kovalev_D 231:079835d508ef 349 case 73: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_10 = GyroP.Str.TStatic_10; break;
Kovalev_D 231:079835d508ef 350 case 74: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_11 = GyroP.Str.TStatic_11; break;
Kovalev_D 231:079835d508ef 351 case 75: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_12 = GyroP.Str.TStatic_12; break;
Kovalev_D 231:079835d508ef 352 case 76: TermoCorrStatic.TermoTempStatic.Str.TermoTempStatic_13 = GyroP.Str.TStatic_13; break;
Kovalev_D 231:079835d508ef 353
Kovalev_D 231:079835d508ef 354
Kovalev_D 231:079835d508ef 355 case 160: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_0 = GyroP.Str.TDCool_0; break;
Kovalev_D 231:079835d508ef 356 case 161: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_1 = GyroP.Str.TDCool_1; break;
Kovalev_D 231:079835d508ef 357 case 162: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_2 = GyroP.Str.TDCool_2; break;
Kovalev_D 231:079835d508ef 358 case 163: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_3 = GyroP.Str.TDCool_3; break;
Kovalev_D 231:079835d508ef 359 case 164: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_4 = GyroP.Str.TDCool_4; break;
Kovalev_D 231:079835d508ef 360 case 165: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_5 = GyroP.Str.TDCool_5; break;
Kovalev_D 231:079835d508ef 361 case 166: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_6 = GyroP.Str.TDCool_6; break;
Kovalev_D 231:079835d508ef 362 case 167: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_7 = GyroP.Str.TDCool_7; break;
Kovalev_D 231:079835d508ef 363 case 168: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_8 = GyroP.Str.TDCool_8; break;
Kovalev_D 231:079835d508ef 364 case 169: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_9 = GyroP.Str.TDCool_9; break;
Kovalev_D 231:079835d508ef 365 case 170: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_10 = GyroP.Str.TDCool_10; break;
Kovalev_D 231:079835d508ef 366 case 171: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_11 = GyroP.Str.TDCool_11; break;
Kovalev_D 231:079835d508ef 367 case 172: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_12 = GyroP.Str.TDCool_12; break;
Kovalev_D 231:079835d508ef 368 case 173: TermoCorrDynamic.TermoTempDynamic.Str.TermoTempDynamic_13 = GyroP.Str.TDCool_13; break;
Kovalev_D 231:079835d508ef 369
Kovalev_D 231:079835d508ef 370
Kovalev_D 231:079835d508ef 371
Kovalev_D 227:2774b56bfab0 372 //case 0: Gyro.My_Addres = GyroP.Str.My_Addres; break;
Kovalev_D 226:4a4d5bd5fcd7 373 case 1: Gyro.HFO_ref = (unsigned int)(GyroP.Str.HFO_ref) ; break;
Kovalev_D 231:079835d508ef 374 case 2: Gyro.HFO_Gain = GyroP.Str.HFO_Gain; break;
Kovalev_D 225:f8fee6c586cc 375 case 3: if(Gyro.LG_Type) Gyro.HFO_Max=0xffff-GyroP.Str.DAC_current_Work; //((int)(GyroP.Str.DAC_current_Work*0.67)-2000);
Kovalev_D 211:ac8251b067d2 376 else Spi.DAC_A = ((((int)(GyroP.Str.DAC_current_Work+ 0x7fff)&0xffff)+22544)*0.65); break;
Kovalev_D 211:ac8251b067d2 377
Kovalev_D 225:f8fee6c586cc 378 case 4: if(Gyro.LG_Type) Gyro.HFO_Min=0xffff-GyroP.Str.DAC_current_Start; break; //((int)(GyroP.Str.DAC_current_Start*0.67)-2000); break;
Kovalev_D 208:19150d2b528f 379
Kovalev_D 222:7de7b3bf3a1d 380 case 5: Gyro.TimeToJump = GyroP.Str.TimeToJump; break;
Kovalev_D 222:7de7b3bf3a1d 381 case 6: Gyro.JumpDelta = GyroP.Str.JumpDelta; break;
Kovalev_D 222:7de7b3bf3a1d 382
Kovalev_D 209:224e7331a061 383 case 7: Gyro.PLC_Phase = GyroP.Str.PLC_Phase; break;
Kovalev_D 209:224e7331a061 384 case 8: Gyro.PLC_Gain = GyroP.Str.PLC_Gain; break;
Kovalev_D 209:224e7331a061 385 case 12: Gyro.FrqPhase = GyroP.Str.FrqPhase; break;
Kovalev_D 209:224e7331a061 386 case 13: Gyro.FrqChengSpeed = GyroP.Str.FrqChengSpeed; break;
Kovalev_D 209:224e7331a061 387
Kovalev_D 209:224e7331a061 388 case 14: Gyro.FrqHZ = (7680000 / GyroP.Str.FrqHZ);
Kovalev_D 209:224e7331a061 389 Gyro.Frq = (7680000 / GyroP.Str.FrqHZ)<<16;
Kovalev_D 208:19150d2b528f 390 break;
Kovalev_D 208:19150d2b528f 391
Kovalev_D 209:224e7331a061 392 case 15: Gyro.FrqHZmin = (7680000 / GyroP.Str.FrqHZmin)<<16; break;
Kovalev_D 209:224e7331a061 393 case 16: Gyro.FrqHZmax = (7680000 / GyroP.Str.FrqHZmax)<<16; break;
Kovalev_D 208:19150d2b528f 394
Kovalev_D 208:19150d2b528f 395 case 18: temp=((GyroP.Str.VB_Fdf_Hi<<16) | GyroP.Str.VB_Fdf_Lo);
Kovalev_D 225:f8fee6c586cc 396
Kovalev_D 218:b4067cac75c0 397 temp=temp*20;
Kovalev_D 218:b4067cac75c0 398 Gyro.AmpTarget=(unsigned int)(temp);
Kovalev_D 208:19150d2b528f 399 break;
Kovalev_D 208:19150d2b528f 400
Kovalev_D 209:224e7331a061 401 case 19: Gyro.AmpSpeed = GyroP.Str.AmpSpeed; break;
Kovalev_D 209:224e7331a061 402 case 20: Gyro.AmpPerMin = GyroP.Str.AmpPerMin; break;
Kovalev_D 209:224e7331a061 403 case 21: Gyro.AmpPerMax = GyroP.Str.AmpPerMax; break;
Kovalev_D 208:19150d2b528f 404
Kovalev_D 208:19150d2b528f 405 case 22: Gyro.AmpPer = GyroP.Str.AmpPer;
Kovalev_D 208:19150d2b528f 406 Gyro.Amp = GyroP.Str.AmpPer<<16;
Kovalev_D 208:19150d2b528f 407 break;
Kovalev_D 208:19150d2b528f 408
Kovalev_D 209:224e7331a061 409 case 23: Gyro.AmpMin = GyroP.Str.AmpMin; break;
Kovalev_D 209:224e7331a061 410 case 24: Gyro.AmpTD = GyroP.Str.AmpTD; break;
Kovalev_D 209:224e7331a061 411 case 25: Gyro.AmpPerDel = GyroP.Str.AmpPerDel; break;
Kovalev_D 220:04c54405b82d 412 case 33: Gyro.ShiftMod = GyroP.Str.ShiftMod; break;
Kovalev_D 209:224e7331a061 413 case 34: Gyro.ModAmp = GyroP.Str.ModAmp; break;
Kovalev_D 208:19150d2b528f 414 case 56: Gyro.Gain_Sin = GyroP.Str.Gain_Sin;
Kovalev_D 208:19150d2b528f 415 Out_G_photo(Gyro.Gain_Sin, Gyro.Gain_Cos);
Kovalev_D 208:19150d2b528f 416 break;
Kovalev_D 208:19150d2b528f 417 case 57: Gyro.Gain_Cos = GyroP.Str.Gain_Cos;
Kovalev_D 208:19150d2b528f 418 Out_G_photo(Gyro.Gain_Sin, Gyro.Gain_Cos);
Kovalev_D 208:19150d2b528f 419 break;
Kovalev_D 209:224e7331a061 420 case 60: Gyro.GLD_Serial = GyroP.Str.GLD_Serial; break;
Kovalev_D 211:ac8251b067d2 421
Kovalev_D 211:ac8251b067d2 422
Kovalev_D 225:f8fee6c586cc 423 case 10: Gyro.DownTreshold = (unsigned int)((GyroP.Str.DownTreshold-0x7fff)&0xffff); break;
Kovalev_D 225:f8fee6c586cc 424 case 11: Gyro.HighTreshold = (unsigned int)((GyroP.Str.HighTreshold-0x7fff)&0xffff); break;
Kovalev_D 225:f8fee6c586cc 425
Kovalev_D 225:f8fee6c586cc 426 case 9: Gyro.PLCDelay = GyroP.Str.PLCDelay; break;
Kovalev_D 225:f8fee6c586cc 427
Kovalev_D 225:f8fee6c586cc 428 case 105:Gyro.ResetLevelCool = (unsigned int)((GyroP.Str.ResetLevelCool-0x7fff)&0xffff); break;
Kovalev_D 225:f8fee6c586cc 429 case 55: Gyro.ResetLevelHeat = (unsigned int)((GyroP.Str.ResetLevelHeat-0x7fff)&0xffff); break;
Kovalev_D 225:f8fee6c586cc 430
Kovalev_D 231:079835d508ef 431
Kovalev_D 231:079835d508ef 432 default : Gyro.ParamFlag=1;
Kovalev_D 231:079835d508ef 433
Kovalev_D 208:19150d2b528f 434 }
Kovalev_D 208:19150d2b528f 435
Kovalev_D 208:19150d2b528f 436 NP=0;
Kovalev_D 129:406995a91322 437
Kovalev_D 129:406995a91322 438 BuffTemp[0] = Gyro.SOC_Out;
Kovalev_D 129:406995a91322 439 BuffTemp[1] = Gyro.My_Addres;
Kovalev_D 129:406995a91322 440 BuffTemp[2] = Gyro.CMD_In;
Kovalev_D 208:19150d2b528f 441 BuffTemp[3] =0; //(//GyroP.Array[NP]>> 8) & 0xff;//старший байт требуемого параметра
Kovalev_D 129:406995a91322 442
Kovalev_D 129:406995a91322 443 Check(BuffTemp, 6);
Kovalev_D 129:406995a91322 444 WriteConN (BuffTemp,6);
Kovalev_D 222:7de7b3bf3a1d 445 if(flash){GyroP.Array[115]=0; flash=0; WriteFlash(); ReadFlash ();}
Kovalev_D 208:19150d2b528f 446
Kovalev_D 208:19150d2b528f 447
Kovalev_D 129:406995a91322 448 }
igor_v 0:8ad47e2b6f00 449 void CMD_Maintenance(void)
igor_v 0:8ad47e2b6f00 450 {
Kovalev_D 227:2774b56bfab0 451 unsigned int Temp;
Kovalev_D 231:079835d508ef 452
Kovalev_D 231:079835d508ef 453
Kovalev_D 231:079835d508ef 454 sprintf((Time),"%d %d\r\n", Spi.DAC_B, PlcWormDeltaout);
Kovalev_D 231:079835d508ef 455 WriteCon(Time);
Kovalev_D 231:079835d508ef 456
Kovalev_D 231:079835d508ef 457 /* sprintf((Time),"%d\r\n",convertStrToTime(__DATE__));
Kovalev_D 231:079835d508ef 458 WriteCon(Time);*/
Kovalev_D 231:079835d508ef 459
Kovalev_D 231:079835d508ef 460
Kovalev_D 231:079835d508ef 461
Kovalev_D 227:2774b56bfab0 462 Gyro.ModeOut = 0;
Kovalev_D 227:2774b56bfab0 463 Gyro.Device_Mode = 0;
Kovalev_D 218:b4067cac75c0 464 for(int q=0; q<64; q++)
Kovalev_D 218:b4067cac75c0 465 {
Kovalev_D 218:b4067cac75c0 466 BuffTemp[q]=0;
Kovalev_D 218:b4067cac75c0 467 }
Kovalev_D 208:19150d2b528f 468 //Gyro.DropDelayGLD = DropDelayGLD_0;//задержка на выдачу 45 микросекунд для любого адреса ГЛД
Kovalev_D 122:fbacb932a30b 469 BuffTemp[0] = Gyro.SOC_Out;
Kovalev_D 124:9ae09249f842 470 BuffTemp[1] = Gyro.My_Addres;
Kovalev_D 209:224e7331a061 471
Kovalev_D 231:079835d508ef 472 Temp = Gyro.Firmware_Version;//17543; //Gyro.Firmware_Version;
Kovalev_D 227:2774b56bfab0 473 BuffTemp[2] = (Temp >> 0) & 0xff;
Kovalev_D 227:2774b56bfab0 474 BuffTemp[3] = (Temp >> 8) & 0xff;
Kovalev_D 227:2774b56bfab0 475
Kovalev_D 227:2774b56bfab0 476 Temp = Gyro.GLD_Serial;
Kovalev_D 227:2774b56bfab0 477 BuffTemp[4]=(Temp >> 0) & 0xff;
Kovalev_D 227:2774b56bfab0 478 BuffTemp[5]=(Temp >> 8) & 0xff;
Kovalev_D 209:224e7331a061 479
igor_v 21:bc8c1cec3da6 480 Check(BuffTemp, 8);
igor_v 21:bc8c1cec3da6 481 WriteConN (BuffTemp,8);
Kovalev_D 121:bbae560cdd43 482
igor_v 0:8ad47e2b6f00 483 }
Kovalev_D 193:a0fe8bfc97e4 484 void CMD_B_Delta(void)
Kovalev_D 193:a0fe8bfc97e4 485 {
Kovalev_D 196:f76dbc081e63 486 Gyro.Event_500Hz=0;
Kovalev_D 205:775d54fdf646 487 Gyro.EXT_Latch=0;
Kovalev_D 193:a0fe8bfc97e4 488 unsigned int Temp;
Kovalev_D 193:a0fe8bfc97e4 489 BuffTemp[ 0] = Gyro.SOC_Out;
Kovalev_D 193:a0fe8bfc97e4 490 BuffTemp[ 1] = Gyro.My_Addres;
Kovalev_D 193:a0fe8bfc97e4 491
Kovalev_D 193:a0fe8bfc97e4 492 Temp = Gyro.CuruAngle;
Kovalev_D 193:a0fe8bfc97e4 493 Gyro.CuruAngle = 0;
Kovalev_D 193:a0fe8bfc97e4 494 BuffTemp[ 2] =(Temp >> 16) & 0xff;//младший байт разности счетчиков
Kovalev_D 193:a0fe8bfc97e4 495 BuffTemp[ 3] =(Temp >> 8) & 0xff;//младший байт разности счетчиков
Kovalev_D 193:a0fe8bfc97e4 496 BuffTemp[ 4] =(Temp >> 0) & 0xff;//младший байт разности счетчиков
Kovalev_D 193:a0fe8bfc97e4 497 BuffTemp[ 5] = 0x00000000;
Kovalev_D 193:a0fe8bfc97e4 498 Check(BuffTemp, 8);
Kovalev_D 193:a0fe8bfc97e4 499 WriteConN (BuffTemp,8);
Kovalev_D 193:a0fe8bfc97e4 500 }
Kovalev_D 165:b2bd0c810a4f 501
Kovalev_D 193:a0fe8bfc97e4 502 void CMD_Delta_Bins(void)
Kovalev_D 196:f76dbc081e63 503 { Gyro.Event_500Hz=0;
Kovalev_D 193:a0fe8bfc97e4 504 unsigned int Temp;
Kovalev_D 193:a0fe8bfc97e4 505 BuffTemp[ 0] = Gyro.SOC_Out;
Kovalev_D 193:a0fe8bfc97e4 506 BuffTemp[ 1] = Gyro.My_Addres;
Kovalev_D 193:a0fe8bfc97e4 507
Kovalev_D 193:a0fe8bfc97e4 508 Temp = Gyro.CuruAngle;
Kovalev_D 193:a0fe8bfc97e4 509 Gyro.CuruAngle = 0;
Kovalev_D 193:a0fe8bfc97e4 510
Kovalev_D 193:a0fe8bfc97e4 511 BuffTemp[ 2] =(Temp >> 24) & 0xff;//старший байт разности счетчиков
Kovalev_D 193:a0fe8bfc97e4 512 BuffTemp[ 3] =(Temp >> 16) & 0xff;//младший байт разности счетчиков
Kovalev_D 193:a0fe8bfc97e4 513 BuffTemp[ 4] =(Temp >> 8) & 0xff;//младший байт разности счетчиков
Kovalev_D 193:a0fe8bfc97e4 514 BuffTemp[ 5] =(Temp >> 0) & 0xff;//младший байт разности счетчиков
Kovalev_D 193:a0fe8bfc97e4 515 BuffTemp[ 6] = 0x0000;
Kovalev_D 193:a0fe8bfc97e4 516 Check(BuffTemp, 9);
Kovalev_D 193:a0fe8bfc97e4 517 WriteConN (BuffTemp,9);
Kovalev_D 193:a0fe8bfc97e4 518 }
Kovalev_D 193:a0fe8bfc97e4 519 void CMD_Delta_PS(void)
Kovalev_D 210:b02fa166315d 520 { int drob,Temp1;
Kovalev_D 210:b02fa166315d 521 float Temp2=0;
Kovalev_D 193:a0fe8bfc97e4 522 Gyro.EXT_Latch=0;
Kovalev_D 196:f76dbc081e63 523 Gyro.Event_500Hz=0;
Kovalev_D 122:fbacb932a30b 524 unsigned int Temp;
Kovalev_D 218:b4067cac75c0 525
Kovalev_D 218:b4067cac75c0 526
Kovalev_D 218:b4067cac75c0 527
Kovalev_D 124:9ae09249f842 528 BuffTemp[ 0] = Gyro.SOC_Out;
Kovalev_D 122:fbacb932a30b 529 BuffTemp[ 1] = Gyro.My_Addres;
Kovalev_D 208:19150d2b528f 530
Kovalev_D 209:224e7331a061 531 Gyro.CuruAngle = Gyro.CuruAngle + OldCuruAngle; //(72 град/с)
Kovalev_D 227:2774b56bfab0 532
Kovalev_D 214:4c70e452c491 533 OldCuruAngle=Gyro.CuruAngle & 0xf; //сохраняем 3 бит для след измирений
Kovalev_D 227:2774b56bfab0 534 Temp=Gyro.CuruAngle>>4;
Kovalev_D 227:2774b56bfab0 535 //приводим к форме вывода
Kovalev_D 209:224e7331a061 536 Gyro.CuruAngle = 0;
Kovalev_D 227:2774b56bfab0 537 //Temp=200;
Kovalev_D 124:9ae09249f842 538 BuffTemp[ 2] =(Temp >> 8) & 0xff;//старший байт разности счетчиков
Kovalev_D 124:9ae09249f842 539 BuffTemp[ 3] =(Temp >> 0) & 0xff;//младший байт разности счетчиков
Kovalev_D 124:9ae09249f842 540
Kovalev_D 124:9ae09249f842 541 BuffTemp[ 4] = CountParam;
Kovalev_D 124:9ae09249f842 542 switch(CountParam) {
Kovalev_D 182:ebcd2bc3be8f 543
Kovalev_D 124:9ae09249f842 544 //F_ras
Kovalev_D 124:9ae09249f842 545 case 0:
Kovalev_D 211:ac8251b067d2 546 OutDeltaPS = Gyro.F_ras;
Kovalev_D 211:ac8251b067d2 547 BuffTemp[5] = (OutDeltaPS >> 8) & 0xff;
Kovalev_D 124:9ae09249f842 548 break;
Kovalev_D 124:9ae09249f842 549
Kovalev_D 124:9ae09249f842 550 case 1:
Kovalev_D 211:ac8251b067d2 551 BuffTemp[5] = (OutDeltaPS >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 552 break;
Kovalev_D 208:19150d2b528f 553
Kovalev_D 124:9ae09249f842 554
Kovalev_D 124:9ae09249f842 555 //HFO
Kovalev_D 124:9ae09249f842 556 case 2:
Kovalev_D 227:2774b56bfab0 557
Kovalev_D 227:2774b56bfab0 558 OutDeltaPS = 0xffff - Spi.DAC_A;
Kovalev_D 211:ac8251b067d2 559 BuffTemp[5] = (OutDeltaPS >> 8) & 0xff;
Kovalev_D 124:9ae09249f842 560 break;
Kovalev_D 124:9ae09249f842 561
Kovalev_D 124:9ae09249f842 562 case 3:
Kovalev_D 211:ac8251b067d2 563 BuffTemp[5] = (OutDeltaPS >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 564 break;
Kovalev_D 124:9ae09249f842 565
Kovalev_D 124:9ae09249f842 566
Kovalev_D 124:9ae09249f842 567
Kovalev_D 124:9ae09249f842 568 //T_Vibro
Kovalev_D 124:9ae09249f842 569 case 4:
Kovalev_D 228:a8195e1b1123 570 OutDeltaPS = Gyro.Frq>>12;//(unsigned int)(7680000/(Gyro.Frq>>16));
Kovalev_D 211:ac8251b067d2 571 BuffTemp[5] = (OutDeltaPS >> 8) & 0xff;
Kovalev_D 124:9ae09249f842 572 break;
Kovalev_D 124:9ae09249f842 573
Kovalev_D 124:9ae09249f842 574 case 5:
Kovalev_D 211:ac8251b067d2 575 BuffTemp[5] = (OutDeltaPS >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 576 break;
Kovalev_D 124:9ae09249f842 577
Kovalev_D 124:9ae09249f842 578
Kovalev_D 124:9ae09249f842 579
Kovalev_D 124:9ae09249f842 580 //L_Vibro
Kovalev_D 124:9ae09249f842 581 case 6:
Kovalev_D 210:b02fa166315d 582 //Temp = Gyro.L_vibro>>1;
Kovalev_D 228:a8195e1b1123 583 OutDeltaPS = Gyro.AmpPer;
Kovalev_D 211:ac8251b067d2 584 BuffTemp[5] = (OutDeltaPS >> 8) & 0xff;
Kovalev_D 124:9ae09249f842 585
Kovalev_D 124:9ae09249f842 586 break;
Kovalev_D 124:9ae09249f842 587
Kovalev_D 124:9ae09249f842 588 case 7:
Kovalev_D 211:ac8251b067d2 589 BuffTemp[5] = (OutDeltaPS >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 590 break;
Kovalev_D 124:9ae09249f842 591
Kovalev_D 124:9ae09249f842 592
Kovalev_D 124:9ae09249f842 593
Kovalev_D 124:9ae09249f842 594 //Напряжение на регуляторе периметра
Kovalev_D 124:9ae09249f842 595 case 8:
Kovalev_D 227:2774b56bfab0 596 OutDeltaPS = ((Spi.DAC_B-0x7fff)&0xffff);
Kovalev_D 211:ac8251b067d2 597 BuffTemp[5] = (OutDeltaPS >> 8) & 0xff;
Kovalev_D 124:9ae09249f842 598
Kovalev_D 124:9ae09249f842 599 break;
Kovalev_D 124:9ae09249f842 600
Kovalev_D 124:9ae09249f842 601 case 9:
Kovalev_D 211:ac8251b067d2 602 BuffTemp[5] = (OutDeltaPS >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 603 break;
Kovalev_D 124:9ae09249f842 604
Kovalev_D 124:9ae09249f842 605
Kovalev_D 124:9ae09249f842 606
Kovalev_D 124:9ae09249f842 607 //темпкратурный канал 0
Kovalev_D 124:9ae09249f842 608 case 10:
Kovalev_D 211:ac8251b067d2 609 OutDeltaPS = 0;
Kovalev_D 211:ac8251b067d2 610 BuffTemp[5] = (OutDeltaPS >> 8) & 0xff;
igor_v 0:8ad47e2b6f00 611
Kovalev_D 124:9ae09249f842 612 break;
Kovalev_D 124:9ae09249f842 613
Kovalev_D 124:9ae09249f842 614 case 11:
Kovalev_D 211:ac8251b067d2 615 BuffTemp[5] = (OutDeltaPS >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 616 break;
Kovalev_D 124:9ae09249f842 617
Kovalev_D 124:9ae09249f842 618
Kovalev_D 124:9ae09249f842 619
Kovalev_D 177:1666a83d88a5 620 //f
Kovalev_D 124:9ae09249f842 621 case 12:
Kovalev_D 211:ac8251b067d2 622 OutDeltaPS =0;//(unsigned int)(0x7fff-Spi.ADC5)*0.79;
Kovalev_D 210:b02fa166315d 623 // Temp = Gyro.AD_Slow >> 16;
Kovalev_D 211:ac8251b067d2 624 BuffTemp[5] = (OutDeltaPS >> 8) & 0xff;
Kovalev_D 124:9ae09249f842 625
Kovalev_D 124:9ae09249f842 626 break;
Kovalev_D 124:9ae09249f842 627
Kovalev_D 124:9ae09249f842 628 case 13:
Kovalev_D 211:ac8251b067d2 629 BuffTemp[5] = (OutDeltaPS >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 630 break;
Kovalev_D 124:9ae09249f842 631
Kovalev_D 124:9ae09249f842 632
Kovalev_D 124:9ae09249f842 633
Kovalev_D 124:9ae09249f842 634 //ток 1
Kovalev_D 124:9ae09249f842 635 case 14:
Kovalev_D 210:b02fa166315d 636 //Temp = Gyro.In1;
Kovalev_D 227:2774b56bfab0 637 IntOutDeltaPS = 0;//((Gyro.In1>>1)*0.800875)-0x3e0b;
Kovalev_D 211:ac8251b067d2 638 BuffTemp[5] = (IntOutDeltaPS >> 8) & 0xff;//in1//2
Kovalev_D 124:9ae09249f842 639
Kovalev_D 124:9ae09249f842 640 break;
Kovalev_D 124:9ae09249f842 641
Kovalev_D 124:9ae09249f842 642 case 15:
Kovalev_D 211:ac8251b067d2 643 BuffTemp[5] = (IntOutDeltaPS >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 644 break;
Kovalev_D 124:9ae09249f842 645
Kovalev_D 124:9ae09249f842 646
Kovalev_D 124:9ae09249f842 647
Kovalev_D 124:9ae09249f842 648 //ток 2
Kovalev_D 124:9ae09249f842 649 case 16:
Kovalev_D 210:b02fa166315d 650 // Temp = Gyro.In2;
Kovalev_D 227:2774b56bfab0 651 IntOutDeltaPS =0;// ((Gyro.In2>>1)*0.800875)-0x3e0b;
Kovalev_D 211:ac8251b067d2 652 BuffTemp[5] = (IntOutDeltaPS >> 8) & 0xff;
Kovalev_D 124:9ae09249f842 653 break;
Kovalev_D 124:9ae09249f842 654
Kovalev_D 124:9ae09249f842 655 case 17:
Kovalev_D 211:ac8251b067d2 656 BuffTemp[5] = (IntOutDeltaPS >> 0) & 0xff;//in2//3
Kovalev_D 124:9ae09249f842 657 break;
Kovalev_D 124:9ae09249f842 658
Kovalev_D 124:9ae09249f842 659
Kovalev_D 124:9ae09249f842 660
Kovalev_D 124:9ae09249f842 661 //разностный температурный канал Delta Temp
Kovalev_D 124:9ae09249f842 662 case 18:
Kovalev_D 211:ac8251b067d2 663 OutDeltaPS = 0;
Kovalev_D 211:ac8251b067d2 664 OutDeltaPS = Gyro.DeltaT;
Kovalev_D 211:ac8251b067d2 665 BuffTemp[5] = (OutDeltaPS >> 8) & 0xff;//дельта
Kovalev_D 124:9ae09249f842 666 break;
Kovalev_D 124:9ae09249f842 667
Kovalev_D 124:9ae09249f842 668 case 19:
Kovalev_D 211:ac8251b067d2 669 BuffTemp[5] = (OutDeltaPS >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 670 break;
Kovalev_D 124:9ae09249f842 671
Kovalev_D 124:9ae09249f842 672
Kovalev_D 124:9ae09249f842 673
Kovalev_D 124:9ae09249f842 674 //температурный канал 5
Kovalev_D 124:9ae09249f842 675 case 20:
Kovalev_D 211:ac8251b067d2 676 OutDeltaPS = 0;
Kovalev_D 227:2774b56bfab0 677 OutDeltaPS = Gyro.Termo;
Kovalev_D 211:ac8251b067d2 678 BuffTemp[5] =(OutDeltaPS >> 8) & 0xff;//температура
Kovalev_D 124:9ae09249f842 679 break;
Kovalev_D 124:9ae09249f842 680
Kovalev_D 124:9ae09249f842 681 case 21:
Kovalev_D 211:ac8251b067d2 682 BuffTemp[5] =(OutDeltaPS >> 0) & 0xff;//ADC6 sesnsor 5
Kovalev_D 211:ac8251b067d2 683 /* sprintf((Time),"%d %d \r\n", Spi.ADC1, Spi.ADC5 );
Kovalev_D 211:ac8251b067d2 684 WriteCon(Time);*/
Kovalev_D 124:9ae09249f842 685 break;
Kovalev_D 124:9ae09249f842 686 }
Kovalev_D 162:44e4ded32c6a 687 Check(BuffTemp, CRC_N);
Kovalev_D 162:44e4ded32c6a 688 WriteConN (BuffTemp,CRC_N);
Kovalev_D 128:1e4675a36c93 689
Kovalev_D 165:b2bd0c810a4f 690
Kovalev_D 165:b2bd0c810a4f 691 if(CountParam>20)CountParam=0;//зацикливания буфера от 0 до 21
Kovalev_D 165:b2bd0c810a4f 692 else CountParam++;
Kovalev_D 124:9ae09249f842 693
Kovalev_D 124:9ae09249f842 694 }
Kovalev_D 124:9ae09249f842 695
Kovalev_D 222:7de7b3bf3a1d 696
Kovalev_D 222:7de7b3bf3a1d 697 void M_Rate5K(void)
Kovalev_D 222:7de7b3bf3a1d 698 {
Kovalev_D 222:7de7b3bf3a1d 699
Kovalev_D 225:f8fee6c586cc 700 unsigned int Temp;
Kovalev_D 222:7de7b3bf3a1d 701 //Temp=Gyro.CuruAngle; //приводим к форме вывода
Kovalev_D 222:7de7b3bf3a1d 702 BuffTemp[ 3] =(Gyro.CuruAngle >> 8) & 0xff;//старший байт разности счетчиков 7 --младший байт разности счетчиков
Kovalev_D 222:7de7b3bf3a1d 703 BuffTemp[ 2] =(Gyro.CuruAngle >> 0) & 0xff;//младший байт разности счетчиков 8 --старший байт разности счетчиков
Kovalev_D 222:7de7b3bf3a1d 704 Gyro.CuruAngle=0;
Kovalev_D 222:7de7b3bf3a1d 705
Kovalev_D 222:7de7b3bf3a1d 706
Kovalev_D 225:f8fee6c586cc 707 Temp = ((Spi.DAC_B-0x7fff)&0xffff);
Kovalev_D 222:7de7b3bf3a1d 708 BuffTemp[5] = (Spi.DAC_B >> 8) & 0xff; //23 Выход регулятора рабочего периметра
Kovalev_D 222:7de7b3bf3a1d 709 BuffTemp[4] = (Spi.DAC_B >> 0) & 0xff;
Kovalev_D 222:7de7b3bf3a1d 710
Kovalev_D 225:f8fee6c586cc 711
Kovalev_D 225:f8fee6c586cc 712 Temp = 0xffff - Spi.DAC_A;
Kovalev_D 222:7de7b3bf3a1d 713 BuffTemp[7] =(Temp >> 8) & 0xff;//выход регулятора гвч; 11 --выход регулятора ГВЧ
Kovalev_D 222:7de7b3bf3a1d 714 BuffTemp[6] =(Temp >> 0) & 0xff;
Kovalev_D 222:7de7b3bf3a1d 715
Kovalev_D 222:7de7b3bf3a1d 716 /* sprintf((Time),"%d %d %d\r\n",Gyro.CuruAngle,(Spi.DAC_B-0x7fff),Temp);
Kovalev_D 222:7de7b3bf3a1d 717 WriteCon(Time);*/
Kovalev_D 222:7de7b3bf3a1d 718
Kovalev_D 222:7de7b3bf3a1d 719 //Check(BuffTemp, 7);
Kovalev_D 222:7de7b3bf3a1d 720 WriteConN (BuffTemp,8);
Kovalev_D 222:7de7b3bf3a1d 721 Gyro.EvenRate5K++;
Kovalev_D 222:7de7b3bf3a1d 722 }
Kovalev_D 222:7de7b3bf3a1d 723
Kovalev_D 222:7de7b3bf3a1d 724
igor_v 0:8ad47e2b6f00 725 void CMD_Rate(void)
Kovalev_D 190:289514f730ee 726 {
Kovalev_D 231:079835d508ef 727
Kovalev_D 231:079835d508ef 728
Kovalev_D 231:079835d508ef 729
Kovalev_D 231:079835d508ef 730
Kovalev_D 124:9ae09249f842 731 Gyro.Rate1_Event=0;
Kovalev_D 108:030cdde08314 732 unsigned int Temp;
Kovalev_D 208:19150d2b528f 733 int Temp1;
Kovalev_D 209:224e7331a061 734 float Temp2;
Kovalev_D 122:fbacb932a30b 735
Kovalev_D 208:19150d2b528f 736 BuffTemp[ 0] = Gyro.SOC_Out; //1 --старт данных
Kovalev_D 208:19150d2b528f 737 BuffTemp[ 1] = Gyro.My_Addres; //2 --адрес отвечающего устройствва
igor_v 21:bc8c1cec3da6 738
Kovalev_D 209:224e7331a061 739 BuffTemp[ 2] =( Gyro.CaunPlusReper >> 8) & 0xff;//старший байт счетчика +. 3 --сарший байт счентчика +
Kovalev_D 209:224e7331a061 740 BuffTemp[ 3] =( Gyro.CaunPlusReper >> 0) & 0xff;//младший байт счетчика +. 4 --младший байт счетчика +
Kovalev_D 211:ac8251b067d2 741
Kovalev_D 231:079835d508ef 742 BuffTemp[ 4] =( Gyro.CaunMinReper >> 8) & 0xff;//старший байт счетчика -. 5 --сарший байт счентчика -
Kovalev_D 231:079835d508ef 743 BuffTemp[ 5] =( Gyro.CaunMinReper >> 0) & 0xff;//младший байт счетчика -. 6 --младший байт счетчика -
Kovalev_D 211:ac8251b067d2 744
Kovalev_D 209:224e7331a061 745 Gyro.CuruAngle = Gyro.CuruAngle + OldCuruAngle; //(72 град/с)
Kovalev_D 214:4c70e452c491 746 OldCuruAngle=Gyro.CuruAngle & 0x3f; //сохраняем 5 бит для след измирений
Kovalev_D 214:4c70e452c491 747 Temp=Gyro.CuruAngle>>6; //приводим к форме вывода
Kovalev_D 211:ac8251b067d2 748
Kovalev_D 231:079835d508ef 749 Gyro.AngelCompens=0;
Kovalev_D 208:19150d2b528f 750 Gyro.CuruAngle = 0;
Kovalev_D 208:19150d2b528f 751 BuffTemp[ 6] =(Temp >> 8) & 0xff;//старший байт разности счетчиков 7 --младший байт разности счетчиков
Kovalev_D 208:19150d2b528f 752 BuffTemp[ 7] =(Temp >> 0) & 0xff;//младший байт разности счетчиков 8 --старший байт разности счетчиков
Kovalev_D 108:030cdde08314 753
Kovalev_D 231:079835d508ef 754
Kovalev_D 208:19150d2b528f 755 BuffTemp[38] =(Temp >> 24) & 0xff;; //39 приращение угла
Kovalev_D 208:19150d2b528f 756 BuffTemp[39] =(Temp >> 16) & 0xff;; //40 формат 22.10
Kovalev_D 208:19150d2b528f 757 BuffTemp[40] =(Temp >> 8) & 0xff;; //41 1бит знак
Kovalev_D 208:19150d2b528f 758 BuffTemp[41] =(Temp >> 0) & 0xff;; //42
Kovalev_D 209:224e7331a061 759
Kovalev_D 208:19150d2b528f 760 Temp = Gyro.F_ras;
Kovalev_D 209:224e7331a061 761 //Gyro.F_ras=0;
Kovalev_D 208:19150d2b528f 762 BuffTemp[ 8] = (Temp >> 8) & 0xff;//расщипление частота 9 --частота расщипления
Kovalev_D 209:224e7331a061 763 BuffTemp[ 9] = (Temp >> 0) & 0xff;// 10 --частота расщипления
Kovalev_D 208:19150d2b528f 764
Kovalev_D 211:ac8251b067d2 765 //(unsigned int)((Gyro.DacIn+30000)*0.6667);
Kovalev_D 226:4a4d5bd5fcd7 766 Temp1 = 0xffff - Spi.DAC_A;
Kovalev_D 226:4a4d5bd5fcd7 767 BuffTemp[10] = (Temp1 >> 8) & 0xff;//выход регулятора гвч; 11 --выход регулятора ГВЧ
Kovalev_D 209:224e7331a061 768 BuffTemp[11] = (Temp1 >> 0) & 0xff; //12 --выход регулятора ГВЧ
Kovalev_D 209:224e7331a061 769
Kovalev_D 231:079835d508ef 770
Kovalev_D 226:4a4d5bd5fcd7 771 Temp =(int)(tempDeltaRegul); //для призмы
Kovalev_D 225:f8fee6c586cc 772 tempDeltaRegul=0;
Kovalev_D 208:19150d2b528f 773 BuffTemp[12]=(Temp >> 8) & 0xff;//// HFO 13 --сигнал ошибки регулятора ГВЧ
Kovalev_D 208:19150d2b528f 774 BuffTemp[13]=(Temp >> 0) & 0xff;//// 14 --сигнал ошибки регулятора ГВЧ
Kovalev_D 209:224e7331a061 775
Kovalev_D 209:224e7331a061 776 //Temp = (unsigned int)((7675000*16/(Gyro.Frq>>12)));
Kovalev_D 227:2774b56bfab0 777 Temp = Gyro.Frq>>12;//(unsigned int)(7680000/(Gyro.Frq>>16));
Kovalev_D 208:19150d2b528f 778 BuffTemp[14] = (Temp >> 8) & 0xff; //15 период вибропривода.(частота) T_Vibro
Kovalev_D 208:19150d2b528f 779 BuffTemp[15] = (Temp >> 0) & 0xff; //16 период вибропривода.
Kovalev_D 208:19150d2b528f 780
Kovalev_D 209:224e7331a061 781 Temp = Gyro.FrqPhaseEror<<2;//Spi.DAC_A-0x7fff;
Kovalev_D 209:224e7331a061 782 BuffTemp[16] = (Temp >> 8) & 0xff; //17 старший байт ФД регулятора периода вибропривода
Kovalev_D 209:224e7331a061 783 BuffTemp[17] = (Temp >> 0) & 0xff;
Kovalev_D 209:224e7331a061 784 /*sprintf((Time),"%d %d\r\n",Gyro.FrqPhaseEror, Gyro.FrqPhaseEror<<2);
Kovalev_D 209:224e7331a061 785 WriteCon(Time); */ //18
igor_v 21:bc8c1cec3da6 786
Kovalev_D 227:2774b56bfab0 787 Temp = Gyro.AmpPer/*>>1*/;//(unsigned int)(((7675000*16/200) * Gyro.AmpPer /(Gyro.Frq>>12)));
Kovalev_D 208:19150d2b528f 788 BuffTemp[18] = (Temp >> 8) & 0xff; //19 длительность импулься вибропривода(амплитуда)
Kovalev_D 208:19150d2b528f 789 BuffTemp[19] = (Temp >> 0) & 0xff; //20
Kovalev_D 210:b02fa166315d 790
Kovalev_D 208:19150d2b528f 791
Kovalev_D 208:19150d2b528f 792 Temp = 0x0;//Gyro.L_vibro<<2;
Kovalev_D 208:19150d2b528f 793 BuffTemp[20] = (Temp >> 8) & 0xff;//регулятор датчика угла поворота //21 старший байт регулятора датчика угла поворота
Kovalev_D 208:19150d2b528f 794 BuffTemp[21] = (Temp >> 0) & 0xff; //22
Kovalev_D 208:19150d2b528f 795
Kovalev_D 225:f8fee6c586cc 796 Temp1 =((Spi.DAC_B-0x7fff)&0xffff);///(3300+(0x7fff+(Spi.DAC_B*1.083)));
Kovalev_D 209:224e7331a061 797 BuffTemp[22] = (Temp1 >> 8) & 0xff; //23 Выход регулятора рабочего периметра
Kovalev_D 209:224e7331a061 798 BuffTemp[23] = (Temp1 >> 0) & 0xff;
Kovalev_D 209:224e7331a061 799 //24
Kovalev_D 211:ac8251b067d2 800
Kovalev_D 220:04c54405b82d 801 Temp = PLC_EROR;
Kovalev_D 220:04c54405b82d 802 PLC_EROR=0;
Kovalev_D 220:04c54405b82d 803
Kovalev_D 208:19150d2b528f 804 BuffTemp[24] = (Temp >> 8) & 0xff;// //25 ФД СРП
Kovalev_D 208:19150d2b528f 805 BuffTemp[25] = (Temp >> 0) & 0xff;// //26 ФД СРП
Kovalev_D 209:224e7331a061 806
Kovalev_D 209:224e7331a061 807 Temp =0;/* Gyro.AD_Slow >> 16*/;
Kovalev_D 208:19150d2b528f 808 BuffTemp[26] = (Temp >> 8) & 0xff; //27 ADC 0
Kovalev_D 208:19150d2b528f 809 BuffTemp[27] = (Temp >> 0) & 0xff; //28
Kovalev_D 113:8be429494918 810
Kovalev_D 209:224e7331a061 811 Temp =0; /*Gyro.AD_Slow >> 16*/;
Kovalev_D 208:19150d2b528f 812 BuffTemp[28] = (Temp >> 8) & 0xff; //29 ADC 1
Kovalev_D 208:19150d2b528f 813 BuffTemp[29] = (Temp >> 0) & 0xff; //30
Kovalev_D 113:8be429494918 814
Kovalev_D 220:04c54405b82d 815 Temp1 = 0;//((Gyro.In1>>1)*0.800875)-0x3e0b;
Kovalev_D 209:224e7331a061 816 BuffTemp[30] = (Temp1 >> 8) & 0xff;//in1//2 //31 ADC 2
Kovalev_D 209:224e7331a061 817 BuffTemp[31] = (Temp1 >> 0) & 0xff; //32
Kovalev_D 208:19150d2b528f 818
Kovalev_D 220:04c54405b82d 819 Temp1 =0;//((Gyro.In2>>1)*0.800875)-0x3e0b;// - 0x4FFF;
Kovalev_D 209:224e7331a061 820 BuffTemp[32] = (Temp1 >> 8) & 0xff; //33 ADC 3
Kovalev_D 209:224e7331a061 821 BuffTemp[33] = (Temp1 >> 0) & 0xff;//in2//3 //34
Kovalev_D 209:224e7331a061 822
Kovalev_D 208:19150d2b528f 823 Temp = (Gyro.DeltaT);
Kovalev_D 208:19150d2b528f 824 BuffTemp[34] = (Temp >> 8) & 0xff;//дельта //35 ADC 4
Kovalev_D 208:19150d2b528f 825 BuffTemp[35] = (Temp >> 0) & 0xff; //36
Kovalev_D 208:19150d2b528f 826 // Temp = 000;
Kovalev_D 208:19150d2b528f 827
Kovalev_D 208:19150d2b528f 828 Temp = Gyro.Termo;
Kovalev_D 208:19150d2b528f 829 BuffTemp[36] =(Temp >> 8) & 0xff;//температура //37 ADC 5
Kovalev_D 208:19150d2b528f 830 BuffTemp[37] =(Temp >> 0) & 0xff;//ADC6 sesnsor 5 //38
igor_v 21:bc8c1cec3da6 831
igor_v 21:bc8c1cec3da6 832 Check(BuffTemp, 44);
igor_v 21:bc8c1cec3da6 833 WriteConN (BuffTemp,44);
Kovalev_D 209:224e7331a061 834 for(int i=0; i<45;i++) {BuffTemp[i]=0;}
Kovalev_D 209:224e7331a061 835 }
Kovalev_D 209:224e7331a061 836
Kovalev_D 210:b02fa166315d 837 void CMD_Rate2(void)
Kovalev_D 210:b02fa166315d 838 {
Kovalev_D 210:b02fa166315d 839 unsigned int Temp;
Kovalev_D 225:f8fee6c586cc 840 //float y = 52646.45
Kovalev_D 210:b02fa166315d 841 Gyro.Reper_Event=0;
Kovalev_D 214:4c70e452c491 842 for(int q=0; q<64; q++)
Kovalev_D 214:4c70e452c491 843 {
Kovalev_D 214:4c70e452c491 844 BuffTemp[q]=0;
Kovalev_D 214:4c70e452c491 845 }
Kovalev_D 210:b02fa166315d 846 BuffTemp[ 0] = Gyro.SOC_Out;
Kovalev_D 210:b02fa166315d 847 BuffTemp[ 1] = Gyro.My_Addres;
Kovalev_D 216:189b0ea1dc38 848
Kovalev_D 211:ac8251b067d2 849 Temp=Gyro.CaunPlusReper;
Kovalev_D 211:ac8251b067d2 850
Kovalev_D 210:b02fa166315d 851 BuffTemp[ 2] =(Temp >> 8) & 0xff;//старший байт счетчика +.
Kovalev_D 210:b02fa166315d 852 BuffTemp[ 3] =(Temp >> 0) & 0xff;//младший байт счетчика +.
Kovalev_D 211:ac8251b067d2 853 //сохраняем 5 бит для след измирений
Kovalev_D 210:b02fa166315d 854
Kovalev_D 211:ac8251b067d2 855 Temp= Gyro.CaunMinReper;
Kovalev_D 211:ac8251b067d2 856
Kovalev_D 210:b02fa166315d 857 BuffTemp[ 4] =(Temp >> 8) & 0xff;//старший байт счетчика -.
Kovalev_D 210:b02fa166315d 858 BuffTemp[ 5] =(Temp >> 0) & 0xff;//младший байт счетчика -.
Kovalev_D 216:189b0ea1dc38 859
Kovalev_D 211:ac8251b067d2 860
Kovalev_D 210:b02fa166315d 861 Check(BuffTemp, 8);
Kovalev_D 210:b02fa166315d 862 WriteConN (BuffTemp,8);
Kovalev_D 210:b02fa166315d 863 }
Kovalev_D 210:b02fa166315d 864
Kovalev_D 210:b02fa166315d 865 void CMD_Rate3(void)
Kovalev_D 210:b02fa166315d 866 {
Kovalev_D 210:b02fa166315d 867 Gyro.Rate3_Event=0;
Kovalev_D 210:b02fa166315d 868 BuffTemp[ 0] = Gyro.SOC_Out;
Kovalev_D 210:b02fa166315d 869 BuffTemp[ 1] = Gyro.My_Addres;
Kovalev_D 210:b02fa166315d 870 BuffTemp[ 2] = 0xcc;//старший байт счетчика +.
Kovalev_D 210:b02fa166315d 871 BuffTemp[ 3] = 0xcc;//младший байт счетчика +.
Kovalev_D 210:b02fa166315d 872
Kovalev_D 210:b02fa166315d 873 BuffTemp[ 4] =0xBB;//старший байт счетчика -.
Kovalev_D 210:b02fa166315d 874 BuffTemp[ 5] =0xBB;//младший байт счетчика -.
Kovalev_D 210:b02fa166315d 875
Kovalev_D 210:b02fa166315d 876 Check(BuffTemp, 8);
Kovalev_D 210:b02fa166315d 877 WriteConN (BuffTemp,8);
Kovalev_D 210:b02fa166315d 878 }
Kovalev_D 210:b02fa166315d 879
Kovalev_D 209:224e7331a061 880 void CMD_M_Stymul()
Kovalev_D 209:224e7331a061 881 {
Kovalev_D 209:224e7331a061 882 int temp,Consol=0,HFO,b4;
Kovalev_D 209:224e7331a061 883 float Temp1;
Kovalev_D 209:224e7331a061 884 temp=BuffTemp[3];
Kovalev_D 209:224e7331a061 885
Kovalev_D 209:224e7331a061 886 b4 = temp;
Kovalev_D 209:224e7331a061 887 Consol = temp>>7;
Kovalev_D 209:224e7331a061 888 HFO = temp&0x3;// // (номер (код) ЦАПа 0...3, HFO - 3dac, PLC - 0DAC
Kovalev_D 209:224e7331a061 889
Kovalev_D 209:224e7331a061 890 temp = (((BuffTemp[4]<<8) | BuffTemp[5])&0xFFFF);
Kovalev_D 209:224e7331a061 891 if(HFO)
Kovalev_D 209:224e7331a061 892 {
Kovalev_D 209:224e7331a061 893 Gyro.DacIn=temp;
Kovalev_D 225:f8fee6c586cc 894 if(Gyro.LG_Type==1) Spi.DAC_A = 0xffff-Gyro.DacIn; //((unsigned int)((Gyro.DacIn+0x7011)*0.6667));
Kovalev_D 222:7de7b3bf3a1d 895 else Spi.DAC_A = (unsigned int)(0xffff-Gyro.DacIn); //Spi.DAC_A = ((unsigned int)((Gyro.DacIn+23200)*0.64));
Kovalev_D 209:224e7331a061 896 }
Kovalev_D 225:f8fee6c586cc 897
Kovalev_D 225:f8fee6c586cc 898 else Spi.DAC_B = (unsigned int)((temp-0x7fff)&0xffff);
Kovalev_D 227:2774b56bfab0 899 /*sprintf((Time),"%d %d \r\n", Spi.DAC_B, temp);
Kovalev_D 227:2774b56bfab0 900 WriteCon(Time); */
Kovalev_D 225:f8fee6c586cc 901 for(int q=0; q<64; q++)
Kovalev_D 218:b4067cac75c0 902 {
Kovalev_D 218:b4067cac75c0 903 BuffTemp[q]=0;
Kovalev_D 218:b4067cac75c0 904 }
Kovalev_D 209:224e7331a061 905 BuffTemp[0] = Gyro.SOC_Out; //DD
Kovalev_D 209:224e7331a061 906 BuffTemp[1] = Gyro.My_Addres; //00
Kovalev_D 209:224e7331a061 907 BuffTemp[2] = Gyro.CMD_In; //D9
Kovalev_D 209:224e7331a061 908 BuffTemp[3] =0;
Kovalev_D 209:224e7331a061 909 Check(BuffTemp, CRC_N);
Kovalev_D 209:224e7331a061 910 WriteConN (BuffTemp,CRC_N);
igor_v 0:8ad47e2b6f00 911 }
Kovalev_D 209:224e7331a061 912
Kovalev_D 179:2b4e6bc277df 913 void CMD_M_vib()
Kovalev_D 179:2b4e6bc277df 914 {
Kovalev_D 209:224e7331a061 915 unsigned int temp1,temp2,anser;
Kovalev_D 209:224e7331a061 916 temp1 = (((BuffTemp[4]<<8) | BuffTemp[5])&0xFFFF);
Kovalev_D 227:2774b56bfab0 917 Gyro.Frq = (temp1<<12);
Kovalev_D 227:2774b56bfab0 918 // Gyro.Frq = (122780000/temp1)<<12;
Kovalev_D 227:2774b56bfab0 919
Kovalev_D 227:2774b56bfab0 920 F_vib= (unsigned int)(825600000 / temp1);
Kovalev_D 227:2774b56bfab0 921 temp2 = (((BuffTemp[6]<<8) | BuffTemp[7])&0xFFFF);
Kovalev_D 227:2774b56bfab0 922
Kovalev_D 227:2774b56bfab0 923 sprintf((Time),"%d %d \r\n",temp1, temp2);
Kovalev_D 227:2774b56bfab0 924 WriteCon(Time);
Kovalev_D 227:2774b56bfab0 925 Gyro.AmpPer = temp2;
Kovalev_D 227:2774b56bfab0 926 Gyro.Amp = (Gyro.AmpPer<<17)/100;
Kovalev_D 227:2774b56bfab0 927 /* Gyro.AmpPer = ((((((Gyro.Frq>>12)*200)/16)*temp2)/7680000)/2);
Kovalev_D 227:2774b56bfab0 928 Gyro.Amp = (Gyro.AmpPer)<<17;*/
Kovalev_D 225:f8fee6c586cc 929
Kovalev_D 209:224e7331a061 930 BuffTemp[0] = Gyro.SOC_Out;
Kovalev_D 209:224e7331a061 931 BuffTemp[1] = Gyro.My_Addres;
Kovalev_D 209:224e7331a061 932 BuffTemp[2] = Gyro.CMD_In;
Kovalev_D 209:224e7331a061 933 BuffTemp[3] = 0x0;
Kovalev_D 209:224e7331a061 934 BuffTemp[4] = 0x0;
Kovalev_D 209:224e7331a061 935 Check(BuffTemp, CRC_N);
Kovalev_D 209:224e7331a061 936 WriteConN (BuffTemp,CRC_N);
Kovalev_D 179:2b4e6bc277df 937 }
igor_v 21:bc8c1cec3da6 938 void CMD_M_Control_D8()///установка\сброс регистров управления
igor_v 21:bc8c1cec3da6 939 {
Kovalev_D 209:224e7331a061 940 unsigned int bit=0,Pa=0;
Kovalev_D 209:224e7331a061 941 unsigned int SR=0,V=0,Bit_num=0,A=0;
Kovalev_D 209:224e7331a061 942 Pa = BuffTemp[3];
Kovalev_D 209:224e7331a061 943 SR = Pa >> 7;
Kovalev_D 209:224e7331a061 944 V = (Pa>>5)&0x3;
Kovalev_D 209:224e7331a061 945 A = (Pa>>4)&0x1;
Kovalev_D 209:224e7331a061 946 Bit_num = Pa & 0xf;
Kovalev_D 104:ab1cb4ff56b2 947
Kovalev_D 209:224e7331a061 948 switch (SR)
Kovalev_D 209:224e7331a061 949 {
Kovalev_D 209:224e7331a061 950 case 0:
Kovalev_D 209:224e7331a061 951 switch (A)
Kovalev_D 209:224e7331a061 952 {
Kovalev_D 209:224e7331a061 953 case 0:
Kovalev_D 209:224e7331a061 954 switch (Bit_num)
Kovalev_D 209:224e7331a061 955 {
Kovalev_D 209:224e7331a061 956 case 0x06: FrqOFF break;
Kovalev_D 209:224e7331a061 957 case 0x05: AVibOFF break;
Kovalev_D 209:224e7331a061 958 case 0x01: HFOOFF break;
Kovalev_D 209:224e7331a061 959 case 0x03: PlcOFF break;
Kovalev_D 222:7de7b3bf3a1d 960 case 0x02: Gyro.RgConA &= ~(1<<2); break;
Kovalev_D 209:224e7331a061 961 }
Kovalev_D 209:224e7331a061 962 break;
Kovalev_D 209:224e7331a061 963 case 1:
Kovalev_D 209:224e7331a061 964 switch (Bit_num)
Kovalev_D 209:224e7331a061 965 {
Kovalev_D 209:224e7331a061 966 case 0x00: Gyro.RgConB &= ~(1<<0); break;
Kovalev_D 209:224e7331a061 967 case 0x01: Gyro.RgConB &= ~(1<<1); break;
Kovalev_D 209:224e7331a061 968 case 0x02: Gyro.RgConB &= ~(1<<2); break;
Kovalev_D 209:224e7331a061 969 }
Kovalev_D 209:224e7331a061 970 break;
Kovalev_D 209:224e7331a061 971 }
Kovalev_D 209:224e7331a061 972
Kovalev_D 209:224e7331a061 973
Kovalev_D 209:224e7331a061 974 break;
Kovalev_D 209:224e7331a061 975 case 1:
Kovalev_D 209:224e7331a061 976 switch (A)
Kovalev_D 209:224e7331a061 977 {
Kovalev_D 209:224e7331a061 978 case 0:
Kovalev_D 209:224e7331a061 979 switch (Bit_num)
Kovalev_D 209:224e7331a061 980 {
Kovalev_D 222:7de7b3bf3a1d 981 case 0x06: FrqON break;
Kovalev_D 222:7de7b3bf3a1d 982 case 0x05: AVibON break;
Kovalev_D 222:7de7b3bf3a1d 983 case 0x01: HFOON break;
Kovalev_D 222:7de7b3bf3a1d 984 case 0x03: PlcON break;
Kovalev_D 222:7de7b3bf3a1d 985 case 0x02: Gyro.RgConA |= (1<<2); break;
Kovalev_D 209:224e7331a061 986 }
Kovalev_D 209:224e7331a061 987 break;
Kovalev_D 209:224e7331a061 988 case 1:
Kovalev_D 209:224e7331a061 989 switch (Bit_num)
Kovalev_D 209:224e7331a061 990 {
Kovalev_D 209:224e7331a061 991 case 0x00: Gyro.RgConB |= (1<<0); break;
Kovalev_D 209:224e7331a061 992 case 0x01: Gyro.RgConB |= (1<<1); break;
Kovalev_D 209:224e7331a061 993 case 0x02: Gyro.RgConB |= (1<<2); break;
Kovalev_D 209:224e7331a061 994 }
Kovalev_D 209:224e7331a061 995 break;
Kovalev_D 209:224e7331a061 996 }
Kovalev_D 209:224e7331a061 997 break;
Kovalev_D 209:224e7331a061 998 }
igor_v 30:17c84ed091b3 999 BuffTemp[0] = Gyro.SOC_Out; //DD
igor_v 30:17c84ed091b3 1000 BuffTemp[1] = Gyro.My_Addres; //00
igor_v 30:17c84ed091b3 1001 BuffTemp[2] = Gyro.CMD_In; //D8
Kovalev_D 209:224e7331a061 1002 switch (A)
Kovalev_D 209:224e7331a061 1003 {
Kovalev_D 209:224e7331a061 1004 case 0:
Kovalev_D 209:224e7331a061 1005 BuffTemp[ 4] =(Gyro.RgConA >> 8) & 0xff;
Kovalev_D 209:224e7331a061 1006 BuffTemp[ 5] =(Gyro.RgConA >> 0) & 0xff;
Kovalev_D 209:224e7331a061 1007 break;
Kovalev_D 209:224e7331a061 1008
Kovalev_D 209:224e7331a061 1009 case 1:
Kovalev_D 209:224e7331a061 1010 BuffTemp[ 4] =(Gyro.RgConB >> 8) & 0xff;
Kovalev_D 209:224e7331a061 1011 BuffTemp[ 5] =(Gyro.RgConB >> 0) & 0xff;
Kovalev_D 209:224e7331a061 1012 break;
Kovalev_D 209:224e7331a061 1013 }
Kovalev_D 209:224e7331a061 1014 Check(BuffTemp, CRC_N);
Kovalev_D 209:224e7331a061 1015 WriteConN (BuffTemp,CRC_N);
Kovalev_D 209:224e7331a061 1016 }
Kovalev_D 208:19150d2b528f 1017
igor_v 21:bc8c1cec3da6 1018 void CMD_M_Control_D9()///чтение регистров управления
igor_v 21:bc8c1cec3da6 1019 {
Kovalev_D 209:224e7331a061 1020 int bit,NReg,param=0;
igor_v 30:17c84ed091b3 1021 BuffTemp[0] = Gyro.SOC_Out; //DD
igor_v 30:17c84ed091b3 1022 BuffTemp[1] = Gyro.My_Addres; //00
igor_v 30:17c84ed091b3 1023 BuffTemp[2] = Gyro.CMD_In; //D9
Kovalev_D 209:224e7331a061 1024 param = BuffTemp[3];
Kovalev_D 209:224e7331a061 1025 if (param)
Kovalev_D 209:224e7331a061 1026 {
igor_v 21:bc8c1cec3da6 1027 BuffTemp[3]=1<<4;
igor_v 30:17c84ed091b3 1028 BuffTemp[4] = (Gyro.RgConB>>8 ) & 0xff;
igor_v 30:17c84ed091b3 1029 BuffTemp[5] = Gyro.RgConB & 0xff;
igor_v 21:bc8c1cec3da6 1030 }
Kovalev_D 209:224e7331a061 1031 else
Kovalev_D 209:224e7331a061 1032 {
Kovalev_D 209:224e7331a061 1033 BuffTemp[3]=0<<4;
Kovalev_D 209:224e7331a061 1034 BuffTemp[4] = (Gyro.RgConA>>8 )& 0xff;
Kovalev_D 209:224e7331a061 1035 BuffTemp[5] = Gyro.RgConA & 0xff;
Kovalev_D 209:224e7331a061 1036 }
igor_v 21:bc8c1cec3da6 1037 Check(BuffTemp, CRC_N);
igor_v 21:bc8c1cec3da6 1038 WriteConN (BuffTemp,CRC_N);
igor_v 21:bc8c1cec3da6 1039 }
igor_v 21:bc8c1cec3da6 1040 // (номер (код) ЦАПа 0...3, старший байт требуемого ЦАПа, младший байт треб ЦАПа)
Kovalev_D 209:224e7331a061 1041
Kovalev_D 209:224e7331a061 1042
Kovalev_D 194:8f3cb37a5541 1043
Kovalev_D 194:8f3cb37a5541 1044 void GLDStartDischarg(void)
Kovalev_D 208:19150d2b528f 1045 { TimeDischarg=0;
Kovalev_D 208:19150d2b528f 1046 Try=0;
Kovalev_D 194:8f3cb37a5541 1047 switch(Gyro.My_Addres)
Kovalev_D 194:8f3cb37a5541 1048 {//смещение поджига и подсветки в зависимости от адреса ГЛД
Kovalev_D 194:8f3cb37a5541 1049 case 0:
Kovalev_D 194:8f3cb37a5541 1050 Gyro.Discharg = StartDischarg << ShiftStart0;
Kovalev_D 194:8f3cb37a5541 1051 Gyro.BackLight = StartBackLight << ShiftStart0;
Kovalev_D 194:8f3cb37a5541 1052 break;
Kovalev_D 194:8f3cb37a5541 1053 case 1:
Kovalev_D 194:8f3cb37a5541 1054 Gyro.Discharg = StartDischarg << ShiftStart1;
Kovalev_D 194:8f3cb37a5541 1055 Gyro.BackLight = StartBackLight << ShiftStart1;
Kovalev_D 194:8f3cb37a5541 1056 break;
Kovalev_D 194:8f3cb37a5541 1057 case 2:
Kovalev_D 194:8f3cb37a5541 1058 Gyro.Discharg = StartDischarg << ShiftStart2;
Kovalev_D 194:8f3cb37a5541 1059 Gyro.BackLight = StartBackLight << ShiftStart2;
Kovalev_D 194:8f3cb37a5541 1060 break;
Kovalev_D 194:8f3cb37a5541 1061 case 3:
Kovalev_D 194:8f3cb37a5541 1062 Gyro.Discharg = StartDischarg << ShiftStart3;
Kovalev_D 194:8f3cb37a5541 1063 Gyro.BackLight = StartBackLight << ShiftStart3;
Kovalev_D 194:8f3cb37a5541 1064 break;
Kovalev_D 194:8f3cb37a5541 1065 }
Kovalev_D 194:8f3cb37a5541 1066 }
Kovalev_D 194:8f3cb37a5541 1067
Kovalev_D 103:e96f08947def 1068 void Gph_W()
Kovalev_D 103:e96f08947def 1069 {
Kovalev_D 205:775d54fdf646 1070 //Gyro.flagGph_W=3;
Kovalev_D 208:19150d2b528f 1071
Kovalev_D 172:ef7bf1663645 1072 Out_G_photo(BuffTemp[4],BuffTemp[5]);
Kovalev_D 209:224e7331a061 1073 BuffTemp[0] = Gyro.SOC_Out; //DD
Kovalev_D 209:224e7331a061 1074 BuffTemp[1] = Gyro.My_Addres; //00
Kovalev_D 209:224e7331a061 1075 BuffTemp[2] = Gyro.CMD_In; //D9
Kovalev_D 209:224e7331a061 1076 BuffTemp[3] = 0;
Kovalev_D 209:224e7331a061 1077 Check(BuffTemp, CRC_N);
Kovalev_D 209:224e7331a061 1078 WriteConN (BuffTemp,CRC_N);
Kovalev_D 103:e96f08947def 1079 }
Kovalev_D 209:224e7331a061 1080 void DeviceMode()
Kovalev_D 209:224e7331a061 1081 {
Kovalev_D 209:224e7331a061 1082 int TempMod=1;
Kovalev_D 209:224e7331a061 1083 BuffTemp[0] = Gyro.SOC_Out; //DD
Kovalev_D 209:224e7331a061 1084 BuffTemp[1] = Gyro.My_Addres; //00
Kovalev_D 209:224e7331a061 1085 BuffTemp[2] = Gyro.CMD_In; //D9
Kovalev_D 209:224e7331a061 1086 TempMod = BuffTemp[3] & 0xf;
Kovalev_D 226:4a4d5bd5fcd7 1087 Gyro.Device_Mode = TempMod;
Kovalev_D 226:4a4d5bd5fcd7 1088
Kovalev_D 226:4a4d5bd5fcd7 1089 sprintf((Time)," Comand - DeviceMode(); Gyro.Device_Mode = %d Gyro.ModeOut = %d\r\n",Gyro.Device_Mode,Gyro.ModeOut);
Kovalev_D 226:4a4d5bd5fcd7 1090 WriteCon(Time);
Kovalev_D 226:4a4d5bd5fcd7 1091 /*
Kovalev_D 226:4a4d5bd5fcd7 1092 sprintf((Time),"%d\r\n",Gyro.Device_Mode);
Kovalev_D 226:4a4d5bd5fcd7 1093 WriteCon(Time);*/
Kovalev_D 226:4a4d5bd5fcd7 1094 BuffTemp[3]=Gyro.Device_Mode & 0xff;
Kovalev_D 209:224e7331a061 1095 BuffTemp[4]=0;
Kovalev_D 209:224e7331a061 1096 BuffTemp[5]=0;
Kovalev_D 209:224e7331a061 1097 Check(BuffTemp, CRC_N);
Kovalev_D 209:224e7331a061 1098 WriteConN (BuffTemp,CRC_N);
Kovalev_D 209:224e7331a061 1099 }
Kovalev_D 102:4270092be987 1100
igor_v 0:8ad47e2b6f00 1101 unsigned int Check(char *c, unsigned int Count)
igor_v 0:8ad47e2b6f00 1102 {
igor_v 21:bc8c1cec3da6 1103 int i=1;
igor_v 21:bc8c1cec3da6 1104 unsigned int temp,CRC;
igor_v 21:bc8c1cec3da6 1105
igor_v 21:bc8c1cec3da6 1106
igor_v 21:bc8c1cec3da6 1107 temp=1;
igor_v 21:bc8c1cec3da6 1108 CRC=0;
igor_v 21:bc8c1cec3da6 1109
igor_v 21:bc8c1cec3da6 1110
igor_v 21:bc8c1cec3da6 1111 for(; i<Count-2; i++) {
igor_v 21:bc8c1cec3da6 1112 CRC+=c[i];
igor_v 21:bc8c1cec3da6 1113 }
igor_v 0:8ad47e2b6f00 1114
igor_v 21:bc8c1cec3da6 1115 if(c[Count-2]!=((CRC>>8)&0xFF)) {
igor_v 21:bc8c1cec3da6 1116 temp=0;
igor_v 30:17c84ed091b3 1117 Gyro.RsErrLine = (Gyro.RsErrLine)&=0x2;
igor_v 21:bc8c1cec3da6 1118 }
igor_v 0:8ad47e2b6f00 1119
igor_v 21:bc8c1cec3da6 1120 if(c[Count-1]!=((CRC>>0)&0xFF)) {
igor_v 21:bc8c1cec3da6 1121 temp=0;
igor_v 30:17c84ed091b3 1122 // Gyro.RsErrLine= (Gyro.RsErrLine)=0x2;
igor_v 21:bc8c1cec3da6 1123 }
igor_v 21:bc8c1cec3da6 1124
igor_v 21:bc8c1cec3da6 1125 c[Count-2]=(CRC>>8)&0xFF;
igor_v 21:bc8c1cec3da6 1126 c[Count-1]=(CRC>>0)&0xFF;
igor_v 21:bc8c1cec3da6 1127
igor_v 21:bc8c1cec3da6 1128 return temp;
igor_v 0:8ad47e2b6f00 1129 }
igor_v 0:8ad47e2b6f00 1130
igor_v 0:8ad47e2b6f00 1131 int Getlengf(void)
igor_v 0:8ad47e2b6f00 1132 {
Kovalev_D 121:bbae560cdd43 1133 unsigned int lengf;
Kovalev_D 121:bbae560cdd43 1134 lengf = 1;
Kovalev_D 194:8f3cb37a5541 1135 switch(Gyro.CMD_In)
Kovalev_D 194:8f3cb37a5541 1136 {
Kovalev_D 194:8f3cb37a5541 1137 case 0x99: lengf=6; CRC_N=8; break; //Mintainance
Kovalev_D 194:8f3cb37a5541 1138 case 0xB0: lengf=6; CRC_N=9; break; //Delta_Bins
Kovalev_D 194:8f3cb37a5541 1139 case 0x0F: lengf=6; CRC_N=8; break; //Delta_Bins
Kovalev_D 194:8f3cb37a5541 1140 case 0xA0: lengf=6; CRC_N=8; break; //Delta_PS
Kovalev_D 194:8f3cb37a5541 1141 case 0xDD: lengf=6; CRC_N=44; break; //m_rate
Kovalev_D 209:224e7331a061 1142 case 0x0A: lengf=8; CRC_N=6; break; //m_stymul
Kovalev_D 194:8f3cb37a5541 1143 case 0xE9: lengf=6; CRC_N=8; break; //DeviceMode
Kovalev_D 194:8f3cb37a5541 1144 case 0xE8: lengf=6; CRC_N=8; break; //DeviceMode
Kovalev_D 194:8f3cb37a5541 1145 case 0xA5: lengf=6; CRC_N=8; break; //DeviceMode
Kovalev_D 209:224e7331a061 1146 case 0xD8: lengf=6; CRC_N=8; break; //m_control
Kovalev_D 194:8f3cb37a5541 1147 case 0xD9: lengf=6; CRC_N=8; break; //m_control
Kovalev_D 209:224e7331a061 1148 case 0xE4: lengf=8; CRC_N=6; break; //M_VIB_W
Kovalev_D 209:224e7331a061 1149 case 0xE6: lengf=8; CRC_N=6; break; //M_Gph_W
Kovalev_D 209:224e7331a061 1150
Kovalev_D 194:8f3cb37a5541 1151 } return lengf;
igor_v 0:8ad47e2b6f00 1152 }
igor_v 0:8ad47e2b6f00 1153
igor_v 0:8ad47e2b6f00 1154 void Read_CMD(void)
igor_v 21:bc8c1cec3da6 1155 {
Kovalev_D 188:4c523cc373cc 1156
Kovalev_D 147:1aed74f19a8f 1157 Gyro.RsErrLine = (Gyro.RsErrLine)& 0xffff;//для сброса ошибки
Kovalev_D 188:4c523cc373cc 1158 CountBuFFIn=ReadChekCon1(BuffTemp);
Kovalev_D 188:4c523cc373cc 1159 // чтение данных из консоли
Kovalev_D 188:4c523cc373cc 1160 if(CountBuFFIn==1) {
Kovalev_D 190:289514f730ee 1161 // если есть первый байт
Kovalev_D 209:224e7331a061 1162 if (BuffTemp[0] != SOC_In)
Kovalev_D 209:224e7331a061 1163 {
Kovalev_D 147:1aed74f19a8f 1164 ReadCon1(BuffTemp);
Kovalev_D 194:8f3cb37a5541 1165 Gyro.RsErrLine += 0x100;
Kovalev_D 209:224e7331a061 1166 //BuffTemp[99]=Gyro.RsErrLine;
Kovalev_D 209:224e7331a061 1167 ReadCon1(BuffTemp);
Kovalev_D 209:224e7331a061 1168 }
Kovalev_D 147:1aed74f19a8f 1169 }
Kovalev_D 190:289514f730ee 1170 else if(CountBuFFIn==2) //если второй байт
Kovalev_D 194:8f3cb37a5541 1171 { // широковещаительный
Kovalev_D 209:224e7331a061 1172 if (BuffTemp[1] != Gyro.My_Addres /*|| BuffTemp[1] !=0x1f*/)
Kovalev_D 209:224e7331a061 1173 {
Kovalev_D 93:b3803774f110 1174 ReadCon1(BuffTemp);
Kovalev_D 194:8f3cb37a5541 1175 Gyro.RsErrLine += 0x1;
Kovalev_D 209:224e7331a061 1176 ReadCon1(BuffTemp);
Kovalev_D 188:4c523cc373cc 1177 }
Kovalev_D 147:1aed74f19a8f 1178 }
Kovalev_D 190:289514f730ee 1179 else if(CountBuFFIn==3) // если третий байт
Kovalev_D 147:1aed74f19a8f 1180 {
igor_v 30:17c84ed091b3 1181 Gyro.CMD_In=BuffTemp[2];
Kovalev_D 92:c892f0311aa7 1182 N=Getlengf();
Kovalev_D 92:c892f0311aa7 1183 }
Kovalev_D 92:c892f0311aa7 1184 else if(CountBuFFIn==4 && (N==6))
Kovalev_D 92:c892f0311aa7 1185 { // N - длина посылки аскглд(для записи параметров). определяется по коду команды в Getlengf();
igor_v 21:bc8c1cec3da6 1186 Param1=BuffTemp[3];
Kovalev_D 92:c892f0311aa7 1187 }
Kovalev_D 92:c892f0311aa7 1188 else if((CountBuFFIn==5)&&(N==7))
Kovalev_D 92:c892f0311aa7 1189 {
igor_v 21:bc8c1cec3da6 1190 Param1=BuffTemp[3];
igor_v 21:bc8c1cec3da6 1191 Param2=BuffTemp[4];
igor_v 0:8ad47e2b6f00 1192
Kovalev_D 92:c892f0311aa7 1193 }
Kovalev_D 92:c892f0311aa7 1194 else if((CountBuFFIn==6)&&(N==8))
Kovalev_D 147:1aed74f19a8f 1195 {
igor_v 21:bc8c1cec3da6 1196 Param1=BuffTemp[3];
igor_v 21:bc8c1cec3da6 1197 Param2=BuffTemp[4];
igor_v 21:bc8c1cec3da6 1198 Param3=BuffTemp[5];
Kovalev_D 92:c892f0311aa7 1199 }
Kovalev_D 102:4270092be987 1200 else if((CountBuFFIn==8)&&(N==10))
Kovalev_D 147:1aed74f19a8f 1201 {
Kovalev_D 102:4270092be987 1202 Param1=BuffTemp[4];
Kovalev_D 102:4270092be987 1203 Param2=BuffTemp[5];
Kovalev_D 102:4270092be987 1204 Param3=BuffTemp[6];
Kovalev_D 102:4270092be987 1205 Param4=BuffTemp[7];
Kovalev_D 102:4270092be987 1206 }
Kovalev_D 98:95b8e79f13e1 1207
Kovalev_D 92:c892f0311aa7 1208 else if(CountBuFFIn > (N-1))
Kovalev_D 92:c892f0311aa7 1209 {
Kovalev_D 147:1aed74f19a8f 1210 ReadCon1(BuffTemp);
Kovalev_D 208:19150d2b528f 1211
Kovalev_D 209:224e7331a061 1212 //if(SA)CMD_M_Stymul_Answer();
Kovalev_D 208:19150d2b528f 1213 // if(d8_anser)D8_Answer();
Kovalev_D 208:19150d2b528f 1214
Kovalev_D 147:1aed74f19a8f 1215 switch(Gyro.CMD_In) {
Kovalev_D 226:4a4d5bd5fcd7 1216 // case 0xA5: DeviceMode() ; break;
Kovalev_D 209:224e7331a061 1217 case 0x99: /*Gyro.ModeOut=0;*/CMD_Maintenance(); break;
Kovalev_D 209:224e7331a061 1218 case 0xD8: CMD_M_Control_D8(); break;
Kovalev_D 194:8f3cb37a5541 1219 case 0xE9: CMD_M_Param_R(); break; //чтение параметров
Kovalev_D 194:8f3cb37a5541 1220 case 0xE8: CMD_M_Param_W(); break; //запись параметра
Kovalev_D 194:8f3cb37a5541 1221 case 0xDA: GLDStartDischarg(); break;
Kovalev_D 194:8f3cb37a5541 1222 case 0xD9: CMD_M_Control_D9(); break;
Kovalev_D 208:19150d2b528f 1223 case 0x0A: CMD_M_Stymul(); break;
Kovalev_D 209:224e7331a061 1224 case 0xDD: TempParam=(BuffTemp[3]) & 0x9f; //Rate
Kovalev_D 193:a0fe8bfc97e4 1225 switch(TempParam) {
Kovalev_D 209:224e7331a061 1226 case Rate1 : CMD_Rate(); break;
Kovalev_D 226:4a4d5bd5fcd7 1227 //case Rate2 : Gyro.ModeOut=9; break;
Kovalev_D 209:224e7331a061 1228 case Rate3 : CMD_Rate3(); break;
Kovalev_D 194:8f3cb37a5541 1229 case PRate1 : Gyro.ModeOut=1; break;
Kovalev_D 214:4c70e452c491 1230 case PRate2 : Gyro.ModeOut=2; break;
Kovalev_D 214:4c70e452c491 1231 case PRate3 : Gyro.ModeOut=8; break;
Kovalev_D 214:4c70e452c491 1232 case Rate7 : CMD_Rate7(); break;
Kovalev_D 226:4a4d5bd5fcd7 1233 case PRate7 : Gyro.ModeOut=10; break;
Kovalev_D 222:7de7b3bf3a1d 1234 case Rate5K : M_Rate5K(); break;
Kovalev_D 222:7de7b3bf3a1d 1235 case PRate5K:
Kovalev_D 222:7de7b3bf3a1d 1236 if(Gyro.ModeOut){}
Kovalev_D 222:7de7b3bf3a1d 1237 else Gyro.ModeOut=11;
Kovalev_D 222:7de7b3bf3a1d 1238 break;
Kovalev_D 214:4c70e452c491 1239
Kovalev_D 193:a0fe8bfc97e4 1240 }
Kovalev_D 194:8f3cb37a5541 1241 break; //DropDelay(); выставка задержки для мультидропа сбрасывается в команде CMD_Maintenance() на () микросекунд;
Kovalev_D 226:4a4d5bd5fcd7 1242
Kovalev_D 226:4a4d5bd5fcd7 1243 case 0xA0: /*DropDelay();*/
Kovalev_D 226:4a4d5bd5fcd7 1244 // TempParam=(BuffTemp[3]) & 0x80; //Delta_PS
Kovalev_D 226:4a4d5bd5fcd7 1245
Kovalev_D 226:4a4d5bd5fcd7 1246 switch(Gyro.Device_Mode)
Kovalev_D 226:4a4d5bd5fcd7 1247 {
Kovalev_D 226:4a4d5bd5fcd7 1248 case 0: Gyro.ModeOut=3; Gyro.Event_500Hz=0; break;
Kovalev_D 226:4a4d5bd5fcd7 1249 case 4: Gyro.ModeOut=4; break;
Kovalev_D 226:4a4d5bd5fcd7 1250 }
Kovalev_D 226:4a4d5bd5fcd7 1251 sprintf((Time)," Comand - B_Delta_PS(); Gyro.Device_Mode = %d Gyro.ModeOut = %d\r\n", Gyro.Device_Mode, Gyro.ModeOut);
Kovalev_D 226:4a4d5bd5fcd7 1252 WriteCon(Time);
Kovalev_D 194:8f3cb37a5541 1253 break;
Kovalev_D 226:4a4d5bd5fcd7 1254
Kovalev_D 194:8f3cb37a5541 1255 case 0xB0: DropDelay(); TempParam = TempParam=(BuffTemp[3]>>7); //Delta_Bins
Kovalev_D 193:a0fe8bfc97e4 1256 switch(TempParam) {
Kovalev_D 196:f76dbc081e63 1257 case PDelta_Bins: Gyro.ModeOut=5; Gyro.Event_500Hz=0; break;
Kovalev_D 193:a0fe8bfc97e4 1258 case Delta_Bins : CMD_Delta_Bins(); break;
Kovalev_D 193:a0fe8bfc97e4 1259 }
Kovalev_D 194:8f3cb37a5541 1260 break;
Kovalev_D 194:8f3cb37a5541 1261 case 0x0F: DropDelay(); TempParam = (((BuffTemp[3])>>4) & 0x9); //B_Delta
Kovalev_D 193:a0fe8bfc97e4 1262 switch(TempParam) {
Kovalev_D 193:a0fe8bfc97e4 1263 case PB_Delta_EXT: Gyro.ModeOut=6; break;
Kovalev_D 196:f76dbc081e63 1264 case PB_Delta_INT: Gyro.ModeOut=7; Gyro.Event_500Hz=0; break;
Kovalev_D 193:a0fe8bfc97e4 1265 case B_Delta_EXT: CMD_B_Delta(); break;
Kovalev_D 193:a0fe8bfc97e4 1266 case B_Delta_INT: CMD_B_Delta(); break;
Kovalev_D 193:a0fe8bfc97e4 1267 }
Kovalev_D 194:8f3cb37a5541 1268 break;
Kovalev_D 194:8f3cb37a5541 1269 case 0xE4: CMD_M_vib(); break;
Kovalev_D 209:224e7331a061 1270 case 0xA5: DeviceMode(); break;
Kovalev_D 194:8f3cb37a5541 1271 case 0xE6: Gph_W(); break;
Kovalev_D 194:8f3cb37a5541 1272 Gyro.RsErrLine = 0;
Kovalev_D 194:8f3cb37a5541 1273 }
Kovalev_D 194:8f3cb37a5541 1274 }
Kovalev_D 147:1aed74f19a8f 1275 }
Kovalev_D 193:a0fe8bfc97e4 1276
Kovalev_D 193:a0fe8bfc97e4 1277
Kovalev_D 147:1aed74f19a8f 1278 void TechLog(void)
Kovalev_D 147:1aed74f19a8f 1279 {
Kovalev_D 208:19150d2b528f 1280 unsigned int temp=0;
Kovalev_D 225:f8fee6c586cc 1281 if (ReadCon (Time))
Kovalev_D 208:19150d2b528f 1282 {
Kovalev_D 214:4c70e452c491 1283 int a=0;
Kovalev_D 225:f8fee6c586cc 1284
Kovalev_D 225:f8fee6c586cc 1285
Kovalev_D 231:079835d508ef 1286 if (Time[0] == 'r')
Kovalev_D 231:079835d508ef 1287 { //Mod 250 Hz PLCRegul250();
Kovalev_D 231:079835d508ef 1288 // InitPlcFilt () ;
Kovalev_D 231:079835d508ef 1289 }
Kovalev_D 225:f8fee6c586cc 1290
Kovalev_D 225:f8fee6c586cc 1291 if (Time[0] == 'y')
Kovalev_D 225:f8fee6c586cc 1292 { //Mod 250 Hz PLCRegul250();
Kovalev_D 225:f8fee6c586cc 1293 if( Gyro.Debag) Gyro.Debag=0;
Kovalev_D 225:f8fee6c586cc 1294 else Gyro.Debag=1;
Kovalev_D 225:f8fee6c586cc 1295 }
Kovalev_D 225:f8fee6c586cc 1296 if (Time[0] == 'u')
Kovalev_D 225:f8fee6c586cc 1297 { //Mod 250 Hz PLCRegul250();
Kovalev_D 225:f8fee6c586cc 1298 if( Gyro.Debag2) Gyro.Debag2=0;
Kovalev_D 225:f8fee6c586cc 1299 else Gyro.Debag2=1;
Kovalev_D 225:f8fee6c586cc 1300 }
Kovalev_D 227:2774b56bfab0 1301 if (Time[0] == 'C') Spi.DAC_A+=32;
Kovalev_D 227:2774b56bfab0 1302 if (Time[0] == 'c') Spi.DAC_A-=32;
Kovalev_D 227:2774b56bfab0 1303
Kovalev_D 231:079835d508ef 1304
Kovalev_D 227:2774b56bfab0 1305 if (Time[0] == 'V') Spi.DAC_A+=160;
Kovalev_D 227:2774b56bfab0 1306 if (Time[0] == 'v') Spi.DAC_A-=160;
Kovalev_D 227:2774b56bfab0 1307
Kovalev_D 231:079835d508ef 1308 if (Time[0] == 'X') Spi.DAC_B+=1653;
Kovalev_D 231:079835d508ef 1309 if (Time[0] == 'x') Spi.DAC_B-=1653;
Kovalev_D 231:079835d508ef 1310 if (Time[0] == 'Z') Spi.DAC_B+=3306;
Kovalev_D 231:079835d508ef 1311 if (Time[0] == 'z') Spi.DAC_B-=3306;
Kovalev_D 147:1aed74f19a8f 1312 /////////////////////////////////////////////////////////////////
Kovalev_D 147:1aed74f19a8f 1313 ////////////////////////////////////////////////////////////////
Kovalev_D 147:1aed74f19a8f 1314 //////////////////////Выбор FlashMod///////////////////////////
Kovalev_D 147:1aed74f19a8f 1315 ////////////////////////////////////////////////////////////////
Kovalev_D 208:19150d2b528f 1316
Kovalev_D 225:f8fee6c586cc 1317 }
igor_v 0:8ad47e2b6f00 1318 }
igor_v 0:8ad47e2b6f00 1319
igor_v 0:8ad47e2b6f00 1320