forkd

Dependencies:   mbed

Fork of LGstaandart by Dmitry Kovalev

Committer:
Kovalev_D
Date:
Wed Jan 31 13:41:23 2018 +0000
Revision:
232:130a2b5003e6
Parent:
231:079835d508ef
static termocorr

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