fork

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Kovalev_D
Date:
Thu Apr 07 10:44:23 2016 +0000
Revision:
121:bbae560cdd43
Parent:
120:9f446f1495e8
Child:
122:fbacb932a30b
Rate 2

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