forkd

Dependencies:   mbed

Fork of LG2 by Dmitry Kovalev

Committer:
Kovalev_D
Date:
Mon Nov 20 13:06:31 2017 +0000
Revision:
222:7de7b3bf3a1d
Parent:
221:53b256368ca1
Child:
224:598aec95415f
0-65536

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