fork

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Kovalev_D
Date:
Mon Apr 04 14:48:14 2016 +0000
Revision:
113:8be429494918
Parent:
112:4a96133a1311
Child:
115:e5a230e5af52
11

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