forkd

Dependencies:   mbed

Fork of LG2 by Dmitry Kovalev

Committer:
Kovalev_D
Date:
Mon Apr 24 05:43:54 2017 +0000
Revision:
210:b02fa166315d
Parent:
209:224e7331a061
Child:
211:ac8251b067d2
123

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;
igor_v 21:bc8c1cec3da6 9 unsigned int Param1=0;
igor_v 21:bc8c1cec3da6 10 unsigned int Param2=0;
igor_v 21:bc8c1cec3da6 11 unsigned int Param3=0;
igor_v 21:bc8c1cec3da6 12 unsigned int Param4=0;
Kovalev_D 209:224e7331a061 13 ///unsigned int Consol=123;
Kovalev_D 121:bbae560cdd43 14 unsigned int TempParam=1;
Kovalev_D 124:9ae09249f842 15 unsigned int CountParam=0;
Kovalev_D 209:224e7331a061 16 unsigned int OldCuruAngle;
Kovalev_D 209:224e7331a061 17 unsigned int OldCaunPlus=0;
Kovalev_D 209:224e7331a061 18 unsigned int OldCaunMin=0;
Kovalev_D 209:224e7331a061 19 int ttemp,temp5=1;
Kovalev_D 197:7a05523bf588 20 int OLDDAC=0;
Kovalev_D 205:775d54fdf646 21 int rr = 123;
Kovalev_D 209:224e7331a061 22 unsigned int pDestT;
Kovalev_D 136:19b9e6abb86f 23 GyroParam *Flash;
Kovalev_D 209:224e7331a061 24
Kovalev_D 147:1aed74f19a8f 25 ///////////////flah and boot///////////
Kovalev_D 147:1aed74f19a8f 26 void GoBoot(void)
Kovalev_D 147:1aed74f19a8f 27 {
Kovalev_D 147:1aed74f19a8f 28 /* Prepare Sectors to be flashed */
Kovalev_D 147:1aed74f19a8f 29 NVIC_DisableIRQ(TIMER1_IRQn);
Kovalev_D 147:1aed74f19a8f 30 NVIC_DisableIRQ(TIMER2_IRQn);
Kovalev_D 147:1aed74f19a8f 31 NVIC_DisableIRQ(TIMER3_IRQn);
Kovalev_D 147:1aed74f19a8f 32 NVIC_DisableIRQ(EINT3_IRQn);
Kovalev_D 147:1aed74f19a8f 33 SystemInitDef();
Kovalev_D 147:1aed74f19a8f 34 vIAP_ReinvokeISP();
Kovalev_D 147:1aed74f19a8f 35 }
Kovalev_D 181:0b022246c43c 36
Kovalev_D 181:0b022246c43c 37 void DropDelay(void)
Kovalev_D 181:0b022246c43c 38 {
Kovalev_D 181:0b022246c43c 39 Gyro.DropDelayGLD = DropDelayGLD_0;
Kovalev_D 194:8f3cb37a5541 40 switch(Gyro.My_Addres) {
Kovalev_D 194:8f3cb37a5541 41 case 1: Gyro.DropDelayGLD = DropDelayGLD_1; break;
Kovalev_D 194:8f3cb37a5541 42 case 2: Gyro.DropDelayGLD = DropDelayGLD_2; break;
Kovalev_D 194:8f3cb37a5541 43 case 3: Gyro.DropDelayGLD = DropDelayGLD_3; break;
Kovalev_D 194:8f3cb37a5541 44 }
Kovalev_D 194:8f3cb37a5541 45
Kovalev_D 181:0b022246c43c 46 }
Kovalev_D 205:775d54fdf646 47 /*
Kovalev_D 147:1aed74f19a8f 48 void WriteFlash(void)
Kovalev_D 147:1aed74f19a8f 49 {
Kovalev_D 205:775d54fdf646 50
Kovalev_D 147:1aed74f19a8f 51 SystemInitDef();
Kovalev_D 147:1aed74f19a8f 52 WriteCon("\r\n Start Prepare Sectors");
Kovalev_D 205:775d54fdf646 53 if(u32IAP_PrepareSectors(5, 5) == IAP_STA_CMD_SUCCESS)
Kovalev_D 147:1aed74f19a8f 54 {
Kovalev_D 147:1aed74f19a8f 55 WriteCon("\r\nPrepare Sectors OK");
Kovalev_D 147:1aed74f19a8f 56 WriteCon("\r\n Start Erase");
Kovalev_D 147:1aed74f19a8f 57 u32IAP_EraseSectors(IMG_START_SECTOR, IMG_END_SECTOR);
Kovalev_D 147:1aed74f19a8f 58 WriteCon("\r\n AND Erase");
Kovalev_D 147:1aed74f19a8f 59 }
Kovalev_D 205:775d54fdf646 60 else WriteCon("\r\nPrepare Sectors ERROR ");
Kovalev_D 147:1aed74f19a8f 61 SystemInit1();
Kovalev_D 147:1aed74f19a8f 62 Gyro.FlashMod = 0;
Kovalev_D 169:140743e3bb96 63 }
Kovalev_D 205:775d54fdf646 64 */
Kovalev_D 205:775d54fdf646 65 void EraseFlash(void)
Kovalev_D 205:775d54fdf646 66 {
Kovalev_D 207:d1ce992f5d17 67 rr = u32IAP_PrepareSectors(19, 21);
Kovalev_D 209:224e7331a061 68 /*sprintf((Time)," dffddfd <%07d> ",rr);
Kovalev_D 209:224e7331a061 69 WriteCon(Time);*/
Kovalev_D 207:d1ce992f5d17 70 rr = u32IAP_EraseSectors(19, 21);
Kovalev_D 209:224e7331a061 71 /* sprintf((Time)," dffddfd <%07d> ",rr);
Kovalev_D 209:224e7331a061 72 WriteCon(Time);*/
Kovalev_D 205:775d54fdf646 73 }
Kovalev_D 205:775d54fdf646 74
Kovalev_D 205:775d54fdf646 75 void WriteFlash(void)
Kovalev_D 205:775d54fdf646 76
Kovalev_D 208:19150d2b528f 77 {
Kovalev_D 208:19150d2b528f 78 Gyro.FlashMod = 0;
Kovalev_D 205:775d54fdf646 79
Kovalev_D 205:775d54fdf646 80 //SystemInitDef();
Kovalev_D 205:775d54fdf646 81 NVIC_DisableIRQ(TIMER1_IRQn);
Kovalev_D 205:775d54fdf646 82 NVIC_DisableIRQ(TIMER2_IRQn);
Kovalev_D 205:775d54fdf646 83 NVIC_DisableIRQ(TIMER3_IRQn);
Kovalev_D 205:775d54fdf646 84 NVIC_DisableIRQ(EINT3_IRQn);
Kovalev_D 205:775d54fdf646 85
Kovalev_D 208:19150d2b528f 86 // unsigned int start_address = (unsigned int) & GyroP;
Kovalev_D 207:d1ce992f5d17 87 rr = u32IAP_PrepareSectors(19, 21);
Kovalev_D 208:19150d2b528f 88 rr = u32IAP_EraseSectors (19, 21);
Kovalev_D 207:d1ce992f5d17 89 rr = u32IAP_PrepareSectors(19, 21);
Kovalev_D 208:19150d2b528f 90 rr = u32IAP_CopyRAMToFlash(0x030000, &GyroP , 1024);
Kovalev_D 205:775d54fdf646 91 // SystemInit1(); // Инициализация контроллера: установка тактовых частот
Kovalev_D 205:775d54fdf646 92 //SystemCoreClockUpdate1(); // расчет тактовой частоты процессора перед инициализацией UART - 103MHz
Kovalev_D 205:775d54fdf646 93
Kovalev_D 205:775d54fdf646 94 NVIC_EnableIRQ(TIMER1_IRQn);
Kovalev_D 205:775d54fdf646 95 NVIC_EnableIRQ(TIMER2_IRQn);
Kovalev_D 205:775d54fdf646 96 NVIC_EnableIRQ(TIMER3_IRQn);
Kovalev_D 205:775d54fdf646 97 NVIC_EnableIRQ(EINT3_IRQn);
Kovalev_D 208:19150d2b528f 98 //SystemCoreClockUpdate1();
Kovalev_D 205:775d54fdf646 99
Kovalev_D 205:775d54fdf646 100 }
Kovalev_D 136:19b9e6abb86f 101 void ReadFlash ( void)
Kovalev_D 136:19b9e6abb86f 102 {
Kovalev_D 205:775d54fdf646 103 NVIC_DisableIRQ(TIMER1_IRQn);
Kovalev_D 205:775d54fdf646 104 NVIC_DisableIRQ(TIMER2_IRQn);
Kovalev_D 205:775d54fdf646 105 NVIC_DisableIRQ(TIMER3_IRQn);
Kovalev_D 205:775d54fdf646 106 NVIC_DisableIRQ(EINT3_IRQn);
Kovalev_D 147:1aed74f19a8f 107 Gyro.FlashMod = 0;
Kovalev_D 136:19b9e6abb86f 108 WriteCon("\r\n Pirivet Flash");
Kovalev_D 205:775d54fdf646 109
Kovalev_D 207:d1ce992f5d17 110 pDestT= (unsigned int) (0x030000);
Kovalev_D 136:19b9e6abb86f 111 Flash = (GyroParam*) pDestT;
Kovalev_D 136:19b9e6abb86f 112 GyroP = *(Flash);
Kovalev_D 205:775d54fdf646 113
Kovalev_D 205:775d54fdf646 114 NVIC_EnableIRQ(TIMER1_IRQn);
Kovalev_D 205:775d54fdf646 115 NVIC_EnableIRQ(TIMER2_IRQn);
Kovalev_D 205:775d54fdf646 116 NVIC_EnableIRQ(TIMER3_IRQn);
Kovalev_D 205:775d54fdf646 117 NVIC_EnableIRQ(EINT3_IRQn);
Kovalev_D 208:19150d2b528f 118 }
Kovalev_D 169:140743e3bb96 119 ///////////////end flah and boot///////////
Kovalev_D 191:40028201ddad 120 void M_RateA(void)
Kovalev_D 193:a0fe8bfc97e4 121 {
Kovalev_D 209:224e7331a061 122 switch(Gyro.ModeOut)
Kovalev_D 209:224e7331a061 123 {
Kovalev_D 193:a0fe8bfc97e4 124 case 1: if(Gyro.Rate1_Event ) CMD_Rate(); break;
Kovalev_D 209:224e7331a061 125 case 2: if(Gyro.Reper_Event ) CMD_Rate2(); break;
Kovalev_D 209:224e7331a061 126 case 8: if(Gyro.Rate3_Event ) CMD_Rate3(); break;
Kovalev_D 196:f76dbc081e63 127 case 3: if(Gyro.Event_500Hz ) CMD_Delta_PS(); break;
Kovalev_D 196:f76dbc081e63 128 case 4: if(Gyro.EXT_Latch ) CMD_Delta_PS(); break;
Kovalev_D 196:f76dbc081e63 129 case 5: if(Gyro.Event_500Hz ) CMD_Delta_Bins(); break;
Kovalev_D 205:775d54fdf646 130 case 6: if(Gyro.EXT_Latch ) CMD_B_Delta(); break;
Kovalev_D 196:f76dbc081e63 131 case 7: if(Gyro.Event_500Hz ) CMD_B_Delta(); break;
Kovalev_D 196:f76dbc081e63 132 }
Kovalev_D 191:40028201ddad 133 }
Kovalev_D 136:19b9e6abb86f 134
Kovalev_D 129:406995a91322 135 void CMD_M_Param_R(void)
igor_v 0:8ad47e2b6f00 136 {
Kovalev_D 208:19150d2b528f 137
Kovalev_D 208:19150d2b528f 138 unsigned int NP=0;
Kovalev_D 129:406995a91322 139 unsigned int Param;
Kovalev_D 208:19150d2b528f 140
Kovalev_D 208:19150d2b528f 141 NP = BuffTemp[3];
Kovalev_D 208:19150d2b528f 142
Kovalev_D 209:224e7331a061 143 for (int i=0;i<8;i++)
Kovalev_D 209:224e7331a061 144 {BuffTemp[i]=0;}
Kovalev_D 208:19150d2b528f 145
Kovalev_D 208:19150d2b528f 146
Kovalev_D 129:406995a91322 147 BuffTemp[0] = Gyro.SOC_Out;
Kovalev_D 129:406995a91322 148 BuffTemp[1] = Gyro.My_Addres;
Kovalev_D 129:406995a91322 149
Kovalev_D 208:19150d2b528f 150
Kovalev_D 209:224e7331a061 151 /* sprintf((Time),"%d = %d \r\n",NP, GyroP.Array[NP]);
Kovalev_D 209:224e7331a061 152 WriteCon(Time);*/
Kovalev_D 129:406995a91322 153 Param = GyroP.Array[NP];
Kovalev_D 208:19150d2b528f 154 BuffTemp[2] =(GyroP.Array[NP] >> 8) & 0xff;//старший байт требуемого параметра
Kovalev_D 208:19150d2b528f 155 BuffTemp[3] =(GyroP.Array[NP] >> 0) & 0xff;//младший байт требуемого параметра
Kovalev_D 129:406995a91322 156
Kovalev_D 129:406995a91322 157 Check(BuffTemp, 6);
Kovalev_D 129:406995a91322 158 WriteConN (BuffTemp,6);
Kovalev_D 205:775d54fdf646 159 /*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 160 WriteCon(Time);*/
Kovalev_D 208:19150d2b528f 161 NP=0;
Kovalev_D 129:406995a91322 162 }
Kovalev_D 129:406995a91322 163 void CMD_M_Param_W(void)
Kovalev_D 129:406995a91322 164 {
Kovalev_D 208:19150d2b528f 165 unsigned int NP=0;
Kovalev_D 208:19150d2b528f 166 unsigned int Param,temp,flash;
Kovalev_D 129:406995a91322 167
Kovalev_D 129:406995a91322 168 NP = BuffTemp[3];
Kovalev_D 129:406995a91322 169 Param = (BuffTemp[4]<<8);
Kovalev_D 129:406995a91322 170 Param |= BuffTemp[5];
Kovalev_D 129:406995a91322 171
Kovalev_D 208:19150d2b528f 172 GyroP.Array[NP] = Param;
Kovalev_D 208:19150d2b528f 173 flash=GyroP.Array[5];
Kovalev_D 209:224e7331a061 174
Kovalev_D 208:19150d2b528f 175 switch(NP)
Kovalev_D 208:19150d2b528f 176 {
Kovalev_D 209:224e7331a061 177 case 0: Gyro.My_Addres = GyroP.Str.My_Addres; break;
Kovalev_D 209:224e7331a061 178 case 3: Spi.DAC_A = ((((int)(GyroP.Str.DAC_current_Work+ 0x7fff)&0xffff)+22544)*0.65); break;
Kovalev_D 208:19150d2b528f 179
Kovalev_D 209:224e7331a061 180 case 7: Gyro.PLC_Phase = GyroP.Str.PLC_Phase; break;
Kovalev_D 209:224e7331a061 181 case 8: Gyro.PLC_Gain = GyroP.Str.PLC_Gain; break;
Kovalev_D 209:224e7331a061 182 case 12: Gyro.FrqPhase = GyroP.Str.FrqPhase; break;
Kovalev_D 209:224e7331a061 183 case 13: Gyro.FrqChengSpeed = GyroP.Str.FrqChengSpeed; break;
Kovalev_D 209:224e7331a061 184
Kovalev_D 209:224e7331a061 185 case 14: Gyro.FrqHZ = (7680000 / GyroP.Str.FrqHZ);
Kovalev_D 209:224e7331a061 186 Gyro.Frq = (7680000 / GyroP.Str.FrqHZ)<<16;
Kovalev_D 208:19150d2b528f 187 break;
Kovalev_D 208:19150d2b528f 188
Kovalev_D 209:224e7331a061 189 case 15: Gyro.FrqHZmin = (7680000 / GyroP.Str.FrqHZmin)<<16; break;
Kovalev_D 209:224e7331a061 190 case 16: Gyro.FrqHZmax = (7680000 / GyroP.Str.FrqHZmax)<<16; break;
Kovalev_D 208:19150d2b528f 191
Kovalev_D 208:19150d2b528f 192 case 18: temp=((GyroP.Str.VB_Fdf_Hi<<16) | GyroP.Str.VB_Fdf_Lo);
Kovalev_D 210:b02fa166315d 193 /*sprintf((Time),"%d \r\n", temp/32);
Kovalev_D 210:b02fa166315d 194 WriteCon(Time);*/
Kovalev_D 210:b02fa166315d 195 temp=temp*20;
Kovalev_D 208:19150d2b528f 196 Gyro.AmpTarget=(unsigned int)(temp);
Kovalev_D 208:19150d2b528f 197 break;
Kovalev_D 208:19150d2b528f 198
Kovalev_D 209:224e7331a061 199 case 19: Gyro.AmpSpeed = GyroP.Str.AmpSpeed; break;
Kovalev_D 209:224e7331a061 200 case 20: Gyro.AmpPerMin = GyroP.Str.AmpPerMin; break;
Kovalev_D 209:224e7331a061 201 case 21: Gyro.AmpPerMax = GyroP.Str.AmpPerMax; break;
Kovalev_D 208:19150d2b528f 202
Kovalev_D 208:19150d2b528f 203 case 22: Gyro.AmpPer = GyroP.Str.AmpPer;
Kovalev_D 208:19150d2b528f 204 Gyro.Amp = GyroP.Str.AmpPer<<16;
Kovalev_D 208:19150d2b528f 205 break;
Kovalev_D 208:19150d2b528f 206
Kovalev_D 209:224e7331a061 207 case 23: Gyro.AmpMin = GyroP.Str.AmpMin; break;
Kovalev_D 209:224e7331a061 208 case 24: Gyro.AmpTD = GyroP.Str.AmpTD; break;
Kovalev_D 209:224e7331a061 209 case 25: Gyro.AmpPerDel = GyroP.Str.AmpPerDel; break;
Kovalev_D 209:224e7331a061 210 case 34: Gyro.ModAmp = GyroP.Str.ModAmp; break;
Kovalev_D 208:19150d2b528f 211 case 56: Gyro.Gain_Sin = GyroP.Str.Gain_Sin;
Kovalev_D 208:19150d2b528f 212 Out_G_photo(Gyro.Gain_Sin, Gyro.Gain_Cos);
Kovalev_D 208:19150d2b528f 213 break;
Kovalev_D 208:19150d2b528f 214 case 57: Gyro.Gain_Cos = GyroP.Str.Gain_Cos;
Kovalev_D 208:19150d2b528f 215 Out_G_photo(Gyro.Gain_Sin, Gyro.Gain_Cos);
Kovalev_D 208:19150d2b528f 216 break;
Kovalev_D 209:224e7331a061 217 case 60: Gyro.GLD_Serial = GyroP.Str.GLD_Serial; break;
Kovalev_D 208:19150d2b528f 218 }
Kovalev_D 208:19150d2b528f 219
Kovalev_D 208:19150d2b528f 220 NP=0;
Kovalev_D 129:406995a91322 221
Kovalev_D 129:406995a91322 222 BuffTemp[0] = Gyro.SOC_Out;
Kovalev_D 129:406995a91322 223 BuffTemp[1] = Gyro.My_Addres;
Kovalev_D 129:406995a91322 224 BuffTemp[2] = Gyro.CMD_In;
Kovalev_D 208:19150d2b528f 225 BuffTemp[3] =0; //(//GyroP.Array[NP]>> 8) & 0xff;//старший байт требуемого параметра
Kovalev_D 129:406995a91322 226
Kovalev_D 129:406995a91322 227 Check(BuffTemp, 6);
Kovalev_D 129:406995a91322 228 WriteConN (BuffTemp,6);
Kovalev_D 208:19150d2b528f 229 if(flash){GyroP.Array[5]=0; flash=0; WriteFlash(); ReadFlash ();}
Kovalev_D 208:19150d2b528f 230
Kovalev_D 208:19150d2b528f 231
Kovalev_D 129:406995a91322 232 }
igor_v 0:8ad47e2b6f00 233 void CMD_Maintenance(void)
igor_v 0:8ad47e2b6f00 234 {
Kovalev_D 209:224e7331a061 235 Gyro.ModeOut=0;
Kovalev_D 208:19150d2b528f 236 //Gyro.DropDelayGLD = DropDelayGLD_0;//задержка на выдачу 45 микросекунд для любого адреса ГЛД
Kovalev_D 122:fbacb932a30b 237 BuffTemp[0] = Gyro.SOC_Out;
Kovalev_D 209:224e7331a061 238
Kovalev_D 124:9ae09249f842 239 BuffTemp[1] = Gyro.My_Addres;
Kovalev_D 209:224e7331a061 240
Kovalev_D 124:9ae09249f842 241 BuffTemp[2] = Gyro.Firmware_Version;
Kovalev_D 209:224e7331a061 242 /* sprintf((Time),"%d \r\n", Gyro.Firmware_Version);
Kovalev_D 209:224e7331a061 243 WriteCon(Time);*/
Kovalev_D 169:140743e3bb96 244 BuffTemp[3] = Gyro.GLD_Serial;
Kovalev_D 209:224e7331a061 245
igor_v 21:bc8c1cec3da6 246 BuffTemp[4]=0x00;
Kovalev_D 209:224e7331a061 247
igor_v 21:bc8c1cec3da6 248 BuffTemp[5]=0x00;
Kovalev_D 209:224e7331a061 249
igor_v 21:bc8c1cec3da6 250 Check(BuffTemp, 8);
Kovalev_D 209:224e7331a061 251 /* sprintf((Time),"%d %d %d %d %d %d %d %d\r\n",BuffTemp[0], BuffTemp[1],BuffTemp[2],BuffTemp[3],BuffTemp[4],BuffTemp[5],BuffTemp[6],BuffTemp[7]);
Kovalev_D 209:224e7331a061 252 WriteCon(Time);*/
igor_v 21:bc8c1cec3da6 253 WriteConN (BuffTemp,8);
Kovalev_D 121:bbae560cdd43 254
igor_v 0:8ad47e2b6f00 255 }
Kovalev_D 193:a0fe8bfc97e4 256 void CMD_B_Delta(void)
Kovalev_D 193:a0fe8bfc97e4 257 {
Kovalev_D 196:f76dbc081e63 258 Gyro.Event_500Hz=0;
Kovalev_D 205:775d54fdf646 259 Gyro.EXT_Latch=0;
Kovalev_D 193:a0fe8bfc97e4 260 unsigned int Temp;
Kovalev_D 193:a0fe8bfc97e4 261 BuffTemp[ 0] = Gyro.SOC_Out;
Kovalev_D 193:a0fe8bfc97e4 262 BuffTemp[ 1] = Gyro.My_Addres;
Kovalev_D 193:a0fe8bfc97e4 263
Kovalev_D 193:a0fe8bfc97e4 264 Temp = Gyro.CuruAngle;
Kovalev_D 193:a0fe8bfc97e4 265 Gyro.CuruAngle = 0;
Kovalev_D 193:a0fe8bfc97e4 266 BuffTemp[ 2] =(Temp >> 16) & 0xff;//младший байт разности счетчиков
Kovalev_D 193:a0fe8bfc97e4 267 BuffTemp[ 3] =(Temp >> 8) & 0xff;//младший байт разности счетчиков
Kovalev_D 193:a0fe8bfc97e4 268 BuffTemp[ 4] =(Temp >> 0) & 0xff;//младший байт разности счетчиков
Kovalev_D 193:a0fe8bfc97e4 269 BuffTemp[ 5] = 0x00000000;
Kovalev_D 193:a0fe8bfc97e4 270 Check(BuffTemp, 8);
Kovalev_D 193:a0fe8bfc97e4 271 WriteConN (BuffTemp,8);
Kovalev_D 193:a0fe8bfc97e4 272 }
Kovalev_D 165:b2bd0c810a4f 273
Kovalev_D 193:a0fe8bfc97e4 274 void CMD_Delta_Bins(void)
Kovalev_D 196:f76dbc081e63 275 { Gyro.Event_500Hz=0;
Kovalev_D 193:a0fe8bfc97e4 276 unsigned int Temp;
Kovalev_D 193:a0fe8bfc97e4 277 BuffTemp[ 0] = Gyro.SOC_Out;
Kovalev_D 193:a0fe8bfc97e4 278 BuffTemp[ 1] = Gyro.My_Addres;
Kovalev_D 193:a0fe8bfc97e4 279
Kovalev_D 193:a0fe8bfc97e4 280 Temp = Gyro.CuruAngle;
Kovalev_D 193:a0fe8bfc97e4 281 Gyro.CuruAngle = 0;
Kovalev_D 193:a0fe8bfc97e4 282
Kovalev_D 193:a0fe8bfc97e4 283 BuffTemp[ 2] =(Temp >> 24) & 0xff;//старший байт разности счетчиков
Kovalev_D 193:a0fe8bfc97e4 284 BuffTemp[ 3] =(Temp >> 16) & 0xff;//младший байт разности счетчиков
Kovalev_D 193:a0fe8bfc97e4 285 BuffTemp[ 4] =(Temp >> 8) & 0xff;//младший байт разности счетчиков
Kovalev_D 193:a0fe8bfc97e4 286 BuffTemp[ 5] =(Temp >> 0) & 0xff;//младший байт разности счетчиков
Kovalev_D 193:a0fe8bfc97e4 287 BuffTemp[ 6] = 0x0000;
Kovalev_D 193:a0fe8bfc97e4 288 Check(BuffTemp, 9);
Kovalev_D 193:a0fe8bfc97e4 289 WriteConN (BuffTemp,9);
Kovalev_D 193:a0fe8bfc97e4 290 }
Kovalev_D 193:a0fe8bfc97e4 291 void CMD_Delta_PS(void)
Kovalev_D 210:b02fa166315d 292 { int drob,Temp1;
Kovalev_D 210:b02fa166315d 293 float Temp2=0;
Kovalev_D 193:a0fe8bfc97e4 294 Gyro.EXT_Latch=0;
Kovalev_D 196:f76dbc081e63 295 Gyro.Event_500Hz=0;
Kovalev_D 122:fbacb932a30b 296 unsigned int Temp;
Kovalev_D 124:9ae09249f842 297 BuffTemp[ 0] = Gyro.SOC_Out;
Kovalev_D 122:fbacb932a30b 298 BuffTemp[ 1] = Gyro.My_Addres;
Kovalev_D 208:19150d2b528f 299
Kovalev_D 209:224e7331a061 300 Gyro.CuruAngle = Gyro.CuruAngle + OldCuruAngle; //(72 град/с)
Kovalev_D 209:224e7331a061 301
Kovalev_D 210:b02fa166315d 302 OldCuruAngle=Gyro.CuruAngle & 0x7; //сохраняем 3 бит для след измирений
Kovalev_D 209:224e7331a061 303 Temp=Gyro.CuruAngle>>3; //приводим к форме вывода
Kovalev_D 209:224e7331a061 304 Gyro.CuruAngle = 0;
Kovalev_D 124:9ae09249f842 305
Kovalev_D 124:9ae09249f842 306 BuffTemp[ 2] =(Temp >> 8) & 0xff;//старший байт разности счетчиков
Kovalev_D 124:9ae09249f842 307 BuffTemp[ 3] =(Temp >> 0) & 0xff;//младший байт разности счетчиков
Kovalev_D 124:9ae09249f842 308
Kovalev_D 124:9ae09249f842 309 BuffTemp[ 4] = CountParam;
Kovalev_D 124:9ae09249f842 310 switch(CountParam) {
Kovalev_D 182:ebcd2bc3be8f 311
Kovalev_D 124:9ae09249f842 312 //F_ras
Kovalev_D 124:9ae09249f842 313 case 0:
Kovalev_D 124:9ae09249f842 314 Temp = Gyro.F_ras;
Kovalev_D 124:9ae09249f842 315 BuffTemp[5] = (Temp >> 8) & 0xff;
Kovalev_D 124:9ae09249f842 316 break;
Kovalev_D 124:9ae09249f842 317
Kovalev_D 124:9ae09249f842 318 case 1:
Kovalev_D 124:9ae09249f842 319 BuffTemp[5] = (Temp >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 320 break;
Kovalev_D 208:19150d2b528f 321
Kovalev_D 124:9ae09249f842 322
Kovalev_D 124:9ae09249f842 323 //HFO
Kovalev_D 124:9ae09249f842 324 case 2:
Kovalev_D 210:b02fa166315d 325 Temp2 = ((Spi.DAC_A/0.65)-22544)-0x7fff;
Kovalev_D 210:b02fa166315d 326 Temp1= (int)Temp2;
Kovalev_D 210:b02fa166315d 327 // Temp = Spi.DAC_A-0x7fff;
Kovalev_D 210:b02fa166315d 328 BuffTemp[5] = (Temp1 >> 8) & 0xff;
Kovalev_D 124:9ae09249f842 329 break;
Kovalev_D 124:9ae09249f842 330
Kovalev_D 124:9ae09249f842 331 case 3:
Kovalev_D 210:b02fa166315d 332 BuffTemp[5] = (Temp1 >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 333 break;
Kovalev_D 124:9ae09249f842 334
Kovalev_D 124:9ae09249f842 335
Kovalev_D 124:9ae09249f842 336
Kovalev_D 124:9ae09249f842 337 //T_Vibro
Kovalev_D 124:9ae09249f842 338 case 4:
Kovalev_D 210:b02fa166315d 339 Temp = (unsigned int)(7680000/(Gyro.Frq>>16));
Kovalev_D 124:9ae09249f842 340 BuffTemp[5] = (Temp >> 8) & 0xff;
Kovalev_D 124:9ae09249f842 341 break;
Kovalev_D 124:9ae09249f842 342
Kovalev_D 124:9ae09249f842 343 case 5:
Kovalev_D 124:9ae09249f842 344 BuffTemp[5] = (Temp >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 345 break;
Kovalev_D 124:9ae09249f842 346
Kovalev_D 124:9ae09249f842 347
Kovalev_D 124:9ae09249f842 348
Kovalev_D 124:9ae09249f842 349 //L_Vibro
Kovalev_D 124:9ae09249f842 350 case 6:
Kovalev_D 210:b02fa166315d 351 //Temp = Gyro.L_vibro>>1;
Kovalev_D 210:b02fa166315d 352 Temp = Gyro.L_vibro;
Kovalev_D 124:9ae09249f842 353 BuffTemp[5] = (Temp >> 8) & 0xff;
Kovalev_D 124:9ae09249f842 354
Kovalev_D 124:9ae09249f842 355 break;
Kovalev_D 124:9ae09249f842 356
Kovalev_D 124:9ae09249f842 357 case 7:
Kovalev_D 124:9ae09249f842 358 BuffTemp[5] = (Temp >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 359 break;
Kovalev_D 124:9ae09249f842 360
Kovalev_D 124:9ae09249f842 361
Kovalev_D 124:9ae09249f842 362
Kovalev_D 124:9ae09249f842 363 //Напряжение на регуляторе периметра
Kovalev_D 124:9ae09249f842 364 case 8:
Kovalev_D 209:224e7331a061 365 Temp = (Spi.DAC_B - 0x7fff);
Kovalev_D 124:9ae09249f842 366 BuffTemp[5] = (Temp >> 8) & 0xff;
Kovalev_D 124:9ae09249f842 367
Kovalev_D 124:9ae09249f842 368 break;
Kovalev_D 124:9ae09249f842 369
Kovalev_D 124:9ae09249f842 370 case 9:
Kovalev_D 124:9ae09249f842 371 BuffTemp[5] = (Temp >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 372 break;
Kovalev_D 124:9ae09249f842 373
Kovalev_D 124:9ae09249f842 374
Kovalev_D 124:9ae09249f842 375
Kovalev_D 124:9ae09249f842 376 //темпкратурный канал 0
Kovalev_D 124:9ae09249f842 377 case 10:
Kovalev_D 124:9ae09249f842 378 Temp = 100;
Kovalev_D 124:9ae09249f842 379 BuffTemp[5] = (Temp >> 8) & 0xff;
igor_v 0:8ad47e2b6f00 380
Kovalev_D 124:9ae09249f842 381 break;
Kovalev_D 124:9ae09249f842 382
Kovalev_D 124:9ae09249f842 383 case 11:
Kovalev_D 124:9ae09249f842 384 BuffTemp[5] = (Temp >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 385 break;
Kovalev_D 124:9ae09249f842 386
Kovalev_D 124:9ae09249f842 387
Kovalev_D 124:9ae09249f842 388
Kovalev_D 177:1666a83d88a5 389 //f
Kovalev_D 124:9ae09249f842 390 case 12:
Kovalev_D 210:b02fa166315d 391 Temp =(unsigned int)(0x7fff-Spi.ADC5)*0.79;
Kovalev_D 210:b02fa166315d 392 // Temp = Gyro.AD_Slow >> 16;
Kovalev_D 124:9ae09249f842 393 BuffTemp[5] = (Temp >> 8) & 0xff;
Kovalev_D 124:9ae09249f842 394
Kovalev_D 124:9ae09249f842 395 break;
Kovalev_D 124:9ae09249f842 396
Kovalev_D 124:9ae09249f842 397 case 13:
Kovalev_D 124:9ae09249f842 398 BuffTemp[5] = (Temp >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 399 break;
Kovalev_D 124:9ae09249f842 400
Kovalev_D 124:9ae09249f842 401
Kovalev_D 124:9ae09249f842 402
Kovalev_D 124:9ae09249f842 403 //ток 1
Kovalev_D 124:9ae09249f842 404 case 14:
Kovalev_D 210:b02fa166315d 405 //Temp = Gyro.In1;
Kovalev_D 210:b02fa166315d 406 Temp1 = ((Gyro.In1>>1)*0.800875)-0x3e0b;
Kovalev_D 124:9ae09249f842 407 BuffTemp[5] = (Temp >> 8) & 0xff;//in1//2
Kovalev_D 124:9ae09249f842 408
Kovalev_D 124:9ae09249f842 409 break;
Kovalev_D 124:9ae09249f842 410
Kovalev_D 124:9ae09249f842 411 case 15:
Kovalev_D 124:9ae09249f842 412 BuffTemp[5] = (Temp >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 413 break;
Kovalev_D 124:9ae09249f842 414
Kovalev_D 124:9ae09249f842 415
Kovalev_D 124:9ae09249f842 416
Kovalev_D 124:9ae09249f842 417 //ток 2
Kovalev_D 124:9ae09249f842 418 case 16:
Kovalev_D 210:b02fa166315d 419 // Temp = Gyro.In2;
Kovalev_D 210:b02fa166315d 420 Temp1 = ((Gyro.In2>>1)*0.800875)-0x3e0b;
Kovalev_D 210:b02fa166315d 421 BuffTemp[5] = (Temp >> 8) & 0xff;
Kovalev_D 124:9ae09249f842 422 break;
Kovalev_D 124:9ae09249f842 423
Kovalev_D 124:9ae09249f842 424 case 17:
Kovalev_D 124:9ae09249f842 425 BuffTemp[5] = (Temp >> 0) & 0xff;//in2//3
Kovalev_D 124:9ae09249f842 426 break;
Kovalev_D 124:9ae09249f842 427
Kovalev_D 124:9ae09249f842 428
Kovalev_D 124:9ae09249f842 429
Kovalev_D 124:9ae09249f842 430 //разностный температурный канал Delta Temp
Kovalev_D 124:9ae09249f842 431 case 18:
Kovalev_D 124:9ae09249f842 432 Temp = Gyro.DeltaT;
Kovalev_D 124:9ae09249f842 433 BuffTemp[5] = (Temp >> 8) & 0xff;//дельта
Kovalev_D 124:9ae09249f842 434 break;
Kovalev_D 124:9ae09249f842 435
Kovalev_D 124:9ae09249f842 436 case 19:
Kovalev_D 124:9ae09249f842 437 BuffTemp[5] = (Temp >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 438 break;
Kovalev_D 124:9ae09249f842 439
Kovalev_D 124:9ae09249f842 440
Kovalev_D 124:9ae09249f842 441
Kovalev_D 124:9ae09249f842 442 //температурный канал 5
Kovalev_D 124:9ae09249f842 443 case 20:
Kovalev_D 124:9ae09249f842 444 Temp = Gyro.Termo;//0xa4=164
Kovalev_D 124:9ae09249f842 445 BuffTemp[5] =(Temp >> 8) & 0xff;//температура
Kovalev_D 124:9ae09249f842 446
Kovalev_D 124:9ae09249f842 447 break;
Kovalev_D 124:9ae09249f842 448
Kovalev_D 124:9ae09249f842 449 case 21:
Kovalev_D 124:9ae09249f842 450 BuffTemp[5] =(Temp >> 0) & 0xff;//ADC6 sesnsor 5
Kovalev_D 124:9ae09249f842 451 break;
Kovalev_D 124:9ae09249f842 452 }
Kovalev_D 162:44e4ded32c6a 453 Check(BuffTemp, CRC_N);
Kovalev_D 162:44e4ded32c6a 454 WriteConN (BuffTemp,CRC_N);
Kovalev_D 128:1e4675a36c93 455
Kovalev_D 165:b2bd0c810a4f 456
Kovalev_D 165:b2bd0c810a4f 457 if(CountParam>20)CountParam=0;//зацикливания буфера от 0 до 21
Kovalev_D 165:b2bd0c810a4f 458 else CountParam++;
Kovalev_D 124:9ae09249f842 459
Kovalev_D 124:9ae09249f842 460 }
Kovalev_D 124:9ae09249f842 461
igor_v 0:8ad47e2b6f00 462 void CMD_Rate(void)
Kovalev_D 190:289514f730ee 463 {
Kovalev_D 124:9ae09249f842 464 Gyro.Rate1_Event=0;
Kovalev_D 108:030cdde08314 465 unsigned int Temp;
Kovalev_D 208:19150d2b528f 466 int Temp1;
Kovalev_D 209:224e7331a061 467 float Temp2;
Kovalev_D 122:fbacb932a30b 468
Kovalev_D 208:19150d2b528f 469 BuffTemp[ 0] = Gyro.SOC_Out; //1 --старт данных
Kovalev_D 208:19150d2b528f 470 BuffTemp[ 1] = Gyro.My_Addres; //2 --адрес отвечающего устройствва
igor_v 21:bc8c1cec3da6 471
Kovalev_D 209:224e7331a061 472 BuffTemp[ 2] =( Gyro.CaunPlusReper >> 8) & 0xff;//старший байт счетчика +. 3 --сарший байт счентчика +
Kovalev_D 209:224e7331a061 473 BuffTemp[ 3] =( Gyro.CaunPlusReper >> 0) & 0xff;//младший байт счетчика +. 4 --младший байт счетчика +
Kovalev_D 209:224e7331a061 474 // Gyro.CaunPlusRate=0;
Kovalev_D 209:224e7331a061 475 /*
Kovalev_D 208:19150d2b528f 476 BuffTemp[ 2] =(Gyro.CaunPlus >> 8) & 0xff;//старший байт счетчика +. 3 --сарший байт счентчика +
Kovalev_D 208:19150d2b528f 477 BuffTemp[ 3] =(Gyro.CaunPlus >> 0) & 0xff;//младший байт счетчика +. 4 --младший байт счетчика +
Kovalev_D 209:224e7331a061 478 */
Kovalev_D 209:224e7331a061 479 BuffTemp[ 4] =( Gyro.CaunMinReper >> 8) & 0xff;//старший байт счетчика -. 5 --сарший байт счентчика -
Kovalev_D 209:224e7331a061 480 BuffTemp[ 5] =( Gyro.CaunMinReper >> 0) & 0xff;//младший байт счетчика -. 6 --младший байт счетчика -
Kovalev_D 209:224e7331a061 481 // Gyro.CaunMinRate=0;
Kovalev_D 209:224e7331a061 482 /*
Kovalev_D 208:19150d2b528f 483 BuffTemp[ 4] =(Gyro.CaunMin >> 8) & 0xff;//старший байт счетчика -. 5 --сарший байт счентчика -
Kovalev_D 208:19150d2b528f 484 BuffTemp[ 5] =(Gyro.CaunMin >> 0) & 0xff;//младший байт счетчика -. 6 --младший байт счетчика -
Kovalev_D 209:224e7331a061 485 */
Kovalev_D 209:224e7331a061 486 //Temp=Gyro.CuruAngle; //(0,28/с)
Kovalev_D 208:19150d2b528f 487 //8 байт + 4 байта от прошлых измерений
Kovalev_D 209:224e7331a061 488
Kovalev_D 209:224e7331a061 489 Gyro.CuruAngle = Gyro.CuruAngle + OldCuruAngle; //(72 град/с)
Kovalev_D 209:224e7331a061 490 /* OldCuruAngle=Gyro.CuruAngle & 0xff; //сохраняем 4 байта для след измирений
Kovalev_D 209:224e7331a061 491 Temp=Gyro.CuruAngle>>8; */ //приводим к форме вывода
Kovalev_D 209:224e7331a061 492 //(9 град/с)
Kovalev_D 208:19150d2b528f 493 OldCuruAngle=Gyro.CuruAngle & 0x1f; //сохраняем 5 бит для след измирений
Kovalev_D 209:224e7331a061 494 Temp=Gyro.CuruAngle>>5; //приводим к форме вывода
Kovalev_D 208:19150d2b528f 495
Kovalev_D 209:224e7331a061 496 /*sprintf((Time),"%d %d\r\n",Gyro.CuruAngle, Temp);
Kovalev_D 209:224e7331a061 497 WriteCon(Time); */
Kovalev_D 209:224e7331a061 498
Kovalev_D 208:19150d2b528f 499 Gyro.CuruAngle = 0;
Kovalev_D 208:19150d2b528f 500 BuffTemp[ 6] =(Temp >> 8) & 0xff;//старший байт разности счетчиков 7 --младший байт разности счетчиков
Kovalev_D 208:19150d2b528f 501 BuffTemp[ 7] =(Temp >> 0) & 0xff;//младший байт разности счетчиков 8 --старший байт разности счетчиков
Kovalev_D 108:030cdde08314 502
Kovalev_D 108:030cdde08314 503
Kovalev_D 208:19150d2b528f 504 BuffTemp[38] =(Temp >> 24) & 0xff;; //39 приращение угла
Kovalev_D 208:19150d2b528f 505 BuffTemp[39] =(Temp >> 16) & 0xff;; //40 формат 22.10
Kovalev_D 208:19150d2b528f 506 BuffTemp[40] =(Temp >> 8) & 0xff;; //41 1бит знак
Kovalev_D 208:19150d2b528f 507 BuffTemp[41] =(Temp >> 0) & 0xff;; //42
Kovalev_D 209:224e7331a061 508
Kovalev_D 208:19150d2b528f 509 Temp = Gyro.F_ras;
Kovalev_D 209:224e7331a061 510 //Gyro.F_ras=0;
Kovalev_D 208:19150d2b528f 511 BuffTemp[ 8] = (Temp >> 8) & 0xff;//расщипление частота 9 --частота расщипления
Kovalev_D 209:224e7331a061 512 BuffTemp[ 9] = (Temp >> 0) & 0xff;// 10 --частота расщипления
Kovalev_D 208:19150d2b528f 513
Kovalev_D 209:224e7331a061 514 // ((temp*1.67)-0x5523);
Kovalev_D 209:224e7331a061 515 Temp2 = ((Spi.DAC_A/0.65)-22544)-0x7fff;
Kovalev_D 209:224e7331a061 516 Temp1= (int)Temp2;
Kovalev_D 209:224e7331a061 517 //Temp1=Gyro.DacIn/*-0x7fff*/;
Kovalev_D 209:224e7331a061 518 BuffTemp[10] = (Temp1 >> 8) & 0xff;//выход регулятора гвч; 11 --выход регулятора ГВЧ
Kovalev_D 209:224e7331a061 519 BuffTemp[11] = (Temp1 >> 0) & 0xff; //12 --выход регулятора ГВЧ
Kovalev_D 209:224e7331a061 520
Kovalev_D 209:224e7331a061 521 Temp =(unsigned int)(0x7fff-Spi.ADC5)*0.79;
Kovalev_D 208:19150d2b528f 522 BuffTemp[12]=(Temp >> 8) & 0xff;//// HFO 13 --сигнал ошибки регулятора ГВЧ
Kovalev_D 208:19150d2b528f 523 BuffTemp[13]=(Temp >> 0) & 0xff;//// 14 --сигнал ошибки регулятора ГВЧ
Kovalev_D 209:224e7331a061 524
Kovalev_D 209:224e7331a061 525 //Temp = (unsigned int)((7675000*16/(Gyro.Frq>>12)));
Kovalev_D 210:b02fa166315d 526 Temp = (unsigned int)(7680000/(Gyro.Frq>>16));
Kovalev_D 208:19150d2b528f 527 BuffTemp[14] = (Temp >> 8) & 0xff; //15 период вибропривода.(частота) T_Vibro
Kovalev_D 208:19150d2b528f 528 BuffTemp[15] = (Temp >> 0) & 0xff; //16 период вибропривода.
Kovalev_D 208:19150d2b528f 529
Kovalev_D 209:224e7331a061 530 Temp = Gyro.FrqPhaseEror<<2;//Spi.DAC_A-0x7fff;
Kovalev_D 209:224e7331a061 531 BuffTemp[16] = (Temp >> 8) & 0xff; //17 старший байт ФД регулятора периода вибропривода
Kovalev_D 209:224e7331a061 532 BuffTemp[17] = (Temp >> 0) & 0xff;
Kovalev_D 209:224e7331a061 533 /*sprintf((Time),"%d %d\r\n",Gyro.FrqPhaseEror, Gyro.FrqPhaseEror<<2);
Kovalev_D 209:224e7331a061 534 WriteCon(Time); */ //18
igor_v 21:bc8c1cec3da6 535
Kovalev_D 209:224e7331a061 536 Temp =Gyro.L_vibro/*>>1*/;//(unsigned int)(((7675000*16/200) * Gyro.AmpPer /(Gyro.Frq>>12)));
Kovalev_D 208:19150d2b528f 537 BuffTemp[18] = (Temp >> 8) & 0xff; //19 длительность импулься вибропривода(амплитуда)
Kovalev_D 208:19150d2b528f 538 BuffTemp[19] = (Temp >> 0) & 0xff; //20
Kovalev_D 210:b02fa166315d 539
Kovalev_D 208:19150d2b528f 540
Kovalev_D 208:19150d2b528f 541 Temp = 0x0;//Gyro.L_vibro<<2;
Kovalev_D 208:19150d2b528f 542 BuffTemp[20] = (Temp >> 8) & 0xff;//регулятор датчика угла поворота //21 старший байт регулятора датчика угла поворота
Kovalev_D 208:19150d2b528f 543 BuffTemp[21] = (Temp >> 0) & 0xff; //22
Kovalev_D 208:19150d2b528f 544
Kovalev_D 209:224e7331a061 545 Temp1 =(Spi.DAC_B-0x7fff);
Kovalev_D 209:224e7331a061 546 BuffTemp[22] = (Temp1 >> 8) & 0xff; //23 Выход регулятора рабочего периметра
Kovalev_D 209:224e7331a061 547 BuffTemp[23] = (Temp1 >> 0) & 0xff;
Kovalev_D 209:224e7331a061 548 //24
Kovalev_D 209:224e7331a061 549 /* sprintf((Time),"%d \r\n",Temp1);
Kovalev_D 209:224e7331a061 550 WriteCon(Time); */
Kovalev_D 209:224e7331a061 551
Kovalev_D 209:224e7331a061 552 Temp = Gyro.PLC_Eror_count>>4; //Gyro.AD_Slow >> 16;
Kovalev_D 209:224e7331a061 553 Gyro.PLC_Eror_count = 0;
Kovalev_D 208:19150d2b528f 554 BuffTemp[24] = (Temp >> 8) & 0xff;// //25 ФД СРП
Kovalev_D 208:19150d2b528f 555 BuffTemp[25] = (Temp >> 0) & 0xff;// //26 ФД СРП
Kovalev_D 209:224e7331a061 556
Kovalev_D 209:224e7331a061 557 Temp =0;/* Gyro.AD_Slow >> 16*/;
Kovalev_D 208:19150d2b528f 558 BuffTemp[26] = (Temp >> 8) & 0xff; //27 ADC 0
Kovalev_D 208:19150d2b528f 559 BuffTemp[27] = (Temp >> 0) & 0xff; //28
Kovalev_D 113:8be429494918 560
Kovalev_D 209:224e7331a061 561 Temp =0; /*Gyro.AD_Slow >> 16*/;
Kovalev_D 208:19150d2b528f 562 BuffTemp[28] = (Temp >> 8) & 0xff; //29 ADC 1
Kovalev_D 208:19150d2b528f 563 BuffTemp[29] = (Temp >> 0) & 0xff; //30
Kovalev_D 113:8be429494918 564
Kovalev_D 209:224e7331a061 565 Temp1 = ((Gyro.In1>>1)*0.800875)-0x3e0b;
Kovalev_D 209:224e7331a061 566 BuffTemp[30] = (Temp1 >> 8) & 0xff;//in1//2 //31 ADC 2
Kovalev_D 209:224e7331a061 567 BuffTemp[31] = (Temp1 >> 0) & 0xff; //32
Kovalev_D 208:19150d2b528f 568
Kovalev_D 209:224e7331a061 569 Temp1 =((Gyro.In2>>1)*0.800875)-0x3e0b;// - 0x4FFF;
Kovalev_D 209:224e7331a061 570 BuffTemp[32] = (Temp1 >> 8) & 0xff; //33 ADC 3
Kovalev_D 209:224e7331a061 571 BuffTemp[33] = (Temp1 >> 0) & 0xff;//in2//3 //34
Kovalev_D 209:224e7331a061 572
Kovalev_D 208:19150d2b528f 573 Temp = (Gyro.DeltaT);
Kovalev_D 208:19150d2b528f 574 BuffTemp[34] = (Temp >> 8) & 0xff;//дельта //35 ADC 4
Kovalev_D 208:19150d2b528f 575 BuffTemp[35] = (Temp >> 0) & 0xff; //36
Kovalev_D 208:19150d2b528f 576 // Temp = 000;
Kovalev_D 208:19150d2b528f 577
Kovalev_D 208:19150d2b528f 578 Temp = Gyro.Termo;
Kovalev_D 208:19150d2b528f 579 BuffTemp[36] =(Temp >> 8) & 0xff;//температура //37 ADC 5
Kovalev_D 208:19150d2b528f 580 BuffTemp[37] =(Temp >> 0) & 0xff;//ADC6 sesnsor 5 //38
igor_v 21:bc8c1cec3da6 581
igor_v 21:bc8c1cec3da6 582 Check(BuffTemp, 44);
igor_v 21:bc8c1cec3da6 583 WriteConN (BuffTemp,44);
Kovalev_D 209:224e7331a061 584 for(int i=0; i<45;i++) {BuffTemp[i]=0;}
Kovalev_D 209:224e7331a061 585 }
Kovalev_D 209:224e7331a061 586
Kovalev_D 210:b02fa166315d 587 void CMD_Rate2(void)
Kovalev_D 210:b02fa166315d 588 {
Kovalev_D 210:b02fa166315d 589 unsigned int Temp;
Kovalev_D 210:b02fa166315d 590 Gyro.Reper_Event=0;
Kovalev_D 210:b02fa166315d 591
Kovalev_D 210:b02fa166315d 592 BuffTemp[ 0] = Gyro.SOC_Out;
Kovalev_D 210:b02fa166315d 593 BuffTemp[ 1] = Gyro.My_Addres;
Kovalev_D 210:b02fa166315d 594
Kovalev_D 210:b02fa166315d 595
Kovalev_D 210:b02fa166315d 596 Temp=Gyro.CaunPlusReper;
Kovalev_D 210:b02fa166315d 597 BuffTemp[ 2] =(Temp >> 8) & 0xff;//старший байт счетчика +.
Kovalev_D 210:b02fa166315d 598 BuffTemp[ 3] =(Temp >> 0) & 0xff;//младший байт счетчика +.
Kovalev_D 210:b02fa166315d 599
Kovalev_D 210:b02fa166315d 600 //сохраняем 5 бит для след измирений
Kovalev_D 210:b02fa166315d 601
Kovalev_D 210:b02fa166315d 602 Temp= Gyro.CaunMinReper;
Kovalev_D 210:b02fa166315d 603 BuffTemp[ 4] =(Temp >> 8) & 0xff;//старший байт счетчика -.
Kovalev_D 210:b02fa166315d 604 BuffTemp[ 5] =(Temp >> 0) & 0xff;//младший байт счетчика -.
Kovalev_D 210:b02fa166315d 605
Kovalev_D 210:b02fa166315d 606 Check(BuffTemp, 8);
Kovalev_D 210:b02fa166315d 607 WriteConN (BuffTemp,8);
Kovalev_D 210:b02fa166315d 608 }
Kovalev_D 210:b02fa166315d 609
Kovalev_D 210:b02fa166315d 610 void CMD_Rate3(void)
Kovalev_D 210:b02fa166315d 611 {
Kovalev_D 210:b02fa166315d 612 Gyro.Rate3_Event=0;
Kovalev_D 210:b02fa166315d 613 BuffTemp[ 0] = Gyro.SOC_Out;
Kovalev_D 210:b02fa166315d 614 BuffTemp[ 1] = Gyro.My_Addres;
Kovalev_D 210:b02fa166315d 615 BuffTemp[ 2] = 0xcc;//старший байт счетчика +.
Kovalev_D 210:b02fa166315d 616 BuffTemp[ 3] = 0xcc;//младший байт счетчика +.
Kovalev_D 210:b02fa166315d 617
Kovalev_D 210:b02fa166315d 618 BuffTemp[ 4] =0xBB;//старший байт счетчика -.
Kovalev_D 210:b02fa166315d 619 BuffTemp[ 5] =0xBB;//младший байт счетчика -.
Kovalev_D 210:b02fa166315d 620
Kovalev_D 210:b02fa166315d 621 Check(BuffTemp, 8);
Kovalev_D 210:b02fa166315d 622 WriteConN (BuffTemp,8);
Kovalev_D 210:b02fa166315d 623 }
Kovalev_D 210:b02fa166315d 624
Kovalev_D 209:224e7331a061 625 void CMD_M_Stymul()
Kovalev_D 209:224e7331a061 626 {
Kovalev_D 209:224e7331a061 627 int temp,Consol=0,HFO,b4;
Kovalev_D 209:224e7331a061 628 float Temp1;
Kovalev_D 209:224e7331a061 629 temp=BuffTemp[3];
Kovalev_D 209:224e7331a061 630
Kovalev_D 209:224e7331a061 631 b4 = temp;
Kovalev_D 209:224e7331a061 632 Consol = temp>>7;
Kovalev_D 209:224e7331a061 633 HFO = temp&0x3;// // (номер (код) ЦАПа 0...3, HFO - 3dac, PLC - 0DAC
Kovalev_D 209:224e7331a061 634
Kovalev_D 209:224e7331a061 635 temp = (((BuffTemp[4]<<8) | BuffTemp[5])&0xFFFF);
Kovalev_D 209:224e7331a061 636 if(HFO)
Kovalev_D 209:224e7331a061 637 {
Kovalev_D 209:224e7331a061 638 Gyro.DacIn=temp;
Kovalev_D 209:224e7331a061 639 Spi.DAC_A = (unsigned int)((temp+22544)*0.65);
Kovalev_D 209:224e7331a061 640 }
Kovalev_D 209:224e7331a061 641 else Spi.DAC_B = (unsigned int)temp;
Kovalev_D 92:c892f0311aa7 642
Kovalev_D 209:224e7331a061 643 sprintf((Time)," %d %d \r\n", Spi.DAC_B,temp);
Kovalev_D 209:224e7331a061 644 WriteCon(Time);
Kovalev_D 209:224e7331a061 645
Kovalev_D 209:224e7331a061 646
Kovalev_D 209:224e7331a061 647 /*
Kovalev_D 209:224e7331a061 648 sprintf((Time),"%d %d %f \r\n", temp, Spi.DAC_A, (temp+10744)*0.79);
Kovalev_D 209:224e7331a061 649 WriteCon(Time);
Kovalev_D 209:224e7331a061 650 */
Kovalev_D 209:224e7331a061 651
Kovalev_D 209:224e7331a061 652 /*{
Kovalev_D 209:224e7331a061 653 DACF =(temp*K_DAC)+deltaDAC;
Kovalev_D 209:224e7331a061 654 Spi.DAC_B =(unsigned int)(DACF) (unsigned int)(temp*K_DAC+deltaDAC); // K_DAC);
Kovalev_D 209:224e7331a061 655 }*/
Kovalev_D 209:224e7331a061 656 if(Consol)
Kovalev_D 209:224e7331a061 657 {
Kovalev_D 209:224e7331a061 658 BuffTemp[0] = Gyro.SOC_Out; //DD
Kovalev_D 209:224e7331a061 659 BuffTemp[1] = Gyro.My_Addres; //00
Kovalev_D 209:224e7331a061 660 BuffTemp[2] = Gyro.CMD_In; //D9
Kovalev_D 209:224e7331a061 661 BuffTemp[3] =0;
Kovalev_D 209:224e7331a061 662 Check(BuffTemp, CRC_N);
Kovalev_D 209:224e7331a061 663 WriteConN (BuffTemp,CRC_N);
Kovalev_D 209:224e7331a061 664 }
igor_v 0:8ad47e2b6f00 665 }
Kovalev_D 209:224e7331a061 666
Kovalev_D 179:2b4e6bc277df 667 void CMD_M_vib()
Kovalev_D 179:2b4e6bc277df 668 {
Kovalev_D 209:224e7331a061 669 unsigned int temp1,temp2,anser;
Kovalev_D 209:224e7331a061 670 // anser = BuffTemp[3]>>7;
Kovalev_D 209:224e7331a061 671
Kovalev_D 209:224e7331a061 672 temp1 = (((BuffTemp[4]<<8) | BuffTemp[5])&0xFFFF);
Kovalev_D 209:224e7331a061 673 Gyro.Frq = (122780000/temp1)<<12;
Kovalev_D 209:224e7331a061 674
Kovalev_D 209:224e7331a061 675 temp2 = (((BuffTemp[6]<<8) | BuffTemp[7])&0xFFFF);
Kovalev_D 210:b02fa166315d 676 Gyro.AmpPer = ((((((Gyro.Frq>>12)*200)/16)*temp2)/7680000)/2);
Kovalev_D 210:b02fa166315d 677 /* sprintf((Time),"%d %d \r\n",temp2,Gyro.AmpPer);
Kovalev_D 210:b02fa166315d 678 WriteCon(Time); */
Kovalev_D 207:d1ce992f5d17 679
Kovalev_D 209:224e7331a061 680 // if(anser)
Kovalev_D 209:224e7331a061 681 // {
Kovalev_D 209:224e7331a061 682 BuffTemp[0] = Gyro.SOC_Out;
Kovalev_D 209:224e7331a061 683 BuffTemp[1] = Gyro.My_Addres;
Kovalev_D 209:224e7331a061 684 BuffTemp[2] = Gyro.CMD_In;
Kovalev_D 209:224e7331a061 685 BuffTemp[3] = 0x0;
Kovalev_D 209:224e7331a061 686 BuffTemp[4] = 0x0;
Kovalev_D 209:224e7331a061 687 Check(BuffTemp, CRC_N);
Kovalev_D 209:224e7331a061 688 WriteConN (BuffTemp,CRC_N);
Kovalev_D 209:224e7331a061 689 // }
Kovalev_D 179:2b4e6bc277df 690 }
igor_v 21:bc8c1cec3da6 691 void CMD_M_Control_D8()///установка\сброс регистров управления
igor_v 21:bc8c1cec3da6 692 {
Kovalev_D 209:224e7331a061 693 unsigned int bit=0,Pa=0;
Kovalev_D 209:224e7331a061 694 unsigned int SR=0,V=0,Bit_num=0,A=0;
Kovalev_D 209:224e7331a061 695 Pa = BuffTemp[3];
Kovalev_D 209:224e7331a061 696 SR = Pa >> 7;
Kovalev_D 209:224e7331a061 697 V = (Pa>>5)&0x3;
Kovalev_D 209:224e7331a061 698 A = (Pa>>4)&0x1;
Kovalev_D 209:224e7331a061 699 Bit_num = Pa & 0xf;
Kovalev_D 104:ab1cb4ff56b2 700
Kovalev_D 209:224e7331a061 701 switch (SR)
Kovalev_D 209:224e7331a061 702 {
Kovalev_D 209:224e7331a061 703 case 0:
Kovalev_D 209:224e7331a061 704 switch (A)
Kovalev_D 209:224e7331a061 705 {
Kovalev_D 209:224e7331a061 706 case 0:
Kovalev_D 209:224e7331a061 707 switch (Bit_num)
Kovalev_D 209:224e7331a061 708 {
Kovalev_D 209:224e7331a061 709 case 0x06: FrqOFF break;
Kovalev_D 209:224e7331a061 710 case 0x05: AVibOFF break;
Kovalev_D 209:224e7331a061 711 case 0x01: HFOOFF break;
Kovalev_D 209:224e7331a061 712 case 0x03: PlcOFF break;
Kovalev_D 209:224e7331a061 713 }
Kovalev_D 209:224e7331a061 714 break;
Kovalev_D 209:224e7331a061 715 case 1:
Kovalev_D 209:224e7331a061 716 switch (Bit_num)
Kovalev_D 209:224e7331a061 717 {
Kovalev_D 209:224e7331a061 718 case 0x00: Gyro.RgConB &= ~(1<<0); break;
Kovalev_D 209:224e7331a061 719 case 0x01: Gyro.RgConB &= ~(1<<1); break;
Kovalev_D 209:224e7331a061 720 case 0x02: Gyro.RgConB &= ~(1<<2); break;
Kovalev_D 209:224e7331a061 721 }
Kovalev_D 209:224e7331a061 722 break;
Kovalev_D 209:224e7331a061 723 }
Kovalev_D 209:224e7331a061 724
Kovalev_D 209:224e7331a061 725
Kovalev_D 209:224e7331a061 726 break;
Kovalev_D 209:224e7331a061 727 case 1:
Kovalev_D 209:224e7331a061 728 switch (A)
Kovalev_D 209:224e7331a061 729 {
Kovalev_D 209:224e7331a061 730 case 0:
Kovalev_D 209:224e7331a061 731 switch (Bit_num)
Kovalev_D 209:224e7331a061 732 {
Kovalev_D 209:224e7331a061 733 case 0x06: FrqON break;
Kovalev_D 209:224e7331a061 734 case 0x05: AVibON break;
Kovalev_D 209:224e7331a061 735 case 0x01: HFOON break;
Kovalev_D 209:224e7331a061 736 case 0x03: PlcON break;
Kovalev_D 209:224e7331a061 737 }
Kovalev_D 209:224e7331a061 738 break;
Kovalev_D 209:224e7331a061 739 case 1:
Kovalev_D 209:224e7331a061 740 switch (Bit_num)
Kovalev_D 209:224e7331a061 741 {
Kovalev_D 209:224e7331a061 742 case 0x00: Gyro.RgConB |= (1<<0); break;
Kovalev_D 209:224e7331a061 743 case 0x01: Gyro.RgConB |= (1<<1); break;
Kovalev_D 209:224e7331a061 744 case 0x02: Gyro.RgConB |= (1<<2); break;
Kovalev_D 209:224e7331a061 745 }
Kovalev_D 209:224e7331a061 746 break;
Kovalev_D 209:224e7331a061 747 }
Kovalev_D 209:224e7331a061 748 break;
Kovalev_D 209:224e7331a061 749 }
igor_v 30:17c84ed091b3 750 BuffTemp[0] = Gyro.SOC_Out; //DD
igor_v 30:17c84ed091b3 751 BuffTemp[1] = Gyro.My_Addres; //00
igor_v 30:17c84ed091b3 752 BuffTemp[2] = Gyro.CMD_In; //D8
Kovalev_D 209:224e7331a061 753 switch (A)
Kovalev_D 209:224e7331a061 754 {
Kovalev_D 209:224e7331a061 755 case 0:
Kovalev_D 209:224e7331a061 756 BuffTemp[ 4] =(Gyro.RgConA >> 8) & 0xff;
Kovalev_D 209:224e7331a061 757 BuffTemp[ 5] =(Gyro.RgConA >> 0) & 0xff;
Kovalev_D 209:224e7331a061 758 break;
Kovalev_D 209:224e7331a061 759
Kovalev_D 209:224e7331a061 760 case 1:
Kovalev_D 209:224e7331a061 761 BuffTemp[ 4] =(Gyro.RgConB >> 8) & 0xff;
Kovalev_D 209:224e7331a061 762 BuffTemp[ 5] =(Gyro.RgConB >> 0) & 0xff;
Kovalev_D 209:224e7331a061 763 break;
Kovalev_D 209:224e7331a061 764 }
Kovalev_D 209:224e7331a061 765 Check(BuffTemp, CRC_N);
Kovalev_D 209:224e7331a061 766 WriteConN (BuffTemp,CRC_N);
Kovalev_D 209:224e7331a061 767 }
Kovalev_D 208:19150d2b528f 768
igor_v 21:bc8c1cec3da6 769 void CMD_M_Control_D9()///чтение регистров управления
igor_v 21:bc8c1cec3da6 770 {
Kovalev_D 209:224e7331a061 771 int bit,NReg,param=0;
igor_v 30:17c84ed091b3 772 BuffTemp[0] = Gyro.SOC_Out; //DD
igor_v 30:17c84ed091b3 773 BuffTemp[1] = Gyro.My_Addres; //00
igor_v 30:17c84ed091b3 774 BuffTemp[2] = Gyro.CMD_In; //D9
Kovalev_D 209:224e7331a061 775 param = BuffTemp[3];
Kovalev_D 209:224e7331a061 776 if (param)
Kovalev_D 209:224e7331a061 777 {
igor_v 21:bc8c1cec3da6 778 BuffTemp[3]=1<<4;
igor_v 30:17c84ed091b3 779 BuffTemp[4] = (Gyro.RgConB>>8 ) & 0xff;
igor_v 30:17c84ed091b3 780 BuffTemp[5] = Gyro.RgConB & 0xff;
igor_v 21:bc8c1cec3da6 781 }
Kovalev_D 209:224e7331a061 782 else
Kovalev_D 209:224e7331a061 783 {
Kovalev_D 209:224e7331a061 784 BuffTemp[3]=0<<4;
Kovalev_D 209:224e7331a061 785 BuffTemp[4] = (Gyro.RgConA>>8 )& 0xff;
Kovalev_D 209:224e7331a061 786 BuffTemp[5] = Gyro.RgConA & 0xff;
Kovalev_D 209:224e7331a061 787 }
igor_v 21:bc8c1cec3da6 788 Check(BuffTemp, CRC_N);
igor_v 21:bc8c1cec3da6 789 WriteConN (BuffTemp,CRC_N);
igor_v 21:bc8c1cec3da6 790 }
igor_v 21:bc8c1cec3da6 791 // (номер (код) ЦАПа 0...3, старший байт требуемого ЦАПа, младший байт треб ЦАПа)
Kovalev_D 209:224e7331a061 792
Kovalev_D 209:224e7331a061 793
Kovalev_D 194:8f3cb37a5541 794
Kovalev_D 194:8f3cb37a5541 795 void GLDStartDischarg(void)
Kovalev_D 208:19150d2b528f 796 { TimeDischarg=0;
Kovalev_D 208:19150d2b528f 797 Try=0;
Kovalev_D 194:8f3cb37a5541 798 switch(Gyro.My_Addres)
Kovalev_D 194:8f3cb37a5541 799 {//смещение поджига и подсветки в зависимости от адреса ГЛД
Kovalev_D 194:8f3cb37a5541 800 case 0:
Kovalev_D 194:8f3cb37a5541 801 Gyro.Discharg = StartDischarg << ShiftStart0;
Kovalev_D 194:8f3cb37a5541 802 Gyro.BackLight = StartBackLight << ShiftStart0;
Kovalev_D 194:8f3cb37a5541 803 break;
Kovalev_D 194:8f3cb37a5541 804 case 1:
Kovalev_D 194:8f3cb37a5541 805 Gyro.Discharg = StartDischarg << ShiftStart1;
Kovalev_D 194:8f3cb37a5541 806 Gyro.BackLight = StartBackLight << ShiftStart1;
Kovalev_D 194:8f3cb37a5541 807 break;
Kovalev_D 194:8f3cb37a5541 808 case 2:
Kovalev_D 194:8f3cb37a5541 809 Gyro.Discharg = StartDischarg << ShiftStart2;
Kovalev_D 194:8f3cb37a5541 810 Gyro.BackLight = StartBackLight << ShiftStart2;
Kovalev_D 194:8f3cb37a5541 811 break;
Kovalev_D 194:8f3cb37a5541 812 case 3:
Kovalev_D 194:8f3cb37a5541 813 Gyro.Discharg = StartDischarg << ShiftStart3;
Kovalev_D 194:8f3cb37a5541 814 Gyro.BackLight = StartBackLight << ShiftStart3;
Kovalev_D 194:8f3cb37a5541 815 break;
Kovalev_D 194:8f3cb37a5541 816 }
Kovalev_D 194:8f3cb37a5541 817 }
Kovalev_D 194:8f3cb37a5541 818
Kovalev_D 103:e96f08947def 819 void Gph_W()
Kovalev_D 103:e96f08947def 820 {
Kovalev_D 205:775d54fdf646 821 //Gyro.flagGph_W=3;
Kovalev_D 208:19150d2b528f 822
Kovalev_D 172:ef7bf1663645 823 Out_G_photo(BuffTemp[4],BuffTemp[5]);
Kovalev_D 209:224e7331a061 824 BuffTemp[0] = Gyro.SOC_Out; //DD
Kovalev_D 209:224e7331a061 825 BuffTemp[1] = Gyro.My_Addres; //00
Kovalev_D 209:224e7331a061 826 BuffTemp[2] = Gyro.CMD_In; //D9
Kovalev_D 209:224e7331a061 827 BuffTemp[3] = 0;
Kovalev_D 209:224e7331a061 828 Check(BuffTemp, CRC_N);
Kovalev_D 209:224e7331a061 829 WriteConN (BuffTemp,CRC_N);
Kovalev_D 103:e96f08947def 830 }
Kovalev_D 209:224e7331a061 831 void DeviceMode()
Kovalev_D 209:224e7331a061 832 {
Kovalev_D 209:224e7331a061 833 int TempMod=1;
Kovalev_D 209:224e7331a061 834 BuffTemp[0] = Gyro.SOC_Out; //DD
Kovalev_D 209:224e7331a061 835 BuffTemp[1] = Gyro.My_Addres; //00
Kovalev_D 209:224e7331a061 836 BuffTemp[2] = Gyro.CMD_In; //D9
Kovalev_D 209:224e7331a061 837 TempMod = BuffTemp[3] & 0xf;
Kovalev_D 209:224e7331a061 838 Gyro.RgConMod = TempMod;
Kovalev_D 209:224e7331a061 839 BuffTemp[3]=Gyro.RgConMod & 0xff;
Kovalev_D 209:224e7331a061 840 BuffTemp[4]=0;
Kovalev_D 209:224e7331a061 841 BuffTemp[5]=0;
Kovalev_D 209:224e7331a061 842 Check(BuffTemp, CRC_N);
Kovalev_D 209:224e7331a061 843 WriteConN (BuffTemp,CRC_N);
Kovalev_D 209:224e7331a061 844 }
Kovalev_D 102:4270092be987 845
igor_v 0:8ad47e2b6f00 846 unsigned int Check(char *c, unsigned int Count)
igor_v 0:8ad47e2b6f00 847 {
igor_v 21:bc8c1cec3da6 848 int i=1;
igor_v 21:bc8c1cec3da6 849 unsigned int temp,CRC;
igor_v 21:bc8c1cec3da6 850
igor_v 21:bc8c1cec3da6 851
igor_v 21:bc8c1cec3da6 852 temp=1;
igor_v 21:bc8c1cec3da6 853 CRC=0;
igor_v 21:bc8c1cec3da6 854
igor_v 21:bc8c1cec3da6 855
igor_v 21:bc8c1cec3da6 856 for(; i<Count-2; i++) {
igor_v 21:bc8c1cec3da6 857 CRC+=c[i];
igor_v 21:bc8c1cec3da6 858 }
igor_v 0:8ad47e2b6f00 859
igor_v 21:bc8c1cec3da6 860 if(c[Count-2]!=((CRC>>8)&0xFF)) {
igor_v 21:bc8c1cec3da6 861 temp=0;
igor_v 30:17c84ed091b3 862 Gyro.RsErrLine = (Gyro.RsErrLine)&=0x2;
igor_v 21:bc8c1cec3da6 863 }
igor_v 0:8ad47e2b6f00 864
igor_v 21:bc8c1cec3da6 865 if(c[Count-1]!=((CRC>>0)&0xFF)) {
igor_v 21:bc8c1cec3da6 866 temp=0;
igor_v 30:17c84ed091b3 867 // Gyro.RsErrLine= (Gyro.RsErrLine)=0x2;
igor_v 21:bc8c1cec3da6 868 }
igor_v 21:bc8c1cec3da6 869
igor_v 21:bc8c1cec3da6 870 c[Count-2]=(CRC>>8)&0xFF;
igor_v 21:bc8c1cec3da6 871 c[Count-1]=(CRC>>0)&0xFF;
igor_v 21:bc8c1cec3da6 872
igor_v 21:bc8c1cec3da6 873 return temp;
igor_v 0:8ad47e2b6f00 874 }
igor_v 0:8ad47e2b6f00 875
igor_v 0:8ad47e2b6f00 876 int Getlengf(void)
igor_v 0:8ad47e2b6f00 877 {
Kovalev_D 121:bbae560cdd43 878 unsigned int lengf;
Kovalev_D 121:bbae560cdd43 879 lengf = 1;
Kovalev_D 194:8f3cb37a5541 880 switch(Gyro.CMD_In)
Kovalev_D 194:8f3cb37a5541 881 {
Kovalev_D 194:8f3cb37a5541 882 case 0x99: lengf=6; CRC_N=8; break; //Mintainance
Kovalev_D 194:8f3cb37a5541 883 case 0xB0: lengf=6; CRC_N=9; break; //Delta_Bins
Kovalev_D 194:8f3cb37a5541 884 case 0x0F: lengf=6; CRC_N=8; break; //Delta_Bins
Kovalev_D 194:8f3cb37a5541 885 case 0xA0: lengf=6; CRC_N=8; break; //Delta_PS
Kovalev_D 194:8f3cb37a5541 886 case 0xDD: lengf=6; CRC_N=44; break; //m_rate
Kovalev_D 209:224e7331a061 887 case 0x0A: lengf=8; CRC_N=6; break; //m_stymul
Kovalev_D 194:8f3cb37a5541 888 case 0xE9: lengf=6; CRC_N=8; break; //DeviceMode
Kovalev_D 194:8f3cb37a5541 889 case 0xE8: lengf=6; CRC_N=8; break; //DeviceMode
Kovalev_D 194:8f3cb37a5541 890 case 0xA5: lengf=6; CRC_N=8; break; //DeviceMode
Kovalev_D 209:224e7331a061 891 case 0xD8: lengf=6; CRC_N=8; break; //m_control
Kovalev_D 194:8f3cb37a5541 892 case 0xD9: lengf=6; CRC_N=8; break; //m_control
Kovalev_D 209:224e7331a061 893 case 0xE4: lengf=8; CRC_N=6; break; //M_VIB_W
Kovalev_D 209:224e7331a061 894 case 0xE6: lengf=8; CRC_N=6; break; //M_Gph_W
Kovalev_D 209:224e7331a061 895
Kovalev_D 194:8f3cb37a5541 896 } return lengf;
igor_v 0:8ad47e2b6f00 897 }
igor_v 0:8ad47e2b6f00 898
igor_v 0:8ad47e2b6f00 899 void Read_CMD(void)
igor_v 21:bc8c1cec3da6 900 {
Kovalev_D 188:4c523cc373cc 901
Kovalev_D 147:1aed74f19a8f 902 Gyro.RsErrLine = (Gyro.RsErrLine)& 0xffff;//для сброса ошибки
Kovalev_D 188:4c523cc373cc 903 CountBuFFIn=ReadChekCon1(BuffTemp);
Kovalev_D 188:4c523cc373cc 904 // чтение данных из консоли
Kovalev_D 188:4c523cc373cc 905 if(CountBuFFIn==1) {
Kovalev_D 190:289514f730ee 906 // если есть первый байт
Kovalev_D 209:224e7331a061 907 if (BuffTemp[0] != SOC_In)
Kovalev_D 209:224e7331a061 908 {
Kovalev_D 147:1aed74f19a8f 909 ReadCon1(BuffTemp);
Kovalev_D 194:8f3cb37a5541 910 Gyro.RsErrLine += 0x100;
Kovalev_D 209:224e7331a061 911 //BuffTemp[99]=Gyro.RsErrLine;
Kovalev_D 209:224e7331a061 912 ReadCon1(BuffTemp);
Kovalev_D 209:224e7331a061 913 }
Kovalev_D 147:1aed74f19a8f 914 }
Kovalev_D 190:289514f730ee 915 else if(CountBuFFIn==2) //если второй байт
Kovalev_D 194:8f3cb37a5541 916 { // широковещаительный
Kovalev_D 209:224e7331a061 917 if (BuffTemp[1] != Gyro.My_Addres /*|| BuffTemp[1] !=0x1f*/)
Kovalev_D 209:224e7331a061 918 {
Kovalev_D 93:b3803774f110 919 ReadCon1(BuffTemp);
Kovalev_D 194:8f3cb37a5541 920 Gyro.RsErrLine += 0x1;
Kovalev_D 209:224e7331a061 921 ReadCon1(BuffTemp);
Kovalev_D 188:4c523cc373cc 922 }
Kovalev_D 147:1aed74f19a8f 923 }
Kovalev_D 190:289514f730ee 924 else if(CountBuFFIn==3) // если третий байт
Kovalev_D 147:1aed74f19a8f 925 {
igor_v 30:17c84ed091b3 926 Gyro.CMD_In=BuffTemp[2];
Kovalev_D 92:c892f0311aa7 927 N=Getlengf();
Kovalev_D 92:c892f0311aa7 928 }
Kovalev_D 92:c892f0311aa7 929 else if(CountBuFFIn==4 && (N==6))
Kovalev_D 92:c892f0311aa7 930 { // N - длина посылки аскглд(для записи параметров). определяется по коду команды в Getlengf();
igor_v 21:bc8c1cec3da6 931 Param1=BuffTemp[3];
Kovalev_D 92:c892f0311aa7 932 }
Kovalev_D 92:c892f0311aa7 933 else if((CountBuFFIn==5)&&(N==7))
Kovalev_D 92:c892f0311aa7 934 {
igor_v 21:bc8c1cec3da6 935 Param1=BuffTemp[3];
igor_v 21:bc8c1cec3da6 936 Param2=BuffTemp[4];
igor_v 0:8ad47e2b6f00 937
Kovalev_D 92:c892f0311aa7 938 }
Kovalev_D 92:c892f0311aa7 939 else if((CountBuFFIn==6)&&(N==8))
Kovalev_D 147:1aed74f19a8f 940 {
igor_v 21:bc8c1cec3da6 941 Param1=BuffTemp[3];
igor_v 21:bc8c1cec3da6 942 Param2=BuffTemp[4];
igor_v 21:bc8c1cec3da6 943 Param3=BuffTemp[5];
Kovalev_D 92:c892f0311aa7 944 }
Kovalev_D 102:4270092be987 945 else if((CountBuFFIn==8)&&(N==10))
Kovalev_D 147:1aed74f19a8f 946 {
Kovalev_D 102:4270092be987 947 Param1=BuffTemp[4];
Kovalev_D 102:4270092be987 948 Param2=BuffTemp[5];
Kovalev_D 102:4270092be987 949 Param3=BuffTemp[6];
Kovalev_D 102:4270092be987 950 Param4=BuffTemp[7];
Kovalev_D 102:4270092be987 951 }
Kovalev_D 98:95b8e79f13e1 952
Kovalev_D 92:c892f0311aa7 953 else if(CountBuFFIn > (N-1))
Kovalev_D 92:c892f0311aa7 954 {
Kovalev_D 147:1aed74f19a8f 955 ReadCon1(BuffTemp);
Kovalev_D 208:19150d2b528f 956
Kovalev_D 209:224e7331a061 957 //if(SA)CMD_M_Stymul_Answer();
Kovalev_D 208:19150d2b528f 958 // if(d8_anser)D8_Answer();
Kovalev_D 208:19150d2b528f 959
Kovalev_D 147:1aed74f19a8f 960 switch(Gyro.CMD_In) {
Kovalev_D 209:224e7331a061 961 case 0x99: /*Gyro.ModeOut=0;*/CMD_Maintenance(); break;
Kovalev_D 209:224e7331a061 962 case 0xD8: CMD_M_Control_D8(); break;
Kovalev_D 194:8f3cb37a5541 963 case 0xE9: CMD_M_Param_R(); break; //чтение параметров
Kovalev_D 194:8f3cb37a5541 964 case 0xE8: CMD_M_Param_W(); break; //запись параметра
Kovalev_D 194:8f3cb37a5541 965 case 0xDA: GLDStartDischarg(); break;
Kovalev_D 194:8f3cb37a5541 966 case 0xD9: CMD_M_Control_D9(); break;
Kovalev_D 208:19150d2b528f 967 case 0x0A: CMD_M_Stymul(); break;
Kovalev_D 209:224e7331a061 968 case 0xDD: TempParam=(BuffTemp[3]) & 0x9f; //Rate
Kovalev_D 193:a0fe8bfc97e4 969 switch(TempParam) {
Kovalev_D 209:224e7331a061 970 case Rate1 : CMD_Rate(); break;
Kovalev_D 210:b02fa166315d 971 case Rate2 : CMD_Rate2(); break;
Kovalev_D 209:224e7331a061 972 case Rate3 : CMD_Rate3(); break;
Kovalev_D 194:8f3cb37a5541 973 case PRate1 : Gyro.ModeOut=1; break;
Kovalev_D 210:b02fa166315d 974 case PRate2 : Gyro.ModeOut=2; break;
Kovalev_D 209:224e7331a061 975 case PRate3 : Gyro.ModeOut=8; break;
Kovalev_D 193:a0fe8bfc97e4 976 }
Kovalev_D 194:8f3cb37a5541 977 break; //DropDelay(); выставка задержки для мультидропа сбрасывается в команде CMD_Maintenance() на () микросекунд;
Kovalev_D 209:224e7331a061 978 case 0xA0: /*DropDelay();*/ TempParam=(BuffTemp[3]) & 0x90; //Delta_PS
Kovalev_D 193:a0fe8bfc97e4 979 switch(TempParam) {
Kovalev_D 193:a0fe8bfc97e4 980 case Delta_500 : CMD_Delta_PS(); break;
Kovalev_D 193:a0fe8bfc97e4 981 case Delta_EXT : CMD_Delta_PS(); break;
Kovalev_D 196:f76dbc081e63 982 case PDelta_500 : Gyro.ModeOut=3; Gyro.Event_500Hz=0; break;
Kovalev_D 193:a0fe8bfc97e4 983 case PDelta_EXT : Gyro.ModeOut=4; break;
Kovalev_D 193:a0fe8bfc97e4 984 }
Kovalev_D 194:8f3cb37a5541 985 break;
Kovalev_D 194:8f3cb37a5541 986 case 0xB0: DropDelay(); TempParam = TempParam=(BuffTemp[3]>>7); //Delta_Bins
Kovalev_D 193:a0fe8bfc97e4 987 switch(TempParam) {
Kovalev_D 196:f76dbc081e63 988 case PDelta_Bins: Gyro.ModeOut=5; Gyro.Event_500Hz=0; break;
Kovalev_D 193:a0fe8bfc97e4 989 case Delta_Bins : CMD_Delta_Bins(); break;
Kovalev_D 193:a0fe8bfc97e4 990 }
Kovalev_D 194:8f3cb37a5541 991 break;
Kovalev_D 194:8f3cb37a5541 992 case 0x0F: DropDelay(); TempParam = (((BuffTemp[3])>>4) & 0x9); //B_Delta
Kovalev_D 193:a0fe8bfc97e4 993 switch(TempParam) {
Kovalev_D 193:a0fe8bfc97e4 994 case PB_Delta_EXT: Gyro.ModeOut=6; break;
Kovalev_D 196:f76dbc081e63 995 case PB_Delta_INT: Gyro.ModeOut=7; Gyro.Event_500Hz=0; break;
Kovalev_D 193:a0fe8bfc97e4 996 case B_Delta_EXT: CMD_B_Delta(); break;
Kovalev_D 193:a0fe8bfc97e4 997 case B_Delta_INT: CMD_B_Delta(); break;
Kovalev_D 193:a0fe8bfc97e4 998 }
Kovalev_D 194:8f3cb37a5541 999 break;
Kovalev_D 194:8f3cb37a5541 1000 case 0xE4: CMD_M_vib(); break;
Kovalev_D 209:224e7331a061 1001 case 0xA5: DeviceMode(); break;
Kovalev_D 194:8f3cb37a5541 1002 case 0xE6: Gph_W(); break;
Kovalev_D 194:8f3cb37a5541 1003 Gyro.RsErrLine = 0;
Kovalev_D 194:8f3cb37a5541 1004 }
Kovalev_D 194:8f3cb37a5541 1005 }
Kovalev_D 147:1aed74f19a8f 1006 }
Kovalev_D 193:a0fe8bfc97e4 1007
Kovalev_D 193:a0fe8bfc97e4 1008
Kovalev_D 147:1aed74f19a8f 1009 void TechLog(void)
Kovalev_D 147:1aed74f19a8f 1010 {
Kovalev_D 208:19150d2b528f 1011 unsigned int temp=0;
Kovalev_D 208:19150d2b528f 1012 if (ReadCon (Time))
Kovalev_D 208:19150d2b528f 1013 {
Kovalev_D 147:1aed74f19a8f 1014 /////////////////////////////////////////////////////////////////
Kovalev_D 147:1aed74f19a8f 1015 ////////////////////////////////////////////////////////////////
Kovalev_D 147:1aed74f19a8f 1016 //////////////////////Выбор FlashMod///////////////////////////
Kovalev_D 147:1aed74f19a8f 1017 ////////////////////////////////////////////////////////////////
Kovalev_D 121:bbae560cdd43 1018
Kovalev_D 205:775d54fdf646 1019 if (Time[0] == 'B') Gyro.FlashMod=1;
Kovalev_D 147:1aed74f19a8f 1020 if (Time[0] == 'R') {Gyro.FlashMod=3;}
Kovalev_D 205:775d54fdf646 1021 if (Time[0] == 'E') {Gyro.FlashMod=4;}
Kovalev_D 147:1aed74f19a8f 1022 ///////////////////////////////////////////////////////////////
Kovalev_D 147:1aed74f19a8f 1023 ///////////////////////////////////////////////////////////////
Kovalev_D 147:1aed74f19a8f 1024 ////////////////////////////////////////////////////////////////
Kovalev_D 209:224e7331a061 1025
Kovalev_D 209:224e7331a061 1026
Kovalev_D 209:224e7331a061 1027
Kovalev_D 209:224e7331a061 1028
Kovalev_D 209:224e7331a061 1029 if (Time[0] == 'f') { // выдача технологическая
Kovalev_D 209:224e7331a061 1030 Gyro.ModAmp += 1;
Kovalev_D 209:224e7331a061 1031 sprintf((Time),"%d \r\n", Gyro.ModAmp);
Kovalev_D 209:224e7331a061 1032 WriteCon(Time);
Kovalev_D 209:224e7331a061 1033 }
Kovalev_D 209:224e7331a061 1034 if (Time[0] == 'd') { // выдача технологическая
Kovalev_D 209:224e7331a061 1035 Gyro.ModAmp -= 1;
Kovalev_D 209:224e7331a061 1036 sprintf((Time),"%d \r\n", Gyro.ModAmp);
Kovalev_D 209:224e7331a061 1037 WriteCon(Time);
Kovalev_D 209:224e7331a061 1038 }
Kovalev_D 147:1aed74f19a8f 1039 if (Time[0] == 'V') { // выдача технологическая
Kovalev_D 209:224e7331a061 1040 Spi.DAC_B += 1000;
Kovalev_D 209:224e7331a061 1041 }
Kovalev_D 147:1aed74f19a8f 1042 if (Time[0] == 'v') { // выдача технологическая
Kovalev_D 209:224e7331a061 1043 Spi.DAC_B -= 1000;
Kovalev_D 209:224e7331a061 1044 }
Kovalev_D 209:224e7331a061 1045 if (Time[0] == 'C') { // выдача технологическая
Kovalev_D 209:224e7331a061 1046 Spi.DAC_B += 2000;
Kovalev_D 209:224e7331a061 1047 }
Kovalev_D 209:224e7331a061 1048 if (Time[0] == 'c') { // выдача технологическая
Kovalev_D 209:224e7331a061 1049 Spi.DAC_B -= 2000;
Kovalev_D 209:224e7331a061 1050 }
Kovalev_D 209:224e7331a061 1051 if (Time[0] == 'X') { // выдача технологическая
Kovalev_D 209:224e7331a061 1052 Spi.DAC_B += 3000;
Kovalev_D 209:224e7331a061 1053 }
Kovalev_D 209:224e7331a061 1054 if (Time[0] == 'x') { // выдача технологическая
Kovalev_D 209:224e7331a061 1055 Spi.DAC_B -= 3000;
Kovalev_D 209:224e7331a061 1056 }
Kovalev_D 209:224e7331a061 1057 if (Time[0] == 'p') { // выдача технологическая
Kovalev_D 209:224e7331a061 1058 PlcOFF //Gyro.RgConA&0x8=0;
Kovalev_D 209:224e7331a061 1059 Gyro.LogMod=1;
Kovalev_D 209:224e7331a061 1060 MODFlag=1;
Kovalev_D 209:224e7331a061 1061 Spi.DAC_B = 16000;
Kovalev_D 209:224e7331a061 1062 }
Kovalev_D 209:224e7331a061 1063 if (Time[0] == 'o') { // выдача технологическая
Kovalev_D 209:224e7331a061 1064 PlcON
Kovalev_D 209:224e7331a061 1065 Gyro.LogMod=0;
Kovalev_D 209:224e7331a061 1066 MODFlag=2;
Kovalev_D 209:224e7331a061 1067 Spi.DAC_B = 32000;
Kovalev_D 209:224e7331a061 1068 }
Kovalev_D 209:224e7331a061 1069
Kovalev_D 209:224e7331a061 1070
Kovalev_D 209:224e7331a061 1071 if (Time[0] == 'u')
Kovalev_D 209:224e7331a061 1072 { // выдача технологическая
Kovalev_D 209:224e7331a061 1073 MODFlag=0; //Mod vibro Hz
Kovalev_D 209:224e7331a061 1074 }
Kovalev_D 209:224e7331a061 1075 if (Time[0] == 'y')
Kovalev_D 209:224e7331a061 1076 { //Mod 250 Hz PLCRegul250();
Kovalev_D 209:224e7331a061 1077 MODFlag=2;
Kovalev_D 209:224e7331a061 1078 }
Kovalev_D 208:19150d2b528f 1079 if (Time[0] == 'l')
Kovalev_D 208:19150d2b528f 1080 { // выдача технологическая
Kovalev_D 206:00341a03e05c 1081 Gyro.My_Addres = GyroP.Str.My_Addres; // Gyro.My_Addres = 0;
Kovalev_D 208:19150d2b528f 1082 Gyro.GLD_Serial = GyroP.Str.GLD_Serial;
Kovalev_D 208:19150d2b528f 1083 Gyro.FrqHZ = GyroP.Str.FrqHZ;
Kovalev_D 206:00341a03e05c 1084 Gyro.Frq = GyroP.Str.FrqHZ<<16;
Kovalev_D 206:00341a03e05c 1085 Gyro.FrqHZmin = GyroP.Str.FrqHZmin<<16;
Kovalev_D 206:00341a03e05c 1086 Gyro.FrqHZmax = GyroP.Str.FrqHZmax<<16;
Kovalev_D 206:00341a03e05c 1087 Gyro.FrqChengSpeed = GyroP.Str.FrqChengSpeed;
Kovalev_D 208:19150d2b528f 1088 Gyro.PLC_Gain = GyroP.Str.PLC_Gain;
Kovalev_D 208:19150d2b528f 1089 Gyro.PLC_Phase = GyroP.Str.PLC_Phase;
Kovalev_D 206:00341a03e05c 1090 Gyro.ModAmp = GyroP.Str.ModAmp;
Kovalev_D 208:19150d2b528f 1091 Gyro.FrqPhase = GyroP.Str.FrqPhase;
Kovalev_D 206:00341a03e05c 1092 Gyro.AmpPer = GyroP.Str.AmpPer;
Kovalev_D 206:00341a03e05c 1093 Gyro.Amp = GyroP.Str.AmpPer<<16;
Kovalev_D 208:19150d2b528f 1094 Gyro.AmpSpeed = GyroP.Str.AmpSpeed;
Kovalev_D 206:00341a03e05c 1095 Gyro.AmpPerDel = GyroP.Str.AmpPerDel;
Kovalev_D 208:19150d2b528f 1096 temp=((GyroP.Str.VB_Fdf_Hi<<16) | GyroP.Str.VB_Fdf_Lo);
Kovalev_D 208:19150d2b528f 1097 temp=temp/18.2;
Kovalev_D 208:19150d2b528f 1098 Gyro.AmpTarget=(unsigned int)(temp);
Kovalev_D 206:00341a03e05c 1099 Gyro.AmpPerMin = GyroP.Str.AmpPerMin;
Kovalev_D 206:00341a03e05c 1100 Gyro.AmpPerMax = GyroP.Str.AmpPerMax;
Kovalev_D 206:00341a03e05c 1101 Gyro.AmpMin = GyroP.Str.AmpMin;
Kovalev_D 206:00341a03e05c 1102 Gyro.AmpTD = GyroP.Str.AmpTD;
Kovalev_D 208:19150d2b528f 1103 Spi.DAC_A = GyroP.Str.DAC_current_Work;
Kovalev_D 206:00341a03e05c 1104 Gyro.Gain_Sin = GyroP.Str.Gain_Sin;
Kovalev_D 206:00341a03e05c 1105 Gyro.Gain_Cos = GyroP.Str.Gain_Cos;
Kovalev_D 207:d1ce992f5d17 1106 Out_G_photo(Gyro.Gain_Sin, Gyro.Gain_Cos);
Kovalev_D 206:00341a03e05c 1107 }
Kovalev_D 208:19150d2b528f 1108
Kovalev_D 208:19150d2b528f 1109
Kovalev_D 208:19150d2b528f 1110 }
igor_v 0:8ad47e2b6f00 1111 }
igor_v 0:8ad47e2b6f00 1112
igor_v 0:8ad47e2b6f00 1113