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