forkd

Dependencies:   mbed

Fork of LGstaandart by Dmitry Kovalev

Committer:
Kovalev_D
Date:
Tue Apr 19 13:58:38 2016 +0000
Revision:
137:8b99cf0842f9
Parent:
136:19b9e6abb86f
665

Who changed what in which revision?

UserRevisionLine numberNew contents of line
igor_v 0:8ad47e2b6f00 1 #include "stdlib.h"
igor_v 0:8ad47e2b6f00 2 #include "LPC17xx.h"
igor_v 0:8ad47e2b6f00 3 #include "Global.h"
Kovalev_D 106:250ddd8629c6 4 int tempNH,tempNL;
igor_v 0:8ad47e2b6f00 5 unsigned int Rate_Flag;
igor_v 0:8ad47e2b6f00 6 unsigned int CountBuFFIn;
igor_v 21:bc8c1cec3da6 7 unsigned int N=0,CRC_N;
igor_v 21:bc8c1cec3da6 8 unsigned int Param1=0;
igor_v 21:bc8c1cec3da6 9 unsigned int Param2=0;
igor_v 21:bc8c1cec3da6 10 unsigned int Param3=0;
igor_v 21:bc8c1cec3da6 11 unsigned int Param4=0;
Kovalev_D 102:4270092be987 12 unsigned int Consol=123;
Kovalev_D 121:bbae560cdd43 13 unsigned int TempParam=1;
Kovalev_D 124:9ae09249f842 14 unsigned int CountParam=0;
Kovalev_D 129:406995a91322 15
Kovalev_D 131:ef5973569c02 16
Kovalev_D 136:19b9e6abb86f 17
Kovalev_D 136:19b9e6abb86f 18
Kovalev_D 136:19b9e6abb86f 19 unsigned int pDestT ;
Kovalev_D 136:19b9e6abb86f 20 GyroParam *Flash;
Kovalev_D 136:19b9e6abb86f 21
Kovalev_D 136:19b9e6abb86f 22
Kovalev_D 136:19b9e6abb86f 23 void ReadFlash ( void)
Kovalev_D 136:19b9e6abb86f 24 {
Kovalev_D 137:8b99cf0842f9 25 // WriteCon("\r\n Pirivet Flash");
Kovalev_D 136:19b9e6abb86f 26 pDestT= (unsigned int) (0x10000);
Kovalev_D 136:19b9e6abb86f 27 Flash = (GyroParam*) pDestT;
Kovalev_D 136:19b9e6abb86f 28 GyroP = *(Flash);
Kovalev_D 137:8b99cf0842f9 29 // sprintf((Time)," dffddfd <%07d> ", GyroP.Str.K_WP_rst_heating);
Kovalev_D 137:8b99cf0842f9 30 //WriteCon(Time);
Kovalev_D 136:19b9e6abb86f 31 }
Kovalev_D 136:19b9e6abb86f 32
Kovalev_D 136:19b9e6abb86f 33
Kovalev_D 136:19b9e6abb86f 34
Kovalev_D 136:19b9e6abb86f 35 unsigned int memdump( char *base, int n )
Kovalev_D 136:19b9e6abb86f 36 {
Kovalev_D 136:19b9e6abb86f 37
Kovalev_D 136:19b9e6abb86f 38 unsigned int *p;
Kovalev_D 136:19b9e6abb86f 39
Kovalev_D 136:19b9e6abb86f 40 printf( " memdump from 0x%08X for %d bytes", (unsigned long)base, n );
Kovalev_D 136:19b9e6abb86f 41
Kovalev_D 136:19b9e6abb86f 42 p = (unsigned int *)((unsigned int)base & ~(unsigned int)0x3);
Kovalev_D 136:19b9e6abb86f 43
Kovalev_D 136:19b9e6abb86f 44 for ( int i = 0; i < (n >> 2); i++, p++ ) {
Kovalev_D 136:19b9e6abb86f 45 if ( !(i % 4) )
Kovalev_D 136:19b9e6abb86f 46 printf( "\r\n 0x%08X :", (unsigned int)p );
Kovalev_D 136:19b9e6abb86f 47 printf( " 0x%08X", *p );
Kovalev_D 136:19b9e6abb86f 48 }
Kovalev_D 136:19b9e6abb86f 49
Kovalev_D 136:19b9e6abb86f 50 printf( "\r\n" );
Kovalev_D 136:19b9e6abb86f 51
Kovalev_D 136:19b9e6abb86f 52
Kovalev_D 136:19b9e6abb86f 53 }
Kovalev_D 136:19b9e6abb86f 54
Kovalev_D 136:19b9e6abb86f 55
Kovalev_D 129:406995a91322 56 void CMD_M_Param_R(void)
igor_v 0:8ad47e2b6f00 57 {
Kovalev_D 129:406995a91322 58 unsigned int NP;
Kovalev_D 129:406995a91322 59 unsigned int Param;
Kovalev_D 129:406995a91322 60 BuffTemp[0] = Gyro.SOC_Out;
Kovalev_D 129:406995a91322 61 BuffTemp[1] = Gyro.My_Addres;
Kovalev_D 129:406995a91322 62
Kovalev_D 129:406995a91322 63 NP = BuffTemp[3];
Kovalev_D 129:406995a91322 64
Kovalev_D 129:406995a91322 65 Param = GyroP.Array[NP];
Kovalev_D 129:406995a91322 66
Kovalev_D 129:406995a91322 67 BuffTemp[2] =(Param >> 8) & 0xff;//старший байт требуемого параметра
Kovalev_D 129:406995a91322 68 BuffTemp[3] =(Param >> 0) & 0xff;//младший байт требуемого параметра
Kovalev_D 129:406995a91322 69
Kovalev_D 129:406995a91322 70 Check(BuffTemp, 6);
Kovalev_D 129:406995a91322 71 WriteConN (BuffTemp,6);
Kovalev_D 129:406995a91322 72 }
Kovalev_D 129:406995a91322 73 void CMD_M_Param_W(void)
Kovalev_D 129:406995a91322 74 {
Kovalev_D 129:406995a91322 75 unsigned int NP;
Kovalev_D 129:406995a91322 76 unsigned int Param;
Kovalev_D 129:406995a91322 77
Kovalev_D 129:406995a91322 78 NP = BuffTemp[3];
Kovalev_D 129:406995a91322 79 Param = (BuffTemp[4]<<8);
Kovalev_D 129:406995a91322 80 Param |= BuffTemp[5];
Kovalev_D 129:406995a91322 81
Kovalev_D 129:406995a91322 82 GyroP.Array[NP] = Param;
Kovalev_D 129:406995a91322 83
Kovalev_D 129:406995a91322 84
Kovalev_D 129:406995a91322 85 BuffTemp[0] = Gyro.SOC_Out;
Kovalev_D 129:406995a91322 86 BuffTemp[1] = Gyro.My_Addres;
Kovalev_D 129:406995a91322 87 BuffTemp[2] = Gyro.CMD_In;
Kovalev_D 129:406995a91322 88 BuffTemp[3] = 0x00;//старший байт требуемого параметра
Kovalev_D 129:406995a91322 89
Kovalev_D 129:406995a91322 90 Check(BuffTemp, 6);
Kovalev_D 129:406995a91322 91 WriteConN (BuffTemp,6);
Kovalev_D 129:406995a91322 92 }
igor_v 0:8ad47e2b6f00 93 void CMD_Maintenance(void)
igor_v 0:8ad47e2b6f00 94 {
Kovalev_D 122:fbacb932a30b 95
Kovalev_D 122:fbacb932a30b 96 BuffTemp[0] = Gyro.SOC_Out;
Kovalev_D 124:9ae09249f842 97 BuffTemp[1] = Gyro.My_Addres;
Kovalev_D 124:9ae09249f842 98 BuffTemp[2] = Gyro.Firmware_Version;
Kovalev_D 124:9ae09249f842 99 BuffTemp[3] = Gyro.GLD_Serial;
igor_v 21:bc8c1cec3da6 100 BuffTemp[4]=0x00;
igor_v 21:bc8c1cec3da6 101 BuffTemp[5]=0x00;
igor_v 21:bc8c1cec3da6 102 Check(BuffTemp, 8);
igor_v 21:bc8c1cec3da6 103 WriteConN (BuffTemp,8);
Kovalev_D 121:bbae560cdd43 104
igor_v 0:8ad47e2b6f00 105 }
Kovalev_D 124:9ae09249f842 106 void CMD_Delta_500Hz(void)
Kovalev_D 124:9ae09249f842 107 {
Kovalev_D 124:9ae09249f842 108 Gyro.Delta500_Event=0;
Kovalev_D 122:fbacb932a30b 109 unsigned int Temp;
Kovalev_D 124:9ae09249f842 110 BuffTemp[ 0] = Gyro.SOC_Out;
Kovalev_D 122:fbacb932a30b 111 BuffTemp[ 1] = Gyro.My_Addres;
Kovalev_D 124:9ae09249f842 112
Kovalev_D 124:9ae09249f842 113 Temp = Gyro.CuruAngle;
Kovalev_D 124:9ae09249f842 114 Gyro.CuruAngle = 0;
Kovalev_D 124:9ae09249f842 115
Kovalev_D 124:9ae09249f842 116 BuffTemp[ 2] =(Temp >> 8) & 0xff;//старший байт разности счетчиков
Kovalev_D 124:9ae09249f842 117 BuffTemp[ 3] =(Temp >> 0) & 0xff;//младший байт разности счетчиков
Kovalev_D 124:9ae09249f842 118
Kovalev_D 124:9ae09249f842 119 BuffTemp[ 4] = CountParam;
Kovalev_D 124:9ae09249f842 120 switch(CountParam) {
Kovalev_D 124:9ae09249f842 121
Kovalev_D 124:9ae09249f842 122
Kovalev_D 124:9ae09249f842 123
Kovalev_D 124:9ae09249f842 124 //F_ras
Kovalev_D 124:9ae09249f842 125 case 0:
Kovalev_D 124:9ae09249f842 126 Temp = Gyro.F_ras;
Kovalev_D 124:9ae09249f842 127 BuffTemp[5] = (Temp >> 8) & 0xff;
Kovalev_D 124:9ae09249f842 128 break;
Kovalev_D 124:9ae09249f842 129
Kovalev_D 124:9ae09249f842 130 case 1:
Kovalev_D 124:9ae09249f842 131 BuffTemp[5] = (Temp >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 132 break;
Kovalev_D 124:9ae09249f842 133
Kovalev_D 124:9ae09249f842 134
Kovalev_D 124:9ae09249f842 135
Kovalev_D 124:9ae09249f842 136 //HFO
Kovalev_D 124:9ae09249f842 137 case 2:
Kovalev_D 124:9ae09249f842 138 Temp = 0;//HFO
Kovalev_D 124:9ae09249f842 139 BuffTemp[5] = (Temp >> 8) & 0xff;
Kovalev_D 124:9ae09249f842 140 break;
Kovalev_D 124:9ae09249f842 141
Kovalev_D 124:9ae09249f842 142 case 3:
Kovalev_D 124:9ae09249f842 143 Temp = 0;//HFO
Kovalev_D 124:9ae09249f842 144 BuffTemp[5] = (Temp >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 145 break;
Kovalev_D 124:9ae09249f842 146
Kovalev_D 124:9ae09249f842 147
Kovalev_D 124:9ae09249f842 148
Kovalev_D 124:9ae09249f842 149 //T_Vibro
Kovalev_D 124:9ae09249f842 150 case 4:
Kovalev_D 124:9ae09249f842 151 Temp = (unsigned int)((7680000*16/(Gyro.Frq>>12)));
Kovalev_D 124:9ae09249f842 152 BuffTemp[5] = (Temp >> 8) & 0xff;
Kovalev_D 124:9ae09249f842 153 break;
Kovalev_D 124:9ae09249f842 154
Kovalev_D 124:9ae09249f842 155 case 5:
Kovalev_D 124:9ae09249f842 156 BuffTemp[5] = (Temp >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 157 break;
Kovalev_D 124:9ae09249f842 158
Kovalev_D 124:9ae09249f842 159
Kovalev_D 124:9ae09249f842 160
Kovalev_D 124:9ae09249f842 161 //L_Vibro
Kovalev_D 124:9ae09249f842 162 case 6:
Kovalev_D 124:9ae09249f842 163 Temp = (unsigned int)(((7680000*16/200) *Gyro.AmpPer /(Gyro.Frq>>12)));
Kovalev_D 124:9ae09249f842 164 BuffTemp[5] = (Temp >> 8) & 0xff;
Kovalev_D 124:9ae09249f842 165
Kovalev_D 124:9ae09249f842 166 break;
Kovalev_D 124:9ae09249f842 167
Kovalev_D 124:9ae09249f842 168 case 7:
Kovalev_D 124:9ae09249f842 169 BuffTemp[5] = (Temp >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 170 break;
Kovalev_D 124:9ae09249f842 171
Kovalev_D 124:9ae09249f842 172
Kovalev_D 124:9ae09249f842 173
Kovalev_D 124:9ae09249f842 174 //Напряжение на регуляторе периметра
Kovalev_D 124:9ae09249f842 175 case 8:
Kovalev_D 124:9ae09249f842 176 Temp = Spi.DAC_B - 0x7fff;
Kovalev_D 124:9ae09249f842 177 BuffTemp[5] = (Temp >> 8) & 0xff;
Kovalev_D 124:9ae09249f842 178
Kovalev_D 124:9ae09249f842 179 break;
Kovalev_D 124:9ae09249f842 180
Kovalev_D 124:9ae09249f842 181 case 9:
Kovalev_D 124:9ae09249f842 182 BuffTemp[5] = (Temp >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 183 break;
Kovalev_D 124:9ae09249f842 184
Kovalev_D 124:9ae09249f842 185
Kovalev_D 124:9ae09249f842 186
Kovalev_D 124:9ae09249f842 187 //темпкратурный канал 0
Kovalev_D 124:9ae09249f842 188 case 10:
Kovalev_D 124:9ae09249f842 189 Temp = 100;
Kovalev_D 124:9ae09249f842 190 BuffTemp[5] = (Temp >> 8) & 0xff;
igor_v 0:8ad47e2b6f00 191
Kovalev_D 124:9ae09249f842 192 break;
Kovalev_D 124:9ae09249f842 193
Kovalev_D 124:9ae09249f842 194 case 11:
Kovalev_D 124:9ae09249f842 195 BuffTemp[5] = (Temp >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 196 break;
Kovalev_D 124:9ae09249f842 197
Kovalev_D 124:9ae09249f842 198
Kovalev_D 124:9ae09249f842 199
Kovalev_D 124:9ae09249f842 200 //темпкратурный канал 1
Kovalev_D 124:9ae09249f842 201 case 12:
Kovalev_D 124:9ae09249f842 202 Temp = Gyro.AD_Slow >> 16;
Kovalev_D 124:9ae09249f842 203 BuffTemp[5] = (Temp >> 8) & 0xff;
Kovalev_D 124:9ae09249f842 204
Kovalev_D 124:9ae09249f842 205 break;
Kovalev_D 124:9ae09249f842 206
Kovalev_D 124:9ae09249f842 207 case 13:
Kovalev_D 124:9ae09249f842 208 BuffTemp[5] = (Temp >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 209 break;
Kovalev_D 124:9ae09249f842 210
Kovalev_D 124:9ae09249f842 211
Kovalev_D 124:9ae09249f842 212
Kovalev_D 124:9ae09249f842 213 //ток 1
Kovalev_D 124:9ae09249f842 214 case 14:
Kovalev_D 124:9ae09249f842 215 Temp = Gyro.In1;
Kovalev_D 124:9ae09249f842 216 BuffTemp[5] = (Temp >> 8) & 0xff;//in1//2
Kovalev_D 124:9ae09249f842 217
Kovalev_D 124:9ae09249f842 218 break;
Kovalev_D 124:9ae09249f842 219
Kovalev_D 124:9ae09249f842 220 case 15:
Kovalev_D 124:9ae09249f842 221 BuffTemp[5] = (Temp >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 222 break;
Kovalev_D 124:9ae09249f842 223
Kovalev_D 124:9ae09249f842 224
Kovalev_D 124:9ae09249f842 225
Kovalev_D 124:9ae09249f842 226 //ток 2
Kovalev_D 124:9ae09249f842 227 case 16:
Kovalev_D 124:9ae09249f842 228 Temp = Gyro.In2;
Kovalev_D 124:9ae09249f842 229 BuffTemp[5] = (Temp >> 8) & 0xff;
Kovalev_D 124:9ae09249f842 230 break;
Kovalev_D 124:9ae09249f842 231
Kovalev_D 124:9ae09249f842 232 case 17:
Kovalev_D 124:9ae09249f842 233 BuffTemp[5] = (Temp >> 0) & 0xff;//in2//3
Kovalev_D 124:9ae09249f842 234 break;
Kovalev_D 124:9ae09249f842 235
Kovalev_D 124:9ae09249f842 236
Kovalev_D 124:9ae09249f842 237
Kovalev_D 124:9ae09249f842 238 //разностный температурный канал Delta Temp
Kovalev_D 124:9ae09249f842 239 case 18:
Kovalev_D 124:9ae09249f842 240 Temp = Gyro.DeltaT;
Kovalev_D 124:9ae09249f842 241 BuffTemp[5] = (Temp >> 8) & 0xff;//дельта
Kovalev_D 124:9ae09249f842 242 break;
Kovalev_D 124:9ae09249f842 243
Kovalev_D 124:9ae09249f842 244 case 19:
Kovalev_D 124:9ae09249f842 245 BuffTemp[5] = (Temp >> 0) & 0xff;
Kovalev_D 124:9ae09249f842 246 break;
Kovalev_D 124:9ae09249f842 247
Kovalev_D 124:9ae09249f842 248
Kovalev_D 124:9ae09249f842 249
Kovalev_D 124:9ae09249f842 250 //температурный канал 5
Kovalev_D 124:9ae09249f842 251 case 20:
Kovalev_D 124:9ae09249f842 252 Temp = Gyro.Termo;//0xa4=164
Kovalev_D 124:9ae09249f842 253 BuffTemp[5] =(Temp >> 8) & 0xff;//температура
Kovalev_D 124:9ae09249f842 254
Kovalev_D 124:9ae09249f842 255 break;
Kovalev_D 124:9ae09249f842 256
Kovalev_D 124:9ae09249f842 257 case 21:
Kovalev_D 124:9ae09249f842 258 BuffTemp[5] =(Temp >> 0) & 0xff;//ADC6 sesnsor 5
Kovalev_D 124:9ae09249f842 259 break;
Kovalev_D 124:9ae09249f842 260 }
Kovalev_D 124:9ae09249f842 261 Check(BuffTemp, 6);
Kovalev_D 124:9ae09249f842 262 WriteConN (BuffTemp,6);
Kovalev_D 128:1e4675a36c93 263
Kovalev_D 124:9ae09249f842 264 CountParam++;
Kovalev_D 124:9ae09249f842 265 if(CountParam>21)CountParam=0;//зацикливания буфера от 0 до 21
Kovalev_D 124:9ae09249f842 266
Kovalev_D 124:9ae09249f842 267 }
Kovalev_D 124:9ae09249f842 268 void CMD_Delta_Ext(void)
Kovalev_D 124:9ae09249f842 269 {
Kovalev_D 124:9ae09249f842 270 unsigned int Temp;
Kovalev_D 128:1e4675a36c93 271 Gyro.EXT_Latch=0;
Kovalev_D 124:9ae09249f842 272 BuffTemp[ 0] = Gyro.SOC_Out;
Kovalev_D 124:9ae09249f842 273 BuffTemp[ 1] = Gyro.My_Addres;
Kovalev_D 124:9ae09249f842 274 Temp = Gyro.CuruAngle;
Kovalev_D 124:9ae09249f842 275 Gyro.CuruAngle = 0;
Kovalev_D 124:9ae09249f842 276
Kovalev_D 124:9ae09249f842 277 BuffTemp[ 2] =(Temp >> 8) & 0xff;//старший байт разности счетчиков
Kovalev_D 124:9ae09249f842 278 BuffTemp[ 3] =(Temp >> 0) & 0xff;//младший байт разности счетчиков
Kovalev_D 124:9ae09249f842 279
Kovalev_D 124:9ae09249f842 280 BuffTemp[ 4] = CountParam;
Kovalev_D 128:1e4675a36c93 281 switch(CountParam) {
Kovalev_D 124:9ae09249f842 282
Kovalev_D 128:1e4675a36c93 283 WriteCon("5");
Kovalev_D 124:9ae09249f842 284
Kovalev_D 124:9ae09249f842 285 //F_ras
Kovalev_D 124:9ae09249f842 286 case 0:
Kovalev_D 124:9ae09249f842 287 Temp = Gyro.F_ras;
Kovalev_D 124:9ae09249f842 288 BuffTemp[5] = (Temp >> 8) & 0xff;
Kovalev_D 128:1e4675a36c93 289
Kovalev_D 124:9ae09249f842 290 break;
Kovalev_D 124:9ae09249f842 291
Kovalev_D 124:9ae09249f842 292 case 1:
Kovalev_D 124:9ae09249f842 293 BuffTemp[5] = (Temp >> 0) & 0xff;
Kovalev_D 128:1e4675a36c93 294
Kovalev_D 124:9ae09249f842 295 break;
Kovalev_D 124:9ae09249f842 296
Kovalev_D 124:9ae09249f842 297
Kovalev_D 124:9ae09249f842 298
Kovalev_D 124:9ae09249f842 299 //HFO
Kovalev_D 124:9ae09249f842 300 case 2:
Kovalev_D 124:9ae09249f842 301 Temp = 0;//HFO
Kovalev_D 124:9ae09249f842 302 BuffTemp[5] = (Temp >> 8) & 0xff;
Kovalev_D 128:1e4675a36c93 303
Kovalev_D 124:9ae09249f842 304 break;
Kovalev_D 124:9ae09249f842 305
Kovalev_D 124:9ae09249f842 306 case 3:
Kovalev_D 124:9ae09249f842 307 Temp = 0;//HFO
Kovalev_D 124:9ae09249f842 308 BuffTemp[5] = (Temp >> 0) & 0xff;
Kovalev_D 128:1e4675a36c93 309
Kovalev_D 124:9ae09249f842 310 break;
Kovalev_D 124:9ae09249f842 311
Kovalev_D 124:9ae09249f842 312
Kovalev_D 124:9ae09249f842 313
Kovalev_D 124:9ae09249f842 314 //T_Vibro
Kovalev_D 124:9ae09249f842 315 case 4:
Kovalev_D 124:9ae09249f842 316 Temp = (unsigned int)((7680000*16/(Gyro.Frq>>12)));
Kovalev_D 124:9ae09249f842 317 BuffTemp[5] = (Temp >> 8) & 0xff;
Kovalev_D 128:1e4675a36c93 318
Kovalev_D 124:9ae09249f842 319 break;
Kovalev_D 124:9ae09249f842 320
Kovalev_D 124:9ae09249f842 321 case 5:
Kovalev_D 124:9ae09249f842 322 BuffTemp[5] = (Temp >> 0) & 0xff;
Kovalev_D 128:1e4675a36c93 323
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 122:fbacb932a30b 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 124:9ae09249f842 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;
Kovalev_D 124:9ae09249f842 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 124:9ae09249f842 367 //темпкратурный канал 1
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 128:1e4675a36c93 428 Check(BuffTemp, 8);
Kovalev_D 128:1e4675a36c93 429 WriteConN (BuffTemp,8);
Kovalev_D 124:9ae09249f842 430 CountParam++;
Kovalev_D 124:9ae09249f842 431 if(CountParam>21)CountParam=0;//зацикливания буфера от 0 до 21
Kovalev_D 122:fbacb932a30b 432 }
Kovalev_D 124:9ae09249f842 433
Kovalev_D 121:bbae560cdd43 434 void CMD_Rate2(void)
Kovalev_D 121:bbae560cdd43 435 {
Kovalev_D 124:9ae09249f842 436 Gyro.Rate2_Event=0;
Kovalev_D 121:bbae560cdd43 437 BuffTemp[ 0] = Gyro.SOC_Out;
Kovalev_D 121:bbae560cdd43 438 BuffTemp[ 1] = Gyro.My_Addres;
Kovalev_D 121:bbae560cdd43 439
Kovalev_D 121:bbae560cdd43 440
Kovalev_D 121:bbae560cdd43 441 BuffTemp[ 2] =(Gyro.CaunPlus >> 8) & 0xff;//старший байт счетчика +.
Kovalev_D 121:bbae560cdd43 442 BuffTemp[ 3] =(Gyro.CaunPlus >> 0) & 0xff;//младший байт счетчика +.
Kovalev_D 121:bbae560cdd43 443
Kovalev_D 121:bbae560cdd43 444 BuffTemp[ 4] =(Gyro.CaunMin >> 8) & 0xff;//старший байт счетчика -.
Kovalev_D 121:bbae560cdd43 445 BuffTemp[ 5] =(Gyro.CaunMin >> 0) & 0xff;//младший байт счетчика -.
Kovalev_D 124:9ae09249f842 446
Kovalev_D 122:fbacb932a30b 447 Check(BuffTemp, 8);
Kovalev_D 122:fbacb932a30b 448 WriteConN (BuffTemp,8);
Kovalev_D 121:bbae560cdd43 449 }
Kovalev_D 124:9ae09249f842 450
igor_v 0:8ad47e2b6f00 451 void CMD_Rate(void)
igor_v 21:bc8c1cec3da6 452 {
Kovalev_D 124:9ae09249f842 453
Kovalev_D 124:9ae09249f842 454 Gyro.Rate1_Event=0;
Kovalev_D 108:030cdde08314 455 unsigned int Temp;
Kovalev_D 107:4d178bcc9d8a 456
igor_v 30:17c84ed091b3 457 Gyro.Firmware_Version=0xff; /// промежуточная затычка
Kovalev_D 122:fbacb932a30b 458
igor_v 0:8ad47e2b6f00 459
igor_v 30:17c84ed091b3 460 BuffTemp[ 0] = Gyro.SOC_Out;
igor_v 30:17c84ed091b3 461 BuffTemp[ 1] = Gyro.My_Addres;
igor_v 21:bc8c1cec3da6 462
Kovalev_D 108:030cdde08314 463
Kovalev_D 112:4a96133a1311 464 BuffTemp[ 2] =(Gyro.CaunPlus >> 8) & 0xff;//старший байт счетчика +.
Kovalev_D 112:4a96133a1311 465 BuffTemp[ 3] =(Gyro.CaunPlus >> 0) & 0xff;//младший байт счетчика +.
Kovalev_D 108:030cdde08314 466
Kovalev_D 112:4a96133a1311 467 BuffTemp[ 4] =(Gyro.CaunMin >> 8) & 0xff;//старший байт счетчика -.
Kovalev_D 112:4a96133a1311 468 BuffTemp[ 5] =(Gyro.CaunMin >> 0) & 0xff;//младший байт счетчика -.
Kovalev_D 108:030cdde08314 469
Kovalev_D 113:8be429494918 470
Kovalev_D 108:030cdde08314 471 Temp = Gyro.CuruAngle;
Kovalev_D 108:030cdde08314 472 Gyro.CuruAngle = 0;
Kovalev_D 125:9400e64d0636 473 Temp = Gyro.AD_Fast >> 16;
Kovalev_D 108:030cdde08314 474 BuffTemp[ 6] =(Temp >> 8) & 0xff;//старший байт разности счетчиков
Kovalev_D 108:030cdde08314 475 BuffTemp[ 7] =(Temp >> 0) & 0xff;//младший байт разности счетчиков
Kovalev_D 108:030cdde08314 476
Kovalev_D 108:030cdde08314 477
Kovalev_D 122:fbacb932a30b 478 Temp = Gyro.F_ras;
Kovalev_D 122:fbacb932a30b 479 BuffTemp[ 8] = (Temp >> 8) & 0xff;//расщипление частота
Kovalev_D 122:fbacb932a30b 480 BuffTemp[ 9] = (Temp >> 0) & 0xff;//
igor_v 21:bc8c1cec3da6 481
Kovalev_D 108:030cdde08314 482 BuffTemp[10] = (Temp >> 8) & 0xff;//выход регулятора гвч;
Kovalev_D 122:fbacb932a30b 483 BuffTemp[11] = (Temp >> 0) & 0xff;
igor_v 21:bc8c1cec3da6 484
Kovalev_D 122:fbacb932a30b 485 Temp = (Gyro.AD_Slow >> 16)- 0x7fff;
Kovalev_D 108:030cdde08314 486 BuffTemp[12]=(Temp >> 8) & 0xff;////
Kovalev_D 108:030cdde08314 487 BuffTemp[13]=(Temp >> 0) & 0xff;////
igor_v 21:bc8c1cec3da6 488
Kovalev_D 108:030cdde08314 489
Kovalev_D 108:030cdde08314 490 Temp = (unsigned int)((7680000*16/(Gyro.Frq>>12)));
Kovalev_D 108:030cdde08314 491 BuffTemp[14] = (Temp >> 8) & 0xff;
Kovalev_D 108:030cdde08314 492 BuffTemp[15] = (Temp >> 0) & 0xff;
igor_v 21:bc8c1cec3da6 493
Kovalev_D 107:4d178bcc9d8a 494 BuffTemp[16] = 0xf;
Kovalev_D 106:250ddd8629c6 495 BuffTemp[17] = 0x02;
Kovalev_D 108:030cdde08314 496
igor_v 21:bc8c1cec3da6 497
Kovalev_D 108:030cdde08314 498 Temp = (unsigned int)(((7680000*16/200) *Gyro.AmpPer /(Gyro.Frq>>12)));
Kovalev_D 108:030cdde08314 499 BuffTemp[18] = (Temp >> 8) & 0xff;
Kovalev_D 108:030cdde08314 500 BuffTemp[19] = (Temp >> 0) & 0xff;
igor_v 21:bc8c1cec3da6 501
Kovalev_D 106:250ddd8629c6 502 BuffTemp[20] = 0x00;
Kovalev_D 106:250ddd8629c6 503 BuffTemp[21] = 0x00;
Kovalev_D 120:9f446f1495e8 504
Kovalev_D 119:4d7fcece9e8e 505
Kovalev_D 125:9400e64d0636 506
Kovalev_D 121:bbae560cdd43 507 Temp = Spi.DAC_B - 0x7fff;
Kovalev_D 108:030cdde08314 508 BuffTemp[22] = (Temp >> 8) & 0xff;
Kovalev_D 108:030cdde08314 509 BuffTemp[23] = (Temp >> 0) & 0xff;
igor_v 21:bc8c1cec3da6 510
Kovalev_D 121:bbae560cdd43 511
Kovalev_D 121:bbae560cdd43 512 Temp = Gyro.PLC_Delta >> 16;
Kovalev_D 121:bbae560cdd43 513 BuffTemp[24] = (Temp >> 8) & 0xff;
Kovalev_D 121:bbae560cdd43 514 BuffTemp[25] = (Temp >> 0) & 0xff;// ХЗ
Kovalev_D 113:8be429494918 515
Kovalev_D 125:9400e64d0636 516 Temp = 100;
Kovalev_D 125:9400e64d0636 517 Temp = Gyro.AD_Slow >> 16;
Kovalev_D 113:8be429494918 518 BuffTemp[26] = (Temp >> 8) & 0xff;
Kovalev_D 113:8be429494918 519 BuffTemp[27] = (Temp >> 0) & 0xff;
Kovalev_D 113:8be429494918 520
Kovalev_D 113:8be429494918 521 Temp = Gyro.AD_Slow >> 16;
Kovalev_D 113:8be429494918 522 BuffTemp[28] = (Temp >> 8) & 0xff;
Kovalev_D 113:8be429494918 523 BuffTemp[29] = (Temp >> 0) & 0xff;
Kovalev_D 113:8be429494918 524
Kovalev_D 113:8be429494918 525 Temp = Gyro.In1;
Kovalev_D 113:8be429494918 526 BuffTemp[30] = (Temp >> 8) & 0xff;//in1//2
Kovalev_D 113:8be429494918 527 BuffTemp[31] = (Temp >> 0) & 0xff;
Kovalev_D 113:8be429494918 528
Kovalev_D 113:8be429494918 529 Temp = Gyro.In2;
Kovalev_D 113:8be429494918 530 BuffTemp[32] = (Temp >> 8) & 0xff;
Kovalev_D 113:8be429494918 531 BuffTemp[33] = (Temp >> 0) & 0xff;//in2//3
Kovalev_D 113:8be429494918 532
Kovalev_D 113:8be429494918 533 Temp = Gyro.DeltaT;
Kovalev_D 113:8be429494918 534 BuffTemp[34] = (Temp >> 8) & 0xff;//дельта
Kovalev_D 113:8be429494918 535 BuffTemp[35] = (Temp >> 0) & 0xff;
Kovalev_D 115:e5a230e5af52 536
Kovalev_D 116:66f1f0ff2dab 537 Temp = Gyro.Termo;//0xa4=164
Kovalev_D 115:e5a230e5af52 538
Kovalev_D 113:8be429494918 539 BuffTemp[36] =(Temp >> 8) & 0xff;//температура
Kovalev_D 115:e5a230e5af52 540 BuffTemp[37] =(Temp >> 0) & 0xff;//ADC6 sesnsor 5
igor_v 21:bc8c1cec3da6 541
Kovalev_D 106:250ddd8629c6 542 BuffTemp[38] =0x00;
Kovalev_D 106:250ddd8629c6 543 BuffTemp[39] =0x00;
Kovalev_D 106:250ddd8629c6 544 BuffTemp[40] =0x00;
Kovalev_D 106:250ddd8629c6 545 BuffTemp[41] =0x00;
igor_v 21:bc8c1cec3da6 546
igor_v 21:bc8c1cec3da6 547
igor_v 21:bc8c1cec3da6 548 Check(BuffTemp, 44);
igor_v 21:bc8c1cec3da6 549 WriteConN (BuffTemp,44);
Kovalev_D 92:c892f0311aa7 550
igor_v 0:8ad47e2b6f00 551 }
igor_v 0:8ad47e2b6f00 552
igor_v 21:bc8c1cec3da6 553 void CMD_M_Control_D8()///установка\сброс регистров управления
igor_v 21:bc8c1cec3da6 554 {
Kovalev_D 104:ab1cb4ff56b2 555 unsigned int bit,NReg,Pa;
Kovalev_D 104:ab1cb4ff56b2 556 unsigned int SR,V,A,Bit_num;
Kovalev_D 104:ab1cb4ff56b2 557 SR=0;
Kovalev_D 104:ab1cb4ff56b2 558 V=0;
Kovalev_D 104:ab1cb4ff56b2 559 A=0;
Kovalev_D 104:ab1cb4ff56b2 560 Bit_num=0;
Kovalev_D 104:ab1cb4ff56b2 561
igor_v 30:17c84ed091b3 562 BuffTemp[0] = Gyro.SOC_Out; //DD
igor_v 30:17c84ed091b3 563 BuffTemp[1] = Gyro.My_Addres; //00
igor_v 30:17c84ed091b3 564 BuffTemp[2] = Gyro.CMD_In; //D8
Kovalev_D 104:ab1cb4ff56b2 565
Kovalev_D 104:ab1cb4ff56b2 566 /*
Kovalev_D 104:ab1cb4ff56b2 567
Kovalev_D 104:ab1cb4ff56b2 568 FrqON
Kovalev_D 104:ab1cb4ff56b2 569 PlcON
Kovalev_D 104:ab1cb4ff56b2 570 HFOOFF
Kovalev_D 104:ab1cb4ff56b2 571 HFOON
igor_v 21:bc8c1cec3da6 572
Kovalev_D 104:ab1cb4ff56b2 573 PlcOFF
Kovalev_D 104:ab1cb4ff56b2 574 PlcON
Kovalev_D 104:ab1cb4ff56b2 575 */
Kovalev_D 104:ab1cb4ff56b2 576 Pa = BuffTemp[3];
Kovalev_D 104:ab1cb4ff56b2 577
Kovalev_D 104:ab1cb4ff56b2 578 SR = Pa >> 0x7;
Kovalev_D 104:ab1cb4ff56b2 579
Kovalev_D 104:ab1cb4ff56b2 580 V = Pa >> 0x5;
Kovalev_D 104:ab1cb4ff56b2 581 V = V & 0x3;
Kovalev_D 104:ab1cb4ff56b2 582
Kovalev_D 104:ab1cb4ff56b2 583 A = Pa >> 0x4;
Kovalev_D 104:ab1cb4ff56b2 584 A = A & 0x1;
Kovalev_D 104:ab1cb4ff56b2 585
Kovalev_D 104:ab1cb4ff56b2 586 Bit_num = Pa & 0xf;
Kovalev_D 104:ab1cb4ff56b2 587
Kovalev_D 104:ab1cb4ff56b2 588 if(SR) {
Kovalev_D 104:ab1cb4ff56b2 589 switch (Bit_num){
Kovalev_D 105:bd01d8d20fb6 590
Kovalev_D 104:ab1cb4ff56b2 591 case 0x06:
Kovalev_D 104:ab1cb4ff56b2 592 FrqON
Kovalev_D 105:bd01d8d20fb6 593 break;
Kovalev_D 105:bd01d8d20fb6 594
Kovalev_D 104:ab1cb4ff56b2 595 case 0x03:
Kovalev_D 105:bd01d8d20fb6 596 HFOON
Kovalev_D 105:bd01d8d20fb6 597 break;
Kovalev_D 105:bd01d8d20fb6 598
Kovalev_D 105:bd01d8d20fb6 599 case 0x01:
Kovalev_D 105:bd01d8d20fb6 600 PlcON
Kovalev_D 105:bd01d8d20fb6 601 break;
Kovalev_D 104:ab1cb4ff56b2 602 }
Kovalev_D 104:ab1cb4ff56b2 603 }
Kovalev_D 104:ab1cb4ff56b2 604 else{
Kovalev_D 104:ab1cb4ff56b2 605 switch (Bit_num){
Kovalev_D 105:bd01d8d20fb6 606
Kovalev_D 105:bd01d8d20fb6 607 case 0x06:
Kovalev_D 104:ab1cb4ff56b2 608 FrqOff
Kovalev_D 105:bd01d8d20fb6 609 break;
Kovalev_D 105:bd01d8d20fb6 610
Kovalev_D 105:bd01d8d20fb6 611 case 0x03:
Kovalev_D 105:bd01d8d20fb6 612 HFOOFF
Kovalev_D 105:bd01d8d20fb6 613 break;
Kovalev_D 105:bd01d8d20fb6 614
Kovalev_D 105:bd01d8d20fb6 615 case 0x01:
Kovalev_D 105:bd01d8d20fb6 616 PlcOFF
Kovalev_D 105:bd01d8d20fb6 617 break;
Kovalev_D 104:ab1cb4ff56b2 618 }
Kovalev_D 104:ab1cb4ff56b2 619 }
Kovalev_D 129:406995a91322 620 BuffTemp[0] = Gyro.SOC_Out; //DD
Kovalev_D 129:406995a91322 621 BuffTemp[1] = Gyro.My_Addres; //00
Kovalev_D 129:406995a91322 622 BuffTemp[2] = Gyro.CMD_In; //D8
Kovalev_D 129:406995a91322 623 BuffTemp[3] = A<<4;
Kovalev_D 129:406995a91322 624 BuffTemp[4] = 0x0;
Kovalev_D 129:406995a91322 625 BuffTemp[5] = 0x0;
Kovalev_D 129:406995a91322 626 Check(BuffTemp, CRC_N);
Kovalev_D 129:406995a91322 627 WriteConN (BuffTemp,CRC_N);
igor_v 0:8ad47e2b6f00 628 }
igor_v 0:8ad47e2b6f00 629
igor_v 21:bc8c1cec3da6 630 void CMD_M_Control_D9()///чтение регистров управления
igor_v 21:bc8c1cec3da6 631 {
igor_v 21:bc8c1cec3da6 632 int bit,NReg;
igor_v 30:17c84ed091b3 633 BuffTemp[0] = Gyro.SOC_Out; //DD
igor_v 30:17c84ed091b3 634 BuffTemp[1] = Gyro.My_Addres; //00
igor_v 30:17c84ed091b3 635 BuffTemp[2] = Gyro.CMD_In; //D9
igor_v 21:bc8c1cec3da6 636 if ((Param1 & 0x10) == 0) {
igor_v 21:bc8c1cec3da6 637 BuffTemp[3]=0<<4;
igor_v 30:17c84ed091b3 638 BuffTemp[4] = (Gyro.RgConA>>8 )& 0xff;
igor_v 30:17c84ed091b3 639 BuffTemp[5] = Gyro.RgConA & 0xff;
igor_v 21:bc8c1cec3da6 640 } else {
igor_v 21:bc8c1cec3da6 641 BuffTemp[3]=1<<4;
igor_v 30:17c84ed091b3 642 BuffTemp[4] = (Gyro.RgConB>>8 ) & 0xff;
igor_v 30:17c84ed091b3 643 BuffTemp[5] = Gyro.RgConB & 0xff;
igor_v 21:bc8c1cec3da6 644 }
igor_v 21:bc8c1cec3da6 645 Check(BuffTemp, CRC_N);
igor_v 21:bc8c1cec3da6 646 WriteConN (BuffTemp,CRC_N);
igor_v 21:bc8c1cec3da6 647 }
igor_v 21:bc8c1cec3da6 648 // (номер (код) ЦАПа 0...3, старший байт требуемого ЦАПа, младший байт треб ЦАПа)
igor_v 0:8ad47e2b6f00 649 void CMD_M_Stymul()
igor_v 0:8ad47e2b6f00 650 {
igor_v 21:bc8c1cec3da6 651 int temp;
Kovalev_D 102:4270092be987 652 int HFO;
Kovalev_D 102:4270092be987 653 temp=BuffTemp[3];
Kovalev_D 102:4270092be987 654 Consol = temp&0x3;
Kovalev_D 103:e96f08947def 655 HFO = temp&0x3;// // (номер (код) ЦАПа 0...3, HFO - 3dac, PLC - 0DAC
igor_v 21:bc8c1cec3da6 656 temp =((BuffTemp[4]<<8) | BuffTemp[5]);
igor_v 21:bc8c1cec3da6 657 // temp=0;
igor_v 21:bc8c1cec3da6 658 temp=temp&0xFFFF;
Kovalev_D 102:4270092be987 659
Kovalev_D 102:4270092be987 660 if(HFO)
Kovalev_D 102:4270092be987 661 {
Kovalev_D 102:4270092be987 662 Spi.DAC_A=(unsigned int)temp;
Kovalev_D 102:4270092be987 663 }
Kovalev_D 102:4270092be987 664 else{
igor_v 21:bc8c1cec3da6 665 DACF =(temp*K_DAC)+deltaDAC;
igor_v 21:bc8c1cec3da6 666 Spi.DAC_B =(unsigned int)(DACF) /*(unsigned int)(temp*K_DAC+deltaDAC)*/; // K_DAC);
igor_v 21:bc8c1cec3da6 667 }
igor_v 0:8ad47e2b6f00 668 }
Kovalev_D 103:e96f08947def 669 void Gph_W()
Kovalev_D 103:e96f08947def 670 {
Kovalev_D 108:030cdde08314 671 Out_G_photo(BuffTemp[4],BuffTemp[5]);
Kovalev_D 103:e96f08947def 672 }
igor_v 0:8ad47e2b6f00 673
Kovalev_D 98:95b8e79f13e1 674 void CMD_M_vib()
Kovalev_D 115:e5a230e5af52 675 {
Kovalev_D 102:4270092be987 676 unsigned int temp1,temp2;
Kovalev_D 102:4270092be987 677
Kovalev_D 102:4270092be987 678 temp1 =((BuffTemp[4]<<8) | BuffTemp[5]);
Kovalev_D 102:4270092be987 679 temp1=temp1&0xFFFF;
Kovalev_D 102:4270092be987 680
Kovalev_D 102:4270092be987 681 temp2 =((BuffTemp[6]<<8) | BuffTemp[7]);
Kovalev_D 102:4270092be987 682 temp2=temp2&0xFFFF;
Kovalev_D 102:4270092be987 683 Gyro.Frq = ((unsigned int) ((7680000*16/temp1)))*16*16*16;
Kovalev_D 102:4270092be987 684 Consol=Gyro.Frq ;
Kovalev_D 98:95b8e79f13e1 685 }
igor_v 0:8ad47e2b6f00 686 unsigned int Check(char *c, unsigned int Count)
igor_v 0:8ad47e2b6f00 687 {
igor_v 21:bc8c1cec3da6 688 int i=1;
igor_v 21:bc8c1cec3da6 689 unsigned int temp,CRC;
igor_v 21:bc8c1cec3da6 690
igor_v 21:bc8c1cec3da6 691
igor_v 21:bc8c1cec3da6 692 temp=1;
igor_v 21:bc8c1cec3da6 693 CRC=0;
igor_v 21:bc8c1cec3da6 694
igor_v 21:bc8c1cec3da6 695
igor_v 21:bc8c1cec3da6 696 for(; i<Count-2; i++) {
igor_v 21:bc8c1cec3da6 697 CRC+=c[i];
igor_v 21:bc8c1cec3da6 698 }
igor_v 0:8ad47e2b6f00 699
igor_v 21:bc8c1cec3da6 700 if(c[Count-2]!=((CRC>>8)&0xFF)) {
igor_v 21:bc8c1cec3da6 701 temp=0;
igor_v 30:17c84ed091b3 702 Gyro.RsErrLine = (Gyro.RsErrLine)&=0x2;
igor_v 21:bc8c1cec3da6 703 }
igor_v 0:8ad47e2b6f00 704
igor_v 21:bc8c1cec3da6 705 if(c[Count-1]!=((CRC>>0)&0xFF)) {
igor_v 21:bc8c1cec3da6 706 temp=0;
igor_v 30:17c84ed091b3 707 // Gyro.RsErrLine= (Gyro.RsErrLine)=0x2;
igor_v 21:bc8c1cec3da6 708 }
igor_v 21:bc8c1cec3da6 709
igor_v 21:bc8c1cec3da6 710 c[Count-2]=(CRC>>8)&0xFF;
igor_v 21:bc8c1cec3da6 711 c[Count-1]=(CRC>>0)&0xFF;
igor_v 21:bc8c1cec3da6 712
igor_v 21:bc8c1cec3da6 713
igor_v 21:bc8c1cec3da6 714
igor_v 21:bc8c1cec3da6 715 return temp;
igor_v 0:8ad47e2b6f00 716 }
igor_v 0:8ad47e2b6f00 717
igor_v 0:8ad47e2b6f00 718 int Getlengf(void)
igor_v 0:8ad47e2b6f00 719 {
Kovalev_D 121:bbae560cdd43 720 unsigned int lengf;
Kovalev_D 121:bbae560cdd43 721 lengf = 1;
igor_v 30:17c84ed091b3 722 switch(Gyro.CMD_In) {
igor_v 30:17c84ed091b3 723 case 0x99://Gyrotainance
Kovalev_D 92:c892f0311aa7 724
igor_v 21:bc8c1cec3da6 725 lengf=6;
igor_v 21:bc8c1cec3da6 726 CRC_N=8;
igor_v 21:bc8c1cec3da6 727 break;
igor_v 0:8ad47e2b6f00 728
igor_v 21:bc8c1cec3da6 729 case 0x0A: //m_stymul
igor_v 21:bc8c1cec3da6 730 lengf=8;
igor_v 21:bc8c1cec3da6 731 break;
igor_v 21:bc8c1cec3da6 732
Kovalev_D 129:406995a91322 733 case 0xE9://DeviceMode
igor_v 21:bc8c1cec3da6 734
igor_v 21:bc8c1cec3da6 735 lengf=6;
igor_v 21:bc8c1cec3da6 736 CRC_N=8;
igor_v 21:bc8c1cec3da6 737 break;
Kovalev_D 129:406995a91322 738 case 0xE8://DeviceMode
igor_v 21:bc8c1cec3da6 739
Kovalev_D 129:406995a91322 740 lengf=6;
Kovalev_D 129:406995a91322 741 CRC_N=8;
Kovalev_D 129:406995a91322 742 break;
Kovalev_D 129:406995a91322 743
Kovalev_D 129:406995a91322 744 case 0xA5://DeviceMode
Kovalev_D 129:406995a91322 745
Kovalev_D 129:406995a91322 746 lengf=6;
Kovalev_D 129:406995a91322 747 CRC_N=8;
Kovalev_D 129:406995a91322 748 break;
Kovalev_D 129:406995a91322 749
igor_v 21:bc8c1cec3da6 750 case 0xDD://m_rate
igor_v 21:bc8c1cec3da6 751 lengf=6;
igor_v 21:bc8c1cec3da6 752 CRC_N=44;
igor_v 21:bc8c1cec3da6 753 break;
Kovalev_D 124:9ae09249f842 754
Kovalev_D 124:9ae09249f842 755 case 0xA0://Delta_PS
Kovalev_D 124:9ae09249f842 756 lengf=6;
Kovalev_D 124:9ae09249f842 757 CRC_N=8;
Kovalev_D 124:9ae09249f842 758 break;
Kovalev_D 124:9ae09249f842 759
Kovalev_D 124:9ae09249f842 760
igor_v 21:bc8c1cec3da6 761 case 0xB0://DeviceMode
igor_v 21:bc8c1cec3da6 762
igor_v 21:bc8c1cec3da6 763 lengf=6;
igor_v 21:bc8c1cec3da6 764 CRC_N=8;
igor_v 21:bc8c1cec3da6 765 break;
igor_v 21:bc8c1cec3da6 766
igor_v 21:bc8c1cec3da6 767 case 0xD8://m_control
igor_v 0:8ad47e2b6f00 768
igor_v 21:bc8c1cec3da6 769 lengf=6;
igor_v 21:bc8c1cec3da6 770 CRC_N=8;
igor_v 21:bc8c1cec3da6 771 break;
igor_v 21:bc8c1cec3da6 772
igor_v 21:bc8c1cec3da6 773 case 0xD9://m_control
igor_v 0:8ad47e2b6f00 774
igor_v 21:bc8c1cec3da6 775 lengf=6;
igor_v 21:bc8c1cec3da6 776 CRC_N=8;
igor_v 21:bc8c1cec3da6 777 break;
Kovalev_D 102:4270092be987 778
Kovalev_D 102:4270092be987 779 case 0xE4:
Kovalev_D 98:95b8e79f13e1 780 lengf=8;
Kovalev_D 98:95b8e79f13e1 781 break;
Kovalev_D 103:e96f08947def 782
Kovalev_D 103:e96f08947def 783
Kovalev_D 103:e96f08947def 784 case 0xE6:
Kovalev_D 103:e96f08947def 785 lengf=8;
Kovalev_D 103:e96f08947def 786 break;
Kovalev_D 103:e96f08947def 787
igor_v 21:bc8c1cec3da6 788 }
Kovalev_D 98:95b8e79f13e1 789
igor_v 21:bc8c1cec3da6 790 return lengf;
igor_v 0:8ad47e2b6f00 791 }
igor_v 0:8ad47e2b6f00 792
igor_v 0:8ad47e2b6f00 793 void Read_CMD(void)
igor_v 21:bc8c1cec3da6 794 {
Kovalev_D 92:c892f0311aa7 795
Kovalev_D 45:cbc955aecebe 796
Kovalev_D 45:cbc955aecebe 797 Gyro.RsErrLine = (Gyro.RsErrLine)& 0xffff;//для сброса ошибки
igor_v 21:bc8c1cec3da6 798
Kovalev_D 93:b3803774f110 799 CountBuFFIn=ReadChekCon1(BuffTemp); // чтение данных из консоли
igor_v 42:6fc307c4963e 800
Kovalev_D 92:c892f0311aa7 801 if(CountBuFFIn==1) { // если есть первый байт
igor_v 21:bc8c1cec3da6 802 if (BuffTemp[0] != SOC_In) {
Kovalev_D 93:b3803774f110 803 ReadCon1(BuffTemp);
igor_v 30:17c84ed091b3 804 Gyro.RsErrLine += 0x100;//WriteCon("\n\r ...Error.... ");
Kovalev_D 93:b3803774f110 805 BuffTemp[99]=Gyro.RsErrLine;
Kovalev_D 102:4270092be987 806
igor_v 21:bc8c1cec3da6 807 }
Kovalev_D 92:c892f0311aa7 808 } else if(CountBuFFIn==2) { //если второй ,fqn
igor_v 30:17c84ed091b3 809 if (BuffTemp[1] != Gyro.My_Addres) {
Kovalev_D 93:b3803774f110 810 ReadCon1(BuffTemp);
igor_v 30:17c84ed091b3 811 Gyro.RsErrLine += 0x1;//WriteCon("\n\r ...Error_ADDRES.... ");
igor_v 21:bc8c1cec3da6 812 }
igor_v 42:6fc307c4963e 813 } else if(CountBuFFIn==3) { // если ьоетий байт
igor_v 30:17c84ed091b3 814 Gyro.CMD_In=BuffTemp[2];
Kovalev_D 92:c892f0311aa7 815 N=Getlengf();
Kovalev_D 92:c892f0311aa7 816 }
Kovalev_D 92:c892f0311aa7 817 else if(CountBuFFIn==4 && (N==6))
Kovalev_D 92:c892f0311aa7 818 { // N - длина посылки аскглд(для записи параметров). определяется по коду команды в Getlengf();
igor_v 21:bc8c1cec3da6 819 Param1=BuffTemp[3];
Kovalev_D 92:c892f0311aa7 820 }
Kovalev_D 92:c892f0311aa7 821 else if((CountBuFFIn==5)&&(N==7))
Kovalev_D 92:c892f0311aa7 822 {
Kovalev_D 92:c892f0311aa7 823
igor_v 21:bc8c1cec3da6 824 Param1=BuffTemp[3];
igor_v 21:bc8c1cec3da6 825 Param2=BuffTemp[4];
igor_v 0:8ad47e2b6f00 826
Kovalev_D 92:c892f0311aa7 827 }
Kovalev_D 92:c892f0311aa7 828 else if((CountBuFFIn==6)&&(N==8))
Kovalev_D 92:c892f0311aa7 829 {
igor_v 21:bc8c1cec3da6 830 Param1=BuffTemp[3];
igor_v 21:bc8c1cec3da6 831 Param2=BuffTemp[4];
igor_v 21:bc8c1cec3da6 832 Param3=BuffTemp[5];
Kovalev_D 92:c892f0311aa7 833 }
Kovalev_D 102:4270092be987 834 else if((CountBuFFIn==8)&&(N==10))
Kovalev_D 102:4270092be987 835 {
Kovalev_D 102:4270092be987 836 Param1=BuffTemp[4];
Kovalev_D 102:4270092be987 837 Param2=BuffTemp[5];
Kovalev_D 102:4270092be987 838 Param3=BuffTemp[6];
Kovalev_D 102:4270092be987 839 Param4=BuffTemp[7];
Kovalev_D 102:4270092be987 840 }
Kovalev_D 98:95b8e79f13e1 841
Kovalev_D 92:c892f0311aa7 842 else if(CountBuFFIn > (N-1))
Kovalev_D 92:c892f0311aa7 843 {
Kovalev_D 93:b3803774f110 844 ReadCon1(BuffTemp);
igor_v 30:17c84ed091b3 845 switch(Gyro.CMD_In) {
Kovalev_D 122:fbacb932a30b 846 Rate_Flag=0;
Kovalev_D 129:406995a91322 847
Kovalev_D 92:c892f0311aa7 848 case 0x99:
Kovalev_D 124:9ae09249f842 849 Gyro.ModeOut=0;
igor_v 21:bc8c1cec3da6 850 CMD_Maintenance();
Kovalev_D 124:9ae09249f842 851 break;
Kovalev_D 129:406995a91322 852
Kovalev_D 124:9ae09249f842 853 case 0xA0:
Kovalev_D 124:9ae09249f842 854 TempParam=(BuffTemp[3]) & 0x90;
Kovalev_D 124:9ae09249f842 855 if (TempParam==Delta_500) CMD_Delta_500Hz();
Kovalev_D 124:9ae09249f842 856 else if (TempParam==Delta_EXT) CMD_Delta_Ext();
Kovalev_D 124:9ae09249f842 857 else if (TempParam==PDelta_500) { Gyro.ModeOut=3; Gyro.Delta500_Event=0; WriteCon("Delta500"); }
Kovalev_D 124:9ae09249f842 858 else if (TempParam==PDelta_EXT) { Gyro.ModeOut=4; Gyro.DeltaEXT_Event=0; WriteCon("deltaEXT"); }
igor_v 21:bc8c1cec3da6 859 break;
Kovalev_D 129:406995a91322 860
igor_v 21:bc8c1cec3da6 861 case 0xD8:
igor_v 21:bc8c1cec3da6 862 CMD_M_Control_D8();
Kovalev_D 124:9ae09249f842 863 break;
Kovalev_D 129:406995a91322 864
Kovalev_D 129:406995a91322 865 case 0xE9://чтение параметров
Kovalev_D 129:406995a91322 866 CMD_M_Param_R();
Kovalev_D 129:406995a91322 867 break;
Kovalev_D 129:406995a91322 868
Kovalev_D 129:406995a91322 869 case 0xE8://запись параметра
Kovalev_D 129:406995a91322 870 CMD_M_Param_W();
Kovalev_D 129:406995a91322 871 break;
Kovalev_D 129:406995a91322 872
igor_v 21:bc8c1cec3da6 873 case 0xD9:
igor_v 21:bc8c1cec3da6 874 CMD_M_Control_D9();
igor_v 21:bc8c1cec3da6 875 break;
Kovalev_D 129:406995a91322 876
igor_v 21:bc8c1cec3da6 877 case 0x0A:
Kovalev_D 45:cbc955aecebe 878 CMD_M_Stymul();
igor_v 21:bc8c1cec3da6 879 break;
Kovalev_D 129:406995a91322 880
igor_v 21:bc8c1cec3da6 881 case 0xDD:
Kovalev_D 124:9ae09249f842 882 TempParam=(BuffTemp[3]) & 0x9f;
Kovalev_D 124:9ae09249f842 883 if (TempParam == Rate1) { CMD_Rate(); WriteCon("Rate11");}
Kovalev_D 124:9ae09249f842 884 else if (TempParam == Rate2) { CMD_Rate2(); WriteCon("Rate21");}
Kovalev_D 124:9ae09249f842 885 else if (TempParam == PRate1) { Gyro.ModeOut=1; Gyro.Rate1_Event=0; WriteCon("Rate12");}
Kovalev_D 124:9ae09249f842 886 else if (TempParam == PRate2) { Gyro.ModeOut=2; Gyro.Rate2_Event=0; WriteCon("Rate22");}
Kovalev_D 122:fbacb932a30b 887 break;
Kovalev_D 129:406995a91322 888
Kovalev_D 102:4270092be987 889 case 0xE4:
Kovalev_D 102:4270092be987 890 CMD_M_vib();
Kovalev_D 102:4270092be987 891 break;
Kovalev_D 129:406995a91322 892
Kovalev_D 103:e96f08947def 893 case 0xE6:
Kovalev_D 103:e96f08947def 894 Gph_W();
Kovalev_D 103:e96f08947def 895 break;
Kovalev_D 108:030cdde08314 896
Kovalev_D 103:e96f08947def 897
igor_v 30:17c84ed091b3 898 Gyro.RsErrLine = 0;
Kovalev_D 103:e96f08947def 899
Kovalev_D 103:e96f08947def 900
Kovalev_D 102:4270092be987 901 }
Kovalev_D 121:bbae560cdd43 902
igor_v 21:bc8c1cec3da6 903 }
Kovalev_D 121:bbae560cdd43 904 // else if(CountBuFFIn > 40 )
Kovalev_D 121:bbae560cdd43 905 // {
Kovalev_D 121:bbae560cdd43 906 // ReadCon1(BuffTemp);
Kovalev_D 121:bbae560cdd43 907 // }
Kovalev_D 121:bbae560cdd43 908
igor_v 0:8ad47e2b6f00 909 }
igor_v 0:8ad47e2b6f00 910
igor_v 0:8ad47e2b6f00 911
igor_v 21:bc8c1cec3da6 912