forkd

Dependencies:   mbed

Fork of LG2 by Dmitry Kovalev

Committer:
Kovalev_D
Date:
Fri Oct 20 13:16:32 2017 +0000
Revision:
220:04c54405b82d
Parent:
219:2d3475d0dd1b
Child:
221:53b256368ca1
ddd

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