fork

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Kovalev_D
Date:
Wed Apr 06 15:40:17 2016 +0000
Revision:
120:9f446f1495e8
Parent:
119:4d7fcece9e8e
Child:
121:bbae560cdd43
1212

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;
igor_v 0:8ad47e2b6f00 13 /*
igor_v 21:bc8c1cec3da6 14 void exec_CMD(void) //r. === процедура окончательной дешифрации и исполнения команды
igor_v 0:8ad47e2b6f00 15 {
igor_v 0:8ad47e2b6f00 16 unsigned int Comand_code;
igor_v 21:bc8c1cec3da6 17
igor_v 21:bc8c1cec3da6 18 //rx_buf_copy = 1; //r. предустанов флага копирования приемного буфера
igor_v 0:8ad47e2b6f00 19
igor_v 0:8ad47e2b6f00 20 Comand_code = (rcv_buf[2] & 0xFF) << 8;
igor_v 21:bc8c1cec3da6 21 PC_Comand = Comand_code | (rcv_buf[3] & 0xFF); //e. save it in the memory for echo-transmission //r. сохранить его в памяти для обратной передачи
igor_v 0:8ad47e2b6f00 22 }*/
igor_v 0:8ad47e2b6f00 23 void CMD_Maintenance(void)
igor_v 0:8ad47e2b6f00 24 {
igor_v 30:17c84ed091b3 25 BuffTemp[0] = Gyro.SOC_Out;
igor_v 30:17c84ed091b3 26 BuffTemp[1] = Gyro .My_Addres;
igor_v 30:17c84ed091b3 27 BuffTemp[2] = Gyro .Firmware_Version;
igor_v 30:17c84ed091b3 28 BuffTemp[3] = Gyro .GLD_Serial;
igor_v 21:bc8c1cec3da6 29 BuffTemp[4]=0x00;
igor_v 21:bc8c1cec3da6 30 BuffTemp[5]=0x00;
igor_v 21:bc8c1cec3da6 31 Check(BuffTemp, 8);
igor_v 21:bc8c1cec3da6 32 WriteConN (BuffTemp,8);
igor_v 0:8ad47e2b6f00 33 }
igor_v 0:8ad47e2b6f00 34
igor_v 0:8ad47e2b6f00 35 void CMD_Rate(void)
igor_v 21:bc8c1cec3da6 36 {
Kovalev_D 107:4d178bcc9d8a 37
Kovalev_D 115:e5a230e5af52 38
Kovalev_D 108:030cdde08314 39 unsigned int Temp;
Kovalev_D 115:e5a230e5af52 40
igor_v 21:bc8c1cec3da6 41 unsigned int Cnt_PlsL , Cnt_PlsH; // Счетчик +.
igor_v 21:bc8c1cec3da6 42 unsigned int Cnt_MnsL , Cnt_MnsH; // Счетчик -.
igor_v 21:bc8c1cec3da6 43 unsigned int Cnt_DifL , Cnt_DifH; // Разность счетчиков.
igor_v 21:bc8c1cec3da6 44 unsigned int F_rasL , F_rasH; // Частота расщепления.
igor_v 21:bc8c1cec3da6 45
Kovalev_D 106:250ddd8629c6 46 unsigned int HF_regL , HF_regH; // Выход регулятора ГВЧ.
Kovalev_D 106:250ddd8629c6 47 unsigned int HF_difL , HF_difH; // Сигнал ошибки регулячтора ГВЧ.
igor_v 21:bc8c1cec3da6 48
igor_v 21:bc8c1cec3da6 49 unsigned int WP_regL , WP_regH;
igor_v 21:bc8c1cec3da6 50
igor_v 21:bc8c1cec3da6 51 unsigned int ADC1L, ADC2L, ADC3L, ADC4L, ADC5L;
igor_v 21:bc8c1cec3da6 52 unsigned int ADC1H, ADC2H, ADC3H, ADC4H, ADC5H;
Kovalev_D 106:250ddd8629c6 53
Kovalev_D 108:030cdde08314 54
Kovalev_D 107:4d178bcc9d8a 55
igor_v 30:17c84ed091b3 56 Gyro.Firmware_Version=0xff; /// промежуточная затычка
igor_v 21:bc8c1cec3da6 57
Kovalev_D 108:030cdde08314 58
Kovalev_D 108:030cdde08314 59
Kovalev_D 106:250ddd8629c6 60
igor_v 30:17c84ed091b3 61 Cnt_PlsH = ( Gyro.Cnt_Pls>>8) TakeByte;
Kovalev_D 106:250ddd8629c6 62 Cnt_PlsL = Gyro.Cnt_Pls TakeByte;
Kovalev_D 106:250ddd8629c6 63 Gyro.Cnt_Pls= 0;
Kovalev_D 106:250ddd8629c6 64
igor_v 30:17c84ed091b3 65 Cnt_MnsH = ( Gyro.Cnt_Mns>>8) TakeByte;
Kovalev_D 106:250ddd8629c6 66 Cnt_MnsL = Gyro.Cnt_Mns TakeByte;
Kovalev_D 106:250ddd8629c6 67 Gyro.Cnt_Mns=0;
Kovalev_D 106:250ddd8629c6 68
Kovalev_D 106:250ddd8629c6 69 Cnt_DifH = ( Dif_QEI>>8) TakeByte;
Kovalev_D 106:250ddd8629c6 70 Cnt_DifL = ( Dif_QEI ) TakeByte;
Kovalev_D 106:250ddd8629c6 71
Kovalev_D 106:250ddd8629c6 72 //Spi.DAC_A
igor_v 30:17c84ed091b3 73 F_rasH = ( Gyro.F_ras>>8 ) TakeByte;
igor_v 30:17c84ed091b3 74 F_rasL = ( Gyro.F_ras ) TakeByte;
Kovalev_D 106:250ddd8629c6 75
Kovalev_D 107:4d178bcc9d8a 76 HF_regL = ( Spi.DAC_A ) TakeByte;
Kovalev_D 106:250ddd8629c6 77 HF_regH = ( Spi.DAC_A>>8 ) TakeByte;
Kovalev_D 107:4d178bcc9d8a 78
Kovalev_D 107:4d178bcc9d8a 79 WP_regH = ( Spi.DAC_A>>8 ) TakeByte;
Kovalev_D 107:4d178bcc9d8a 80 WP_regL = ( Spi.DAC_A ) TakeByte;
Kovalev_D 106:250ddd8629c6 81
igor_v 21:bc8c1cec3da6 82 ADC1H = ( Spi.ADC1>>8 ) TakeByte;
Kovalev_D 45:cbc955aecebe 83 ADC1L = ( Spi.ADC1 ) TakeByte;
igor_v 0:8ad47e2b6f00 84
igor_v 21:bc8c1cec3da6 85 ADC2H = ( Spi.ADC2>>8 ) TakeByte;
Kovalev_D 45:cbc955aecebe 86 ADC2L = ( Spi.ADC2 ) TakeByte;
igor_v 21:bc8c1cec3da6 87
igor_v 21:bc8c1cec3da6 88 ADC3H = ( Spi.ADC3>>8 ) TakeByte;
Kovalev_D 45:cbc955aecebe 89 ADC3L = ( Spi.ADC3 ) TakeByte;
igor_v 21:bc8c1cec3da6 90
igor_v 21:bc8c1cec3da6 91 ADC4H = ( Spi.ADC4>>8 ) TakeByte;
Kovalev_D 45:cbc955aecebe 92 ADC4L = ( Spi.ADC4 ) TakeByte;
igor_v 21:bc8c1cec3da6 93
igor_v 21:bc8c1cec3da6 94 ADC5H = ( Spi.ADC5>>8 ) TakeByte;
Kovalev_D 45:cbc955aecebe 95 ADC5L = ( Spi.ADC5 ) TakeByte;
igor_v 21:bc8c1cec3da6 96
igor_v 21:bc8c1cec3da6 97 WP_regH = ( Spi.DAC_B>>8 ) TakeByte;
igor_v 21:bc8c1cec3da6 98 WP_regL = ( Spi.DAC_B ) TakeByte;
igor_v 21:bc8c1cec3da6 99
igor_v 21:bc8c1cec3da6 100 HF_regH=0xff;
igor_v 21:bc8c1cec3da6 101 HF_regL=0xff;
igor_v 21:bc8c1cec3da6 102
igor_v 21:bc8c1cec3da6 103 HF_difH=0xff;
igor_v 21:bc8c1cec3da6 104 HF_difL=0xff;
igor_v 21:bc8c1cec3da6 105
igor_v 0:8ad47e2b6f00 106
igor_v 30:17c84ed091b3 107 BuffTemp[ 0] = Gyro.SOC_Out;
igor_v 30:17c84ed091b3 108 BuffTemp[ 1] = Gyro.My_Addres;
igor_v 21:bc8c1cec3da6 109
Kovalev_D 108:030cdde08314 110
Kovalev_D 112:4a96133a1311 111 BuffTemp[ 2] =(Gyro.CaunPlus >> 8) & 0xff;//старший байт счетчика +.
Kovalev_D 112:4a96133a1311 112 BuffTemp[ 3] =(Gyro.CaunPlus >> 0) & 0xff;//младший байт счетчика +.
Kovalev_D 108:030cdde08314 113
Kovalev_D 112:4a96133a1311 114 BuffTemp[ 4] =(Gyro.CaunMin >> 8) & 0xff;//старший байт счетчика -.
Kovalev_D 112:4a96133a1311 115 BuffTemp[ 5] =(Gyro.CaunMin >> 0) & 0xff;//младший байт счетчика -.
Kovalev_D 108:030cdde08314 116
Kovalev_D 113:8be429494918 117
Kovalev_D 108:030cdde08314 118 Temp = Gyro.CuruAngle;
Kovalev_D 108:030cdde08314 119 Gyro.CuruAngle = 0;
Kovalev_D 113:8be429494918 120
Kovalev_D 108:030cdde08314 121 BuffTemp[ 6] =(Temp >> 8) & 0xff;//старший байт разности счетчиков
Kovalev_D 108:030cdde08314 122 BuffTemp[ 7] =(Temp >> 0) & 0xff;//младший байт разности счетчиков
Kovalev_D 108:030cdde08314 123
Kovalev_D 108:030cdde08314 124
Kovalev_D 108:030cdde08314 125
igor_v 21:bc8c1cec3da6 126
Kovalev_D 106:250ddd8629c6 127 BuffTemp[ 8] = F_rasH;//расщипление частота
Kovalev_D 106:250ddd8629c6 128 BuffTemp[ 9] = F_rasL;//
igor_v 21:bc8c1cec3da6 129
Kovalev_D 108:030cdde08314 130 BuffTemp[10] = (Temp >> 8) & 0xff;//выход регулятора гвч;
Kovalev_D 108:030cdde08314 131 BuffTemp[11] = (Temp >> 0) & 0xff;;
igor_v 21:bc8c1cec3da6 132
Kovalev_D 108:030cdde08314 133 BuffTemp[12]=(Temp >> 8) & 0xff;////
Kovalev_D 108:030cdde08314 134 BuffTemp[13]=(Temp >> 0) & 0xff;////
igor_v 21:bc8c1cec3da6 135
Kovalev_D 108:030cdde08314 136
Kovalev_D 108:030cdde08314 137 Temp = (unsigned int)((7680000*16/(Gyro.Frq>>12)));
Kovalev_D 108:030cdde08314 138 BuffTemp[14] = (Temp >> 8) & 0xff;
Kovalev_D 108:030cdde08314 139 BuffTemp[15] = (Temp >> 0) & 0xff;
igor_v 21:bc8c1cec3da6 140
Kovalev_D 107:4d178bcc9d8a 141 BuffTemp[16] = 0xf;
Kovalev_D 106:250ddd8629c6 142 BuffTemp[17] = 0x02;
Kovalev_D 108:030cdde08314 143
igor_v 21:bc8c1cec3da6 144
Kovalev_D 108:030cdde08314 145 Temp = (unsigned int)(((7680000*16/200) *Gyro.AmpPer /(Gyro.Frq>>12)));
Kovalev_D 108:030cdde08314 146 BuffTemp[18] = (Temp >> 8) & 0xff;
Kovalev_D 108:030cdde08314 147 BuffTemp[19] = (Temp >> 0) & 0xff;
igor_v 21:bc8c1cec3da6 148
Kovalev_D 106:250ddd8629c6 149 BuffTemp[20] = 0x00;
Kovalev_D 106:250ddd8629c6 150 BuffTemp[21] = 0x00;
Kovalev_D 120:9f446f1495e8 151
Kovalev_D 119:4d7fcece9e8e 152
Kovalev_D 120:9f446f1495e8 153 if (Spi.DAC_B < 0x7fff) Temp = Spi.DAC_B - 0x7fff; else Temp = 0x7fff - Spi.DAC_B ;
Kovalev_D 108:030cdde08314 154 BuffTemp[22] = (Temp >> 8) & 0xff;
Kovalev_D 108:030cdde08314 155 BuffTemp[23] = (Temp >> 0) & 0xff;
igor_v 21:bc8c1cec3da6 156
Kovalev_D 106:250ddd8629c6 157 BuffTemp[24] = 0x00;
Kovalev_D 106:250ddd8629c6 158 BuffTemp[25] = 0x00;// ХЗ
Kovalev_D 113:8be429494918 159
Kovalev_D 116:66f1f0ff2dab 160 Temp = Gyro.PLC_Delta >> 16;
Kovalev_D 113:8be429494918 161 BuffTemp[26] = (Temp >> 8) & 0xff;
Kovalev_D 113:8be429494918 162 BuffTemp[27] = (Temp >> 0) & 0xff;
Kovalev_D 113:8be429494918 163
Kovalev_D 113:8be429494918 164 Temp = Gyro.AD_Slow >> 16;
Kovalev_D 113:8be429494918 165 BuffTemp[28] = (Temp >> 8) & 0xff;
Kovalev_D 113:8be429494918 166 BuffTemp[29] = (Temp >> 0) & 0xff;
Kovalev_D 113:8be429494918 167
Kovalev_D 113:8be429494918 168 Temp = Gyro.In1;
Kovalev_D 113:8be429494918 169 BuffTemp[30] = (Temp >> 8) & 0xff;//in1//2
Kovalev_D 113:8be429494918 170 BuffTemp[31] = (Temp >> 0) & 0xff;
Kovalev_D 113:8be429494918 171
Kovalev_D 113:8be429494918 172 Temp = Gyro.In2;
Kovalev_D 113:8be429494918 173 BuffTemp[32] = (Temp >> 8) & 0xff;
Kovalev_D 113:8be429494918 174 BuffTemp[33] = (Temp >> 0) & 0xff;//in2//3
Kovalev_D 113:8be429494918 175
Kovalev_D 113:8be429494918 176 Temp = Gyro.DeltaT;
Kovalev_D 113:8be429494918 177 BuffTemp[34] = (Temp >> 8) & 0xff;//дельта
Kovalev_D 113:8be429494918 178 BuffTemp[35] = (Temp >> 0) & 0xff;
Kovalev_D 115:e5a230e5af52 179
Kovalev_D 116:66f1f0ff2dab 180 Temp = Gyro.Termo;//0xa4=164
Kovalev_D 115:e5a230e5af52 181
Kovalev_D 113:8be429494918 182 BuffTemp[36] =(Temp >> 8) & 0xff;//температура
Kovalev_D 115:e5a230e5af52 183 BuffTemp[37] =(Temp >> 0) & 0xff;//ADC6 sesnsor 5
igor_v 21:bc8c1cec3da6 184
Kovalev_D 106:250ddd8629c6 185 BuffTemp[38] =0x00;
Kovalev_D 106:250ddd8629c6 186 BuffTemp[39] =0x00;
Kovalev_D 106:250ddd8629c6 187 BuffTemp[40] =0x00;
Kovalev_D 106:250ddd8629c6 188 BuffTemp[41] =0x00;
igor_v 21:bc8c1cec3da6 189
igor_v 21:bc8c1cec3da6 190
igor_v 21:bc8c1cec3da6 191 Check(BuffTemp, 44);
igor_v 21:bc8c1cec3da6 192 WriteConN (BuffTemp,44);
Kovalev_D 92:c892f0311aa7 193
igor_v 0:8ad47e2b6f00 194 }
igor_v 0:8ad47e2b6f00 195
igor_v 21:bc8c1cec3da6 196 void CMD_M_Control_D8()///установка\сброс регистров управления
igor_v 21:bc8c1cec3da6 197 {
Kovalev_D 104:ab1cb4ff56b2 198 unsigned int bit,NReg,Pa;
Kovalev_D 104:ab1cb4ff56b2 199 unsigned int SR,V,A,Bit_num;
Kovalev_D 104:ab1cb4ff56b2 200 SR=0;
Kovalev_D 104:ab1cb4ff56b2 201 V=0;
Kovalev_D 104:ab1cb4ff56b2 202 A=0;
Kovalev_D 104:ab1cb4ff56b2 203 Bit_num=0;
Kovalev_D 104:ab1cb4ff56b2 204
igor_v 30:17c84ed091b3 205 BuffTemp[0] = Gyro.SOC_Out; //DD
igor_v 30:17c84ed091b3 206 BuffTemp[1] = Gyro.My_Addres; //00
igor_v 30:17c84ed091b3 207 BuffTemp[2] = Gyro.CMD_In; //D8
Kovalev_D 104:ab1cb4ff56b2 208
Kovalev_D 104:ab1cb4ff56b2 209 /*
Kovalev_D 104:ab1cb4ff56b2 210
Kovalev_D 104:ab1cb4ff56b2 211 FrqON
Kovalev_D 104:ab1cb4ff56b2 212 PlcON
Kovalev_D 104:ab1cb4ff56b2 213 HFOOFF
Kovalev_D 104:ab1cb4ff56b2 214 HFOON
igor_v 21:bc8c1cec3da6 215
Kovalev_D 104:ab1cb4ff56b2 216 PlcOFF
Kovalev_D 104:ab1cb4ff56b2 217 PlcON
Kovalev_D 104:ab1cb4ff56b2 218 */
Kovalev_D 104:ab1cb4ff56b2 219 Pa = BuffTemp[3];
Kovalev_D 104:ab1cb4ff56b2 220
Kovalev_D 104:ab1cb4ff56b2 221 SR = Pa >> 0x7;
Kovalev_D 104:ab1cb4ff56b2 222
Kovalev_D 104:ab1cb4ff56b2 223 V = Pa >> 0x5;
Kovalev_D 104:ab1cb4ff56b2 224 V = V & 0x3;
Kovalev_D 104:ab1cb4ff56b2 225
Kovalev_D 104:ab1cb4ff56b2 226 A = Pa >> 0x4;
Kovalev_D 104:ab1cb4ff56b2 227 A = A & 0x1;
Kovalev_D 104:ab1cb4ff56b2 228
Kovalev_D 104:ab1cb4ff56b2 229 Bit_num = Pa & 0xf;
Kovalev_D 104:ab1cb4ff56b2 230
Kovalev_D 104:ab1cb4ff56b2 231 if(SR) {
Kovalev_D 104:ab1cb4ff56b2 232 switch (Bit_num){
Kovalev_D 105:bd01d8d20fb6 233
Kovalev_D 104:ab1cb4ff56b2 234 case 0x06:
Kovalev_D 104:ab1cb4ff56b2 235 FrqON
Kovalev_D 105:bd01d8d20fb6 236 break;
Kovalev_D 105:bd01d8d20fb6 237
Kovalev_D 104:ab1cb4ff56b2 238 case 0x03:
Kovalev_D 105:bd01d8d20fb6 239 HFOON
Kovalev_D 105:bd01d8d20fb6 240 break;
Kovalev_D 105:bd01d8d20fb6 241
Kovalev_D 105:bd01d8d20fb6 242 case 0x01:
Kovalev_D 105:bd01d8d20fb6 243 PlcON
Kovalev_D 105:bd01d8d20fb6 244 break;
Kovalev_D 104:ab1cb4ff56b2 245 }
Kovalev_D 104:ab1cb4ff56b2 246 }
Kovalev_D 104:ab1cb4ff56b2 247 else{
Kovalev_D 104:ab1cb4ff56b2 248 switch (Bit_num){
Kovalev_D 105:bd01d8d20fb6 249
Kovalev_D 105:bd01d8d20fb6 250 case 0x06:
Kovalev_D 104:ab1cb4ff56b2 251 FrqOff
Kovalev_D 105:bd01d8d20fb6 252 break;
Kovalev_D 105:bd01d8d20fb6 253
Kovalev_D 105:bd01d8d20fb6 254 case 0x03:
Kovalev_D 105:bd01d8d20fb6 255 HFOOFF
Kovalev_D 105:bd01d8d20fb6 256 break;
Kovalev_D 105:bd01d8d20fb6 257
Kovalev_D 105:bd01d8d20fb6 258 case 0x01:
Kovalev_D 105:bd01d8d20fb6 259 PlcOFF
Kovalev_D 105:bd01d8d20fb6 260 break;
Kovalev_D 104:ab1cb4ff56b2 261 }
Kovalev_D 104:ab1cb4ff56b2 262 }
igor_v 21:bc8c1cec3da6 263
igor_v 0:8ad47e2b6f00 264 }
igor_v 0:8ad47e2b6f00 265
igor_v 21:bc8c1cec3da6 266 void CMD_M_Control_D9()///чтение регистров управления
igor_v 21:bc8c1cec3da6 267 {
igor_v 21:bc8c1cec3da6 268 int bit,NReg;
igor_v 30:17c84ed091b3 269 BuffTemp[0] = Gyro.SOC_Out; //DD
igor_v 30:17c84ed091b3 270 BuffTemp[1] = Gyro.My_Addres; //00
igor_v 30:17c84ed091b3 271 BuffTemp[2] = Gyro.CMD_In; //D9
igor_v 21:bc8c1cec3da6 272 if ((Param1 & 0x10) == 0) {
igor_v 21:bc8c1cec3da6 273 BuffTemp[3]=0<<4;
igor_v 30:17c84ed091b3 274 BuffTemp[4] = (Gyro.RgConA>>8 )& 0xff;
igor_v 30:17c84ed091b3 275 BuffTemp[5] = Gyro.RgConA & 0xff;
igor_v 21:bc8c1cec3da6 276 } else {
igor_v 21:bc8c1cec3da6 277 BuffTemp[3]=1<<4;
igor_v 30:17c84ed091b3 278 BuffTemp[4] = (Gyro.RgConB>>8 ) & 0xff;
igor_v 30:17c84ed091b3 279 BuffTemp[5] = Gyro.RgConB & 0xff;
igor_v 21:bc8c1cec3da6 280 }
igor_v 21:bc8c1cec3da6 281 Check(BuffTemp, CRC_N);
igor_v 21:bc8c1cec3da6 282 WriteConN (BuffTemp,CRC_N);
igor_v 21:bc8c1cec3da6 283 }
igor_v 21:bc8c1cec3da6 284 // (номер (код) ЦАПа 0...3, старший байт требуемого ЦАПа, младший байт треб ЦАПа)
igor_v 0:8ad47e2b6f00 285 void CMD_M_Stymul()
igor_v 0:8ad47e2b6f00 286 {
igor_v 21:bc8c1cec3da6 287 int temp;
Kovalev_D 102:4270092be987 288 int HFO;
Kovalev_D 102:4270092be987 289 temp=BuffTemp[3];
Kovalev_D 102:4270092be987 290 Consol = temp&0x3;
Kovalev_D 103:e96f08947def 291 HFO = temp&0x3;// // (номер (код) ЦАПа 0...3, HFO - 3dac, PLC - 0DAC
igor_v 21:bc8c1cec3da6 292 temp =((BuffTemp[4]<<8) | BuffTemp[5]);
igor_v 21:bc8c1cec3da6 293 // temp=0;
igor_v 21:bc8c1cec3da6 294 temp=temp&0xFFFF;
Kovalev_D 102:4270092be987 295
Kovalev_D 102:4270092be987 296 if(HFO)
Kovalev_D 102:4270092be987 297 {
Kovalev_D 102:4270092be987 298 Spi.DAC_A=(unsigned int)temp;
Kovalev_D 102:4270092be987 299 }
Kovalev_D 102:4270092be987 300 else{
igor_v 21:bc8c1cec3da6 301 DACF =(temp*K_DAC)+deltaDAC;
igor_v 21:bc8c1cec3da6 302 Spi.DAC_B =(unsigned int)(DACF) /*(unsigned int)(temp*K_DAC+deltaDAC)*/; // K_DAC);
igor_v 21:bc8c1cec3da6 303 }
igor_v 0:8ad47e2b6f00 304 }
Kovalev_D 103:e96f08947def 305 void Gph_W()
Kovalev_D 103:e96f08947def 306 {
Kovalev_D 108:030cdde08314 307 Out_G_photo(BuffTemp[4],BuffTemp[5]);
Kovalev_D 103:e96f08947def 308 }
igor_v 0:8ad47e2b6f00 309
Kovalev_D 98:95b8e79f13e1 310 void CMD_M_vib()
Kovalev_D 115:e5a230e5af52 311 {
Kovalev_D 102:4270092be987 312 unsigned int temp1,temp2;
Kovalev_D 102:4270092be987 313
Kovalev_D 102:4270092be987 314 temp1 =((BuffTemp[4]<<8) | BuffTemp[5]);
Kovalev_D 102:4270092be987 315 temp1=temp1&0xFFFF;
Kovalev_D 102:4270092be987 316
Kovalev_D 102:4270092be987 317 temp2 =((BuffTemp[6]<<8) | BuffTemp[7]);
Kovalev_D 102:4270092be987 318 temp2=temp2&0xFFFF;
Kovalev_D 102:4270092be987 319 Gyro.Frq = ((unsigned int) ((7680000*16/temp1)))*16*16*16;
Kovalev_D 102:4270092be987 320 Consol=Gyro.Frq ;
Kovalev_D 98:95b8e79f13e1 321 }
igor_v 0:8ad47e2b6f00 322 unsigned int Check(char *c, unsigned int Count)
igor_v 0:8ad47e2b6f00 323 {
igor_v 21:bc8c1cec3da6 324 int i=1;
igor_v 21:bc8c1cec3da6 325 unsigned int temp,CRC;
igor_v 21:bc8c1cec3da6 326
igor_v 21:bc8c1cec3da6 327
igor_v 21:bc8c1cec3da6 328 temp=1;
igor_v 21:bc8c1cec3da6 329 CRC=0;
igor_v 21:bc8c1cec3da6 330
igor_v 21:bc8c1cec3da6 331
igor_v 21:bc8c1cec3da6 332 for(; i<Count-2; i++) {
igor_v 21:bc8c1cec3da6 333 CRC+=c[i];
igor_v 21:bc8c1cec3da6 334 }
igor_v 0:8ad47e2b6f00 335
igor_v 21:bc8c1cec3da6 336 if(c[Count-2]!=((CRC>>8)&0xFF)) {
igor_v 21:bc8c1cec3da6 337 temp=0;
igor_v 30:17c84ed091b3 338 Gyro.RsErrLine = (Gyro.RsErrLine)&=0x2;
igor_v 21:bc8c1cec3da6 339 }
igor_v 0:8ad47e2b6f00 340
igor_v 21:bc8c1cec3da6 341 if(c[Count-1]!=((CRC>>0)&0xFF)) {
igor_v 21:bc8c1cec3da6 342 temp=0;
igor_v 30:17c84ed091b3 343 // Gyro.RsErrLine= (Gyro.RsErrLine)=0x2;
igor_v 21:bc8c1cec3da6 344 }
igor_v 21:bc8c1cec3da6 345
igor_v 21:bc8c1cec3da6 346 c[Count-2]=(CRC>>8)&0xFF;
igor_v 21:bc8c1cec3da6 347 c[Count-1]=(CRC>>0)&0xFF;
igor_v 21:bc8c1cec3da6 348
igor_v 21:bc8c1cec3da6 349
igor_v 21:bc8c1cec3da6 350
igor_v 21:bc8c1cec3da6 351 return temp;
igor_v 0:8ad47e2b6f00 352 }
igor_v 0:8ad47e2b6f00 353
igor_v 0:8ad47e2b6f00 354 int Getlengf(void)
igor_v 0:8ad47e2b6f00 355 {
igor_v 21:bc8c1cec3da6 356 unsigned int lengf=0;
igor_v 30:17c84ed091b3 357 switch(Gyro.CMD_In) {
igor_v 30:17c84ed091b3 358 case 0x99://Gyrotainance
Kovalev_D 92:c892f0311aa7 359
igor_v 21:bc8c1cec3da6 360 lengf=6;
igor_v 21:bc8c1cec3da6 361 CRC_N=8;
igor_v 21:bc8c1cec3da6 362 break;
igor_v 0:8ad47e2b6f00 363
igor_v 21:bc8c1cec3da6 364 case 0x0A: //m_stymul
igor_v 21:bc8c1cec3da6 365 lengf=8;
igor_v 21:bc8c1cec3da6 366 break;
igor_v 21:bc8c1cec3da6 367
igor_v 21:bc8c1cec3da6 368 case 0xA5://DeviceMode
igor_v 21:bc8c1cec3da6 369
igor_v 21:bc8c1cec3da6 370 lengf=6;
igor_v 21:bc8c1cec3da6 371 CRC_N=8;
igor_v 21:bc8c1cec3da6 372 break;
igor_v 21:bc8c1cec3da6 373
igor_v 21:bc8c1cec3da6 374 case 0xDD://m_rate
igor_v 0:8ad47e2b6f00 375
igor_v 21:bc8c1cec3da6 376 lengf=6;
igor_v 21:bc8c1cec3da6 377 CRC_N=44;
igor_v 21:bc8c1cec3da6 378 break;
igor_v 21:bc8c1cec3da6 379
igor_v 21:bc8c1cec3da6 380 case 0xB0://DeviceMode
igor_v 21:bc8c1cec3da6 381
igor_v 21:bc8c1cec3da6 382 lengf=6;
igor_v 21:bc8c1cec3da6 383 CRC_N=8;
igor_v 21:bc8c1cec3da6 384 break;
igor_v 21:bc8c1cec3da6 385
igor_v 21:bc8c1cec3da6 386 case 0xD8://m_control
igor_v 0:8ad47e2b6f00 387
igor_v 21:bc8c1cec3da6 388 lengf=6;
igor_v 21:bc8c1cec3da6 389 CRC_N=8;
igor_v 21:bc8c1cec3da6 390 break;
igor_v 21:bc8c1cec3da6 391
igor_v 21:bc8c1cec3da6 392 case 0xD9://m_control
igor_v 0:8ad47e2b6f00 393
igor_v 21:bc8c1cec3da6 394 lengf=6;
igor_v 21:bc8c1cec3da6 395 CRC_N=8;
igor_v 21:bc8c1cec3da6 396 break;
Kovalev_D 102:4270092be987 397
Kovalev_D 102:4270092be987 398 case 0xE4:
Kovalev_D 98:95b8e79f13e1 399 lengf=8;
Kovalev_D 98:95b8e79f13e1 400 break;
Kovalev_D 103:e96f08947def 401
Kovalev_D 103:e96f08947def 402
Kovalev_D 103:e96f08947def 403 case 0xE6:
Kovalev_D 103:e96f08947def 404 lengf=8;
Kovalev_D 103:e96f08947def 405 break;
Kovalev_D 103:e96f08947def 406
igor_v 21:bc8c1cec3da6 407 }
Kovalev_D 98:95b8e79f13e1 408
igor_v 21:bc8c1cec3da6 409 return lengf;
igor_v 0:8ad47e2b6f00 410 }
igor_v 0:8ad47e2b6f00 411
igor_v 0:8ad47e2b6f00 412 void Read_CMD(void)
igor_v 21:bc8c1cec3da6 413 {
Kovalev_D 92:c892f0311aa7 414
Kovalev_D 45:cbc955aecebe 415
Kovalev_D 45:cbc955aecebe 416 Gyro.RsErrLine = (Gyro.RsErrLine)& 0xffff;//для сброса ошибки
igor_v 21:bc8c1cec3da6 417
Kovalev_D 93:b3803774f110 418 CountBuFFIn=ReadChekCon1(BuffTemp); // чтение данных из консоли
igor_v 42:6fc307c4963e 419
Kovalev_D 92:c892f0311aa7 420 if(CountBuFFIn==1) { // если есть первый байт
igor_v 21:bc8c1cec3da6 421 if (BuffTemp[0] != SOC_In) {
Kovalev_D 93:b3803774f110 422 ReadCon1(BuffTemp);
igor_v 30:17c84ed091b3 423 Gyro.RsErrLine += 0x100;//WriteCon("\n\r ...Error.... ");
Kovalev_D 93:b3803774f110 424 BuffTemp[99]=Gyro.RsErrLine;
Kovalev_D 102:4270092be987 425
igor_v 21:bc8c1cec3da6 426 }
Kovalev_D 92:c892f0311aa7 427 } else if(CountBuFFIn==2) { //если второй ,fqn
igor_v 30:17c84ed091b3 428 if (BuffTemp[1] != Gyro.My_Addres) {
Kovalev_D 93:b3803774f110 429 ReadCon1(BuffTemp);
igor_v 30:17c84ed091b3 430 Gyro.RsErrLine += 0x1;//WriteCon("\n\r ...Error_ADDRES.... ");
igor_v 21:bc8c1cec3da6 431 }
igor_v 42:6fc307c4963e 432 } else if(CountBuFFIn==3) { // если ьоетий байт
igor_v 30:17c84ed091b3 433 Gyro.CMD_In=BuffTemp[2];
Kovalev_D 92:c892f0311aa7 434 N=Getlengf();
Kovalev_D 92:c892f0311aa7 435 }
Kovalev_D 92:c892f0311aa7 436 else if(CountBuFFIn==4 && (N==6))
Kovalev_D 92:c892f0311aa7 437 { // N - длина посылки аскглд(для записи параметров). определяется по коду команды в Getlengf();
igor_v 21:bc8c1cec3da6 438 Param1=BuffTemp[3];
Kovalev_D 92:c892f0311aa7 439 }
Kovalev_D 92:c892f0311aa7 440 else if((CountBuFFIn==5)&&(N==7))
Kovalev_D 92:c892f0311aa7 441 {
Kovalev_D 92:c892f0311aa7 442
igor_v 21:bc8c1cec3da6 443 Param1=BuffTemp[3];
igor_v 21:bc8c1cec3da6 444 Param2=BuffTemp[4];
igor_v 0:8ad47e2b6f00 445
Kovalev_D 92:c892f0311aa7 446 }
Kovalev_D 92:c892f0311aa7 447 else if((CountBuFFIn==6)&&(N==8))
Kovalev_D 92:c892f0311aa7 448 {
igor_v 21:bc8c1cec3da6 449 Param1=BuffTemp[3];
igor_v 21:bc8c1cec3da6 450 Param2=BuffTemp[4];
igor_v 21:bc8c1cec3da6 451 Param3=BuffTemp[5];
Kovalev_D 92:c892f0311aa7 452 }
Kovalev_D 102:4270092be987 453 else if((CountBuFFIn==8)&&(N==10))
Kovalev_D 102:4270092be987 454 {
Kovalev_D 102:4270092be987 455 Param1=BuffTemp[4];
Kovalev_D 102:4270092be987 456 Param2=BuffTemp[5];
Kovalev_D 102:4270092be987 457 Param3=BuffTemp[6];
Kovalev_D 102:4270092be987 458 Param4=BuffTemp[7];
Kovalev_D 102:4270092be987 459 }
Kovalev_D 98:95b8e79f13e1 460
Kovalev_D 92:c892f0311aa7 461 else if(CountBuFFIn > (N-1))
Kovalev_D 92:c892f0311aa7 462 {
Kovalev_D 93:b3803774f110 463 ReadCon1(BuffTemp);
igor_v 30:17c84ed091b3 464 switch(Gyro.CMD_In) {
Kovalev_D 92:c892f0311aa7 465 case 0x99:
igor_v 21:bc8c1cec3da6 466 CMD_Maintenance();
igor_v 21:bc8c1cec3da6 467 break;
igor_v 21:bc8c1cec3da6 468 case 0xD8:
igor_v 21:bc8c1cec3da6 469 CMD_M_Control_D8();
igor_v 21:bc8c1cec3da6 470 case 0xD9:
igor_v 21:bc8c1cec3da6 471 CMD_M_Control_D9();
igor_v 21:bc8c1cec3da6 472 break;
igor_v 21:bc8c1cec3da6 473 case 0x0A:
Kovalev_D 45:cbc955aecebe 474 CMD_M_Stymul();
igor_v 21:bc8c1cec3da6 475 break;
igor_v 21:bc8c1cec3da6 476 case 0xDD:
igor_v 21:bc8c1cec3da6 477 Rate_Flag=1;
Kovalev_D 102:4270092be987 478 break;
Kovalev_D 102:4270092be987 479 case 0xE4:
Kovalev_D 102:4270092be987 480 CMD_M_vib();
Kovalev_D 102:4270092be987 481 break;
Kovalev_D 103:e96f08947def 482 case 0xE6:
Kovalev_D 103:e96f08947def 483 Gph_W();
Kovalev_D 103:e96f08947def 484 break;
Kovalev_D 108:030cdde08314 485
Kovalev_D 103:e96f08947def 486
igor_v 30:17c84ed091b3 487 Gyro.RsErrLine = 0;
Kovalev_D 103:e96f08947def 488
Kovalev_D 103:e96f08947def 489
Kovalev_D 102:4270092be987 490 }
igor_v 21:bc8c1cec3da6 491 }
igor_v 0:8ad47e2b6f00 492 }
igor_v 0:8ad47e2b6f00 493
igor_v 0:8ad47e2b6f00 494
igor_v 21:bc8c1cec3da6 495