fork

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Kovalev_D
Date:
Wed Apr 06 15:10:47 2016 +0000
Revision:
119:4d7fcece9e8e
Parent:
116:66f1f0ff2dab
Child:
120:9f446f1495e8
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 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 108:030cdde08314 151 Temp = Spi.DAC_B ;
Kovalev_D 119:4d7fcece9e8e 152
Kovalev_D 119:4d7fcece9e8e 153 Temp = 0 ;
Kovalev_D 119:4d7fcece9e8e 154
Kovalev_D 108:030cdde08314 155 BuffTemp[22] = (Temp >> 8) & 0xff;
Kovalev_D 108:030cdde08314 156 BuffTemp[23] = (Temp >> 0) & 0xff;
igor_v 21:bc8c1cec3da6 157
Kovalev_D 106:250ddd8629c6 158 BuffTemp[24] = 0x00;
Kovalev_D 106:250ddd8629c6 159 BuffTemp[25] = 0x00;// ХЗ
Kovalev_D 113:8be429494918 160
Kovalev_D 116:66f1f0ff2dab 161 Temp = Gyro.PLC_Delta >> 16;
Kovalev_D 113:8be429494918 162 BuffTemp[26] = (Temp >> 8) & 0xff;
Kovalev_D 113:8be429494918 163 BuffTemp[27] = (Temp >> 0) & 0xff;
Kovalev_D 113:8be429494918 164
Kovalev_D 113:8be429494918 165 Temp = Gyro.AD_Slow >> 16;
Kovalev_D 113:8be429494918 166 BuffTemp[28] = (Temp >> 8) & 0xff;
Kovalev_D 113:8be429494918 167 BuffTemp[29] = (Temp >> 0) & 0xff;
Kovalev_D 113:8be429494918 168
Kovalev_D 113:8be429494918 169 Temp = Gyro.In1;
Kovalev_D 113:8be429494918 170 BuffTemp[30] = (Temp >> 8) & 0xff;//in1//2
Kovalev_D 113:8be429494918 171 BuffTemp[31] = (Temp >> 0) & 0xff;
Kovalev_D 113:8be429494918 172
Kovalev_D 113:8be429494918 173 Temp = Gyro.In2;
Kovalev_D 113:8be429494918 174 BuffTemp[32] = (Temp >> 8) & 0xff;
Kovalev_D 113:8be429494918 175 BuffTemp[33] = (Temp >> 0) & 0xff;//in2//3
Kovalev_D 113:8be429494918 176
Kovalev_D 113:8be429494918 177 Temp = Gyro.DeltaT;
Kovalev_D 113:8be429494918 178 BuffTemp[34] = (Temp >> 8) & 0xff;//дельта
Kovalev_D 113:8be429494918 179 BuffTemp[35] = (Temp >> 0) & 0xff;
Kovalev_D 115:e5a230e5af52 180
Kovalev_D 116:66f1f0ff2dab 181 Temp = Gyro.Termo;//0xa4=164
Kovalev_D 115:e5a230e5af52 182
Kovalev_D 113:8be429494918 183 BuffTemp[36] =(Temp >> 8) & 0xff;//температура
Kovalev_D 115:e5a230e5af52 184 BuffTemp[37] =(Temp >> 0) & 0xff;//ADC6 sesnsor 5
igor_v 21:bc8c1cec3da6 185
Kovalev_D 106:250ddd8629c6 186 BuffTemp[38] =0x00;
Kovalev_D 106:250ddd8629c6 187 BuffTemp[39] =0x00;
Kovalev_D 106:250ddd8629c6 188 BuffTemp[40] =0x00;
Kovalev_D 106:250ddd8629c6 189 BuffTemp[41] =0x00;
igor_v 21:bc8c1cec3da6 190
igor_v 21:bc8c1cec3da6 191
igor_v 21:bc8c1cec3da6 192 Check(BuffTemp, 44);
igor_v 21:bc8c1cec3da6 193 WriteConN (BuffTemp,44);
Kovalev_D 92:c892f0311aa7 194
igor_v 0:8ad47e2b6f00 195 }
igor_v 0:8ad47e2b6f00 196
igor_v 21:bc8c1cec3da6 197 void CMD_M_Control_D8()///установка\сброс регистров управления
igor_v 21:bc8c1cec3da6 198 {
Kovalev_D 104:ab1cb4ff56b2 199 unsigned int bit,NReg,Pa;
Kovalev_D 104:ab1cb4ff56b2 200 unsigned int SR,V,A,Bit_num;
Kovalev_D 104:ab1cb4ff56b2 201 SR=0;
Kovalev_D 104:ab1cb4ff56b2 202 V=0;
Kovalev_D 104:ab1cb4ff56b2 203 A=0;
Kovalev_D 104:ab1cb4ff56b2 204 Bit_num=0;
Kovalev_D 104:ab1cb4ff56b2 205
igor_v 30:17c84ed091b3 206 BuffTemp[0] = Gyro.SOC_Out; //DD
igor_v 30:17c84ed091b3 207 BuffTemp[1] = Gyro.My_Addres; //00
igor_v 30:17c84ed091b3 208 BuffTemp[2] = Gyro.CMD_In; //D8
Kovalev_D 104:ab1cb4ff56b2 209
Kovalev_D 104:ab1cb4ff56b2 210 /*
Kovalev_D 104:ab1cb4ff56b2 211
Kovalev_D 104:ab1cb4ff56b2 212 FrqON
Kovalev_D 104:ab1cb4ff56b2 213 PlcON
Kovalev_D 104:ab1cb4ff56b2 214 HFOOFF
Kovalev_D 104:ab1cb4ff56b2 215 HFOON
igor_v 21:bc8c1cec3da6 216
Kovalev_D 104:ab1cb4ff56b2 217 PlcOFF
Kovalev_D 104:ab1cb4ff56b2 218 PlcON
Kovalev_D 104:ab1cb4ff56b2 219 */
Kovalev_D 104:ab1cb4ff56b2 220 Pa = BuffTemp[3];
Kovalev_D 104:ab1cb4ff56b2 221
Kovalev_D 104:ab1cb4ff56b2 222 SR = Pa >> 0x7;
Kovalev_D 104:ab1cb4ff56b2 223
Kovalev_D 104:ab1cb4ff56b2 224 V = Pa >> 0x5;
Kovalev_D 104:ab1cb4ff56b2 225 V = V & 0x3;
Kovalev_D 104:ab1cb4ff56b2 226
Kovalev_D 104:ab1cb4ff56b2 227 A = Pa >> 0x4;
Kovalev_D 104:ab1cb4ff56b2 228 A = A & 0x1;
Kovalev_D 104:ab1cb4ff56b2 229
Kovalev_D 104:ab1cb4ff56b2 230 Bit_num = Pa & 0xf;
Kovalev_D 104:ab1cb4ff56b2 231
Kovalev_D 104:ab1cb4ff56b2 232 if(SR) {
Kovalev_D 104:ab1cb4ff56b2 233 switch (Bit_num){
Kovalev_D 105:bd01d8d20fb6 234
Kovalev_D 104:ab1cb4ff56b2 235 case 0x06:
Kovalev_D 104:ab1cb4ff56b2 236 FrqON
Kovalev_D 105:bd01d8d20fb6 237 break;
Kovalev_D 105:bd01d8d20fb6 238
Kovalev_D 104:ab1cb4ff56b2 239 case 0x03:
Kovalev_D 105:bd01d8d20fb6 240 HFOON
Kovalev_D 105:bd01d8d20fb6 241 break;
Kovalev_D 105:bd01d8d20fb6 242
Kovalev_D 105:bd01d8d20fb6 243 case 0x01:
Kovalev_D 105:bd01d8d20fb6 244 PlcON
Kovalev_D 105:bd01d8d20fb6 245 break;
Kovalev_D 104:ab1cb4ff56b2 246 }
Kovalev_D 104:ab1cb4ff56b2 247 }
Kovalev_D 104:ab1cb4ff56b2 248 else{
Kovalev_D 104:ab1cb4ff56b2 249 switch (Bit_num){
Kovalev_D 105:bd01d8d20fb6 250
Kovalev_D 105:bd01d8d20fb6 251 case 0x06:
Kovalev_D 104:ab1cb4ff56b2 252 FrqOff
Kovalev_D 105:bd01d8d20fb6 253 break;
Kovalev_D 105:bd01d8d20fb6 254
Kovalev_D 105:bd01d8d20fb6 255 case 0x03:
Kovalev_D 105:bd01d8d20fb6 256 HFOOFF
Kovalev_D 105:bd01d8d20fb6 257 break;
Kovalev_D 105:bd01d8d20fb6 258
Kovalev_D 105:bd01d8d20fb6 259 case 0x01:
Kovalev_D 105:bd01d8d20fb6 260 PlcOFF
Kovalev_D 105:bd01d8d20fb6 261 break;
Kovalev_D 104:ab1cb4ff56b2 262 }
Kovalev_D 104:ab1cb4ff56b2 263 }
igor_v 21:bc8c1cec3da6 264
igor_v 0:8ad47e2b6f00 265 }
igor_v 0:8ad47e2b6f00 266
igor_v 21:bc8c1cec3da6 267 void CMD_M_Control_D9()///чтение регистров управления
igor_v 21:bc8c1cec3da6 268 {
igor_v 21:bc8c1cec3da6 269 int bit,NReg;
igor_v 30:17c84ed091b3 270 BuffTemp[0] = Gyro.SOC_Out; //DD
igor_v 30:17c84ed091b3 271 BuffTemp[1] = Gyro.My_Addres; //00
igor_v 30:17c84ed091b3 272 BuffTemp[2] = Gyro.CMD_In; //D9
igor_v 21:bc8c1cec3da6 273 if ((Param1 & 0x10) == 0) {
igor_v 21:bc8c1cec3da6 274 BuffTemp[3]=0<<4;
igor_v 30:17c84ed091b3 275 BuffTemp[4] = (Gyro.RgConA>>8 )& 0xff;
igor_v 30:17c84ed091b3 276 BuffTemp[5] = Gyro.RgConA & 0xff;
igor_v 21:bc8c1cec3da6 277 } else {
igor_v 21:bc8c1cec3da6 278 BuffTemp[3]=1<<4;
igor_v 30:17c84ed091b3 279 BuffTemp[4] = (Gyro.RgConB>>8 ) & 0xff;
igor_v 30:17c84ed091b3 280 BuffTemp[5] = Gyro.RgConB & 0xff;
igor_v 21:bc8c1cec3da6 281 }
igor_v 21:bc8c1cec3da6 282 Check(BuffTemp, CRC_N);
igor_v 21:bc8c1cec3da6 283 WriteConN (BuffTemp,CRC_N);
igor_v 21:bc8c1cec3da6 284 }
igor_v 21:bc8c1cec3da6 285 // (номер (код) ЦАПа 0...3, старший байт требуемого ЦАПа, младший байт треб ЦАПа)
igor_v 0:8ad47e2b6f00 286 void CMD_M_Stymul()
igor_v 0:8ad47e2b6f00 287 {
igor_v 21:bc8c1cec3da6 288 int temp;
Kovalev_D 102:4270092be987 289 int HFO;
Kovalev_D 102:4270092be987 290 temp=BuffTemp[3];
Kovalev_D 102:4270092be987 291 Consol = temp&0x3;
Kovalev_D 103:e96f08947def 292 HFO = temp&0x3;// // (номер (код) ЦАПа 0...3, HFO - 3dac, PLC - 0DAC
igor_v 21:bc8c1cec3da6 293 temp =((BuffTemp[4]<<8) | BuffTemp[5]);
igor_v 21:bc8c1cec3da6 294 // temp=0;
igor_v 21:bc8c1cec3da6 295 temp=temp&0xFFFF;
Kovalev_D 102:4270092be987 296
Kovalev_D 102:4270092be987 297 if(HFO)
Kovalev_D 102:4270092be987 298 {
Kovalev_D 102:4270092be987 299 Spi.DAC_A=(unsigned int)temp;
Kovalev_D 102:4270092be987 300 }
Kovalev_D 102:4270092be987 301 else{
igor_v 21:bc8c1cec3da6 302 DACF =(temp*K_DAC)+deltaDAC;
igor_v 21:bc8c1cec3da6 303 Spi.DAC_B =(unsigned int)(DACF) /*(unsigned int)(temp*K_DAC+deltaDAC)*/; // K_DAC);
igor_v 21:bc8c1cec3da6 304 }
igor_v 0:8ad47e2b6f00 305 }
Kovalev_D 103:e96f08947def 306 void Gph_W()
Kovalev_D 103:e96f08947def 307 {
Kovalev_D 108:030cdde08314 308 Out_G_photo(BuffTemp[4],BuffTemp[5]);
Kovalev_D 103:e96f08947def 309 }
igor_v 0:8ad47e2b6f00 310
Kovalev_D 98:95b8e79f13e1 311 void CMD_M_vib()
Kovalev_D 115:e5a230e5af52 312 {
Kovalev_D 102:4270092be987 313 unsigned int temp1,temp2;
Kovalev_D 102:4270092be987 314
Kovalev_D 102:4270092be987 315 temp1 =((BuffTemp[4]<<8) | BuffTemp[5]);
Kovalev_D 102:4270092be987 316 temp1=temp1&0xFFFF;
Kovalev_D 102:4270092be987 317
Kovalev_D 102:4270092be987 318 temp2 =((BuffTemp[6]<<8) | BuffTemp[7]);
Kovalev_D 102:4270092be987 319 temp2=temp2&0xFFFF;
Kovalev_D 102:4270092be987 320 Gyro.Frq = ((unsigned int) ((7680000*16/temp1)))*16*16*16;
Kovalev_D 102:4270092be987 321 Consol=Gyro.Frq ;
Kovalev_D 98:95b8e79f13e1 322 }
igor_v 0:8ad47e2b6f00 323 unsigned int Check(char *c, unsigned int Count)
igor_v 0:8ad47e2b6f00 324 {
igor_v 21:bc8c1cec3da6 325 int i=1;
igor_v 21:bc8c1cec3da6 326 unsigned int temp,CRC;
igor_v 21:bc8c1cec3da6 327
igor_v 21:bc8c1cec3da6 328
igor_v 21:bc8c1cec3da6 329 temp=1;
igor_v 21:bc8c1cec3da6 330 CRC=0;
igor_v 21:bc8c1cec3da6 331
igor_v 21:bc8c1cec3da6 332
igor_v 21:bc8c1cec3da6 333 for(; i<Count-2; i++) {
igor_v 21:bc8c1cec3da6 334 CRC+=c[i];
igor_v 21:bc8c1cec3da6 335 }
igor_v 0:8ad47e2b6f00 336
igor_v 21:bc8c1cec3da6 337 if(c[Count-2]!=((CRC>>8)&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 0:8ad47e2b6f00 341
igor_v 21:bc8c1cec3da6 342 if(c[Count-1]!=((CRC>>0)&0xFF)) {
igor_v 21:bc8c1cec3da6 343 temp=0;
igor_v 30:17c84ed091b3 344 // Gyro.RsErrLine= (Gyro.RsErrLine)=0x2;
igor_v 21:bc8c1cec3da6 345 }
igor_v 21:bc8c1cec3da6 346
igor_v 21:bc8c1cec3da6 347 c[Count-2]=(CRC>>8)&0xFF;
igor_v 21:bc8c1cec3da6 348 c[Count-1]=(CRC>>0)&0xFF;
igor_v 21:bc8c1cec3da6 349
igor_v 21:bc8c1cec3da6 350
igor_v 21:bc8c1cec3da6 351
igor_v 21:bc8c1cec3da6 352 return temp;
igor_v 0:8ad47e2b6f00 353 }
igor_v 0:8ad47e2b6f00 354
igor_v 0:8ad47e2b6f00 355 int Getlengf(void)
igor_v 0:8ad47e2b6f00 356 {
igor_v 21:bc8c1cec3da6 357 unsigned int lengf=0;
igor_v 30:17c84ed091b3 358 switch(Gyro.CMD_In) {
igor_v 30:17c84ed091b3 359 case 0x99://Gyrotainance
Kovalev_D 92:c892f0311aa7 360
igor_v 21:bc8c1cec3da6 361 lengf=6;
igor_v 21:bc8c1cec3da6 362 CRC_N=8;
igor_v 21:bc8c1cec3da6 363 break;
igor_v 0:8ad47e2b6f00 364
igor_v 21:bc8c1cec3da6 365 case 0x0A: //m_stymul
igor_v 21:bc8c1cec3da6 366 lengf=8;
igor_v 21:bc8c1cec3da6 367 break;
igor_v 21:bc8c1cec3da6 368
igor_v 21:bc8c1cec3da6 369 case 0xA5://DeviceMode
igor_v 21:bc8c1cec3da6 370
igor_v 21:bc8c1cec3da6 371 lengf=6;
igor_v 21:bc8c1cec3da6 372 CRC_N=8;
igor_v 21:bc8c1cec3da6 373 break;
igor_v 21:bc8c1cec3da6 374
igor_v 21:bc8c1cec3da6 375 case 0xDD://m_rate
igor_v 0:8ad47e2b6f00 376
igor_v 21:bc8c1cec3da6 377 lengf=6;
igor_v 21:bc8c1cec3da6 378 CRC_N=44;
igor_v 21:bc8c1cec3da6 379 break;
igor_v 21:bc8c1cec3da6 380
igor_v 21:bc8c1cec3da6 381 case 0xB0://DeviceMode
igor_v 21:bc8c1cec3da6 382
igor_v 21:bc8c1cec3da6 383 lengf=6;
igor_v 21:bc8c1cec3da6 384 CRC_N=8;
igor_v 21:bc8c1cec3da6 385 break;
igor_v 21:bc8c1cec3da6 386
igor_v 21:bc8c1cec3da6 387 case 0xD8://m_control
igor_v 0:8ad47e2b6f00 388
igor_v 21:bc8c1cec3da6 389 lengf=6;
igor_v 21:bc8c1cec3da6 390 CRC_N=8;
igor_v 21:bc8c1cec3da6 391 break;
igor_v 21:bc8c1cec3da6 392
igor_v 21:bc8c1cec3da6 393 case 0xD9://m_control
igor_v 0:8ad47e2b6f00 394
igor_v 21:bc8c1cec3da6 395 lengf=6;
igor_v 21:bc8c1cec3da6 396 CRC_N=8;
igor_v 21:bc8c1cec3da6 397 break;
Kovalev_D 102:4270092be987 398
Kovalev_D 102:4270092be987 399 case 0xE4:
Kovalev_D 98:95b8e79f13e1 400 lengf=8;
Kovalev_D 98:95b8e79f13e1 401 break;
Kovalev_D 103:e96f08947def 402
Kovalev_D 103:e96f08947def 403
Kovalev_D 103:e96f08947def 404 case 0xE6:
Kovalev_D 103:e96f08947def 405 lengf=8;
Kovalev_D 103:e96f08947def 406 break;
Kovalev_D 103:e96f08947def 407
igor_v 21:bc8c1cec3da6 408 }
Kovalev_D 98:95b8e79f13e1 409
igor_v 21:bc8c1cec3da6 410 return lengf;
igor_v 0:8ad47e2b6f00 411 }
igor_v 0:8ad47e2b6f00 412
igor_v 0:8ad47e2b6f00 413 void Read_CMD(void)
igor_v 21:bc8c1cec3da6 414 {
Kovalev_D 92:c892f0311aa7 415
Kovalev_D 45:cbc955aecebe 416
Kovalev_D 45:cbc955aecebe 417 Gyro.RsErrLine = (Gyro.RsErrLine)& 0xffff;//для сброса ошибки
igor_v 21:bc8c1cec3da6 418
Kovalev_D 93:b3803774f110 419 CountBuFFIn=ReadChekCon1(BuffTemp); // чтение данных из консоли
igor_v 42:6fc307c4963e 420
Kovalev_D 92:c892f0311aa7 421 if(CountBuFFIn==1) { // если есть первый байт
igor_v 21:bc8c1cec3da6 422 if (BuffTemp[0] != SOC_In) {
Kovalev_D 93:b3803774f110 423 ReadCon1(BuffTemp);
igor_v 30:17c84ed091b3 424 Gyro.RsErrLine += 0x100;//WriteCon("\n\r ...Error.... ");
Kovalev_D 93:b3803774f110 425 BuffTemp[99]=Gyro.RsErrLine;
Kovalev_D 102:4270092be987 426
igor_v 21:bc8c1cec3da6 427 }
Kovalev_D 92:c892f0311aa7 428 } else if(CountBuFFIn==2) { //если второй ,fqn
igor_v 30:17c84ed091b3 429 if (BuffTemp[1] != Gyro.My_Addres) {
Kovalev_D 93:b3803774f110 430 ReadCon1(BuffTemp);
igor_v 30:17c84ed091b3 431 Gyro.RsErrLine += 0x1;//WriteCon("\n\r ...Error_ADDRES.... ");
igor_v 21:bc8c1cec3da6 432 }
igor_v 42:6fc307c4963e 433 } else if(CountBuFFIn==3) { // если ьоетий байт
igor_v 30:17c84ed091b3 434 Gyro.CMD_In=BuffTemp[2];
Kovalev_D 92:c892f0311aa7 435 N=Getlengf();
Kovalev_D 92:c892f0311aa7 436 }
Kovalev_D 92:c892f0311aa7 437 else if(CountBuFFIn==4 && (N==6))
Kovalev_D 92:c892f0311aa7 438 { // N - длина посылки аскглд(для записи параметров). определяется по коду команды в Getlengf();
igor_v 21:bc8c1cec3da6 439 Param1=BuffTemp[3];
Kovalev_D 92:c892f0311aa7 440 }
Kovalev_D 92:c892f0311aa7 441 else if((CountBuFFIn==5)&&(N==7))
Kovalev_D 92:c892f0311aa7 442 {
Kovalev_D 92:c892f0311aa7 443
igor_v 21:bc8c1cec3da6 444 Param1=BuffTemp[3];
igor_v 21:bc8c1cec3da6 445 Param2=BuffTemp[4];
igor_v 0:8ad47e2b6f00 446
Kovalev_D 92:c892f0311aa7 447 }
Kovalev_D 92:c892f0311aa7 448 else if((CountBuFFIn==6)&&(N==8))
Kovalev_D 92:c892f0311aa7 449 {
igor_v 21:bc8c1cec3da6 450 Param1=BuffTemp[3];
igor_v 21:bc8c1cec3da6 451 Param2=BuffTemp[4];
igor_v 21:bc8c1cec3da6 452 Param3=BuffTemp[5];
Kovalev_D 92:c892f0311aa7 453 }
Kovalev_D 102:4270092be987 454 else if((CountBuFFIn==8)&&(N==10))
Kovalev_D 102:4270092be987 455 {
Kovalev_D 102:4270092be987 456 Param1=BuffTemp[4];
Kovalev_D 102:4270092be987 457 Param2=BuffTemp[5];
Kovalev_D 102:4270092be987 458 Param3=BuffTemp[6];
Kovalev_D 102:4270092be987 459 Param4=BuffTemp[7];
Kovalev_D 102:4270092be987 460 }
Kovalev_D 98:95b8e79f13e1 461
Kovalev_D 92:c892f0311aa7 462 else if(CountBuFFIn > (N-1))
Kovalev_D 92:c892f0311aa7 463 {
Kovalev_D 93:b3803774f110 464 ReadCon1(BuffTemp);
igor_v 30:17c84ed091b3 465 switch(Gyro.CMD_In) {
Kovalev_D 92:c892f0311aa7 466 case 0x99:
igor_v 21:bc8c1cec3da6 467 CMD_Maintenance();
igor_v 21:bc8c1cec3da6 468 break;
igor_v 21:bc8c1cec3da6 469 case 0xD8:
igor_v 21:bc8c1cec3da6 470 CMD_M_Control_D8();
igor_v 21:bc8c1cec3da6 471 case 0xD9:
igor_v 21:bc8c1cec3da6 472 CMD_M_Control_D9();
igor_v 21:bc8c1cec3da6 473 break;
igor_v 21:bc8c1cec3da6 474 case 0x0A:
Kovalev_D 45:cbc955aecebe 475 CMD_M_Stymul();
igor_v 21:bc8c1cec3da6 476 break;
igor_v 21:bc8c1cec3da6 477 case 0xDD:
igor_v 21:bc8c1cec3da6 478 Rate_Flag=1;
Kovalev_D 102:4270092be987 479 break;
Kovalev_D 102:4270092be987 480 case 0xE4:
Kovalev_D 102:4270092be987 481 CMD_M_vib();
Kovalev_D 102:4270092be987 482 break;
Kovalev_D 103:e96f08947def 483 case 0xE6:
Kovalev_D 103:e96f08947def 484 Gph_W();
Kovalev_D 103:e96f08947def 485 break;
Kovalev_D 108:030cdde08314 486
Kovalev_D 103:e96f08947def 487
igor_v 30:17c84ed091b3 488 Gyro.RsErrLine = 0;
Kovalev_D 103:e96f08947def 489
Kovalev_D 103:e96f08947def 490
Kovalev_D 102:4270092be987 491 }
igor_v 21:bc8c1cec3da6 492 }
igor_v 0:8ad47e2b6f00 493 }
igor_v 0:8ad47e2b6f00 494
igor_v 0:8ad47e2b6f00 495
igor_v 21:bc8c1cec3da6 496