forkd

Dependencies:   mbed

Fork of LG2 by Dmitry Kovalev

Committer:
Kovalev_D
Date:
Wed Feb 03 10:44:42 2016 +0300
Revision:
23:12e6183f04d4
[thyz

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kovalev_D 23:12e6183f04d4 1 #include "stdlib.h"
Kovalev_D 23:12e6183f04d4 2 #include "lpc17xx.h"
Kovalev_D 23:12e6183f04d4 3 #include "Command.h"
Kovalev_D 23:12e6183f04d4 4 #include "el_lin.h"
Kovalev_D 23:12e6183f04d4 5 #include "vibro.h"
Kovalev_D 23:12e6183f04d4 6 #include "Global.h"
Kovalev_D 23:12e6183f04d4 7 #include "uart_m.h"
Kovalev_D 23:12e6183f04d4 8 #include "CntrlGLD.h"
Kovalev_D 23:12e6183f04d4 9 #include "QEI.h"
Kovalev_D 23:12e6183f04d4 10 #include "InputOutput.h"
Kovalev_D 23:12e6183f04d4 11 #include "SPI.h"
Kovalev_D 23:12e6183f04d4 12 unsigned int Rate_Flag;
Kovalev_D 23:12e6183f04d4 13 unsigned int PC_Comand;
Kovalev_D 23:12e6183f04d4 14 unsigned int n;
Kovalev_D 23:12e6183f04d4 15 unsigned int CountBuFFIn;
Kovalev_D 23:12e6183f04d4 16 unsigned int ParamIn;
Kovalev_D 23:12e6183f04d4 17 unsigned int Err;
Kovalev_D 23:12e6183f04d4 18 unsigned int N=0,CRC_N;
Kovalev_D 23:12e6183f04d4 19 unsigned int Param1=0;
Kovalev_D 23:12e6183f04d4 20 unsigned int Param2=0;
Kovalev_D 23:12e6183f04d4 21 unsigned int Param3=0;
Kovalev_D 23:12e6183f04d4 22 unsigned int Param4=0;
Kovalev_D 23:12e6183f04d4 23
Kovalev_D 23:12e6183f04d4 24 /*
Kovalev_D 23:12e6183f04d4 25 void exec_CMD(void) //r. === ïðîöåäóðà îêîí÷àòåëüíîé äåøèôðàöèè è èñïîëíåíèÿ êîìàíäû
Kovalev_D 23:12e6183f04d4 26 {
Kovalev_D 23:12e6183f04d4 27 unsigned int Comand_code;
Kovalev_D 23:12e6183f04d4 28
Kovalev_D 23:12e6183f04d4 29 //rx_buf_copy = 1; //r. ïðåäóñòàíîâ ôëàãà êîïèðîâàíèÿ ïðèåìíîãî áóôåðà
Kovalev_D 23:12e6183f04d4 30
Kovalev_D 23:12e6183f04d4 31 Comand_code = (rcv_buf[2] & 0xFF) << 8;
Kovalev_D 23:12e6183f04d4 32 PC_Comand = Comand_code | (rcv_buf[3] & 0xFF); //e. save it in the memory for echo-transmission //r. ñîõðàíèòü åãî â ïàìÿòè äëÿ îáðàòíîé ïåðåäà÷è
Kovalev_D 23:12e6183f04d4 33 }*/
Kovalev_D 23:12e6183f04d4 34 void CMD_Maintenance(void)
Kovalev_D 23:12e6183f04d4 35 {
Kovalev_D 23:12e6183f04d4 36 BuffTemp[0] = Main.SOC_Out;
Kovalev_D 23:12e6183f04d4 37 BuffTemp[1] = Main.My_Addres;
Kovalev_D 23:12e6183f04d4 38 BuffTemp[2] = Main.Firmware_Version;
Kovalev_D 23:12e6183f04d4 39 BuffTemp[3] = Main.GLD_Serial;
Kovalev_D 23:12e6183f04d4 40 BuffTemp[4]=0x00;
Kovalev_D 23:12e6183f04d4 41 BuffTemp[5]=0x00;
Kovalev_D 23:12e6183f04d4 42 Check(BuffTemp, 8);
Kovalev_D 23:12e6183f04d4 43 WriteConN (BuffTemp,8);
Kovalev_D 23:12e6183f04d4 44 }
Kovalev_D 23:12e6183f04d4 45
Kovalev_D 23:12e6183f04d4 46 void CMD_Rate(void)
Kovalev_D 23:12e6183f04d4 47 {
Kovalev_D 23:12e6183f04d4 48
Kovalev_D 23:12e6183f04d4 49 unsigned int T_VibH , T_VibL; // ×àñòîòà âèáðîïðèâîäà.
Kovalev_D 23:12e6183f04d4 50 unsigned int Cnt_PlsL , Cnt_PlsH; // Ñ÷åò÷èê +.
Kovalev_D 23:12e6183f04d4 51 unsigned int Cnt_MnsL , Cnt_MnsH; // Ñ÷åò÷èê -.
Kovalev_D 23:12e6183f04d4 52 unsigned int Cnt_DifL , Cnt_DifH; // Ðàçíîñòü ñ÷åò÷èêîâ.
Kovalev_D 23:12e6183f04d4 53 unsigned int F_rasL , F_rasH; // ×àñòîòà ðàñùåïëåíèÿ.
Kovalev_D 23:12e6183f04d4 54
Kovalev_D 23:12e6183f04d4 55 unsigned int HF_regL , HF_regH; // Âûõîä ðåãóëÿòîðà ÃÂ×. ÍÅ ÑÄÅËÀÍÎ
Kovalev_D 23:12e6183f04d4 56 unsigned int HF_difL , HF_difH; // Ñèãíàë îøèáêè ðåãóëÿ÷òîðà ÃÂ×. ÍÅ ÑÄÅËÀÍÎ
Kovalev_D 23:12e6183f04d4 57
Kovalev_D 23:12e6183f04d4 58 unsigned int WP_regL , WP_regH;
Kovalev_D 23:12e6183f04d4 59
Kovalev_D 23:12e6183f04d4 60 unsigned int ADC1L, ADC2L, ADC3L, ADC4L, ADC5L;
Kovalev_D 23:12e6183f04d4 61 unsigned int ADC1H, ADC2H, ADC3H, ADC4H, ADC5H;
Kovalev_D 23:12e6183f04d4 62
Kovalev_D 23:12e6183f04d4 63
Kovalev_D 23:12e6183f04d4 64 LoopOn
Kovalev_D 23:12e6183f04d4 65 // Main.T_Vib=(unsigned int)((7680000*16/Main.Frq)*4096);
Kovalev_D 23:12e6183f04d4 66 Main.T_Vib=(unsigned int)((7680000*16/(Main.Frq>>12)));
Kovalev_D 23:12e6183f04d4 67 Main.Firmware_Version=0xff; /// ïðîìåæóòî÷íàÿ çàòû÷êà
Kovalev_D 23:12e6183f04d4 68
Kovalev_D 23:12e6183f04d4 69 T_VibH = ( Main.T_Vib>>8 ) TakeByte;
Kovalev_D 23:12e6183f04d4 70 T_VibL = ( Main.T_Vib ) TakeByte;
Kovalev_D 23:12e6183f04d4 71
Kovalev_D 23:12e6183f04d4 72 Cnt_PlsH = ( Main.Cnt_Pls>>8) TakeByte;
Kovalev_D 23:12e6183f04d4 73 Cnt_PlsL = ( Main.Cnt_Pls ) TakeByte;
Kovalev_D 23:12e6183f04d4 74
Kovalev_D 23:12e6183f04d4 75 Cnt_MnsH = ( Main.Cnt_Mns>>8) TakeByte;
Kovalev_D 23:12e6183f04d4 76 Cnt_MnsL = ( Main.Cnt_Mns ) TakeByte;
Kovalev_D 23:12e6183f04d4 77
Kovalev_D 23:12e6183f04d4 78 Cnt_DifH = ( Main.Cnt_Dif>>8) TakeByte;
Kovalev_D 23:12e6183f04d4 79 Cnt_DifL = ( Main.Cnt_Dif ) TakeByte;
Kovalev_D 23:12e6183f04d4 80
Kovalev_D 23:12e6183f04d4 81 F_rasH = ( Main.F_ras>>8 ) TakeByte;
Kovalev_D 23:12e6183f04d4 82 F_rasL = ( Main.F_ras ) TakeByte;
Kovalev_D 23:12e6183f04d4 83
Kovalev_D 23:12e6183f04d4 84 ADC1H = ( Spi.ADC1>>8 ) TakeByte;
Kovalev_D 23:12e6183f04d4 85 ADC1L = ( Spi.ADC1 ) TakeByte;
Kovalev_D 23:12e6183f04d4 86
Kovalev_D 23:12e6183f04d4 87 ADC2H = ( Spi.ADC2>>8 ) TakeByte;
Kovalev_D 23:12e6183f04d4 88 ADC2L = ( Spi.ADC2 ) TakeByte;
Kovalev_D 23:12e6183f04d4 89
Kovalev_D 23:12e6183f04d4 90 ADC3H = ( Spi.ADC3>>8 ) TakeByte;
Kovalev_D 23:12e6183f04d4 91 ADC3L = ( Spi.ADC3 ) TakeByte;
Kovalev_D 23:12e6183f04d4 92
Kovalev_D 23:12e6183f04d4 93 ADC4H = ( Spi.ADC4>>8 ) TakeByte;
Kovalev_D 23:12e6183f04d4 94 ADC4L = ( Spi.ADC4 ) TakeByte;
Kovalev_D 23:12e6183f04d4 95
Kovalev_D 23:12e6183f04d4 96 ADC5H = ( Spi.ADC5>>8 ) TakeByte;
Kovalev_D 23:12e6183f04d4 97 ADC5L = ( Spi.ADC5 ) TakeByte;
Kovalev_D 23:12e6183f04d4 98
Kovalev_D 23:12e6183f04d4 99 WP_regH = ( Spi.DAC_B>>8 ) TakeByte;
Kovalev_D 23:12e6183f04d4 100 WP_regL = ( Spi.DAC_B ) TakeByte;
Kovalev_D 23:12e6183f04d4 101
Kovalev_D 23:12e6183f04d4 102 HF_regH=0xff;
Kovalev_D 23:12e6183f04d4 103 HF_regL=0xff;
Kovalev_D 23:12e6183f04d4 104
Kovalev_D 23:12e6183f04d4 105 HF_difH=0xff;
Kovalev_D 23:12e6183f04d4 106 HF_difL=0xff;
Kovalev_D 23:12e6183f04d4 107
Kovalev_D 23:12e6183f04d4 108
Kovalev_D 23:12e6183f04d4 109 BuffTemp[ 0] = Main.SOC_Out;
Kovalev_D 23:12e6183f04d4 110 BuffTemp[ 1] = Main.My_Addres;
Kovalev_D 23:12e6183f04d4 111
Kovalev_D 23:12e6183f04d4 112 BuffTemp[ 2] = Cnt_PlsH;//ñòàðøèé áàéò ñ÷åò÷èêà +.
Kovalev_D 23:12e6183f04d4 113 BuffTemp[ 3] = Cnt_PlsL;//ìëàäøèé áàéò ñ÷åò÷èêà +.
Kovalev_D 23:12e6183f04d4 114
Kovalev_D 23:12e6183f04d4 115 BuffTemp[ 4] = Cnt_MnsH;//ñòàðøèé áàéò ñ÷åò÷èêà -.
Kovalev_D 23:12e6183f04d4 116 BuffTemp[ 5] = Cnt_MnsL;//ìëàäøèé áàéò ñ÷åò÷èêà -.
Kovalev_D 23:12e6183f04d4 117
Kovalev_D 23:12e6183f04d4 118 BuffTemp[ 6] = Cnt_DifH;//ñòàðøèé áàéò ðàçíîñòè ñ÷åò÷èêîâ
Kovalev_D 23:12e6183f04d4 119 BuffTemp[ 7] = Cnt_DifL;//ìëàäøèé áàéò ðàçíîñòè ñ÷åò÷èêîâ
Kovalev_D 23:12e6183f04d4 120
Kovalev_D 23:12e6183f04d4 121 BuffTemp[ 8] = F_rasH;
Kovalev_D 23:12e6183f04d4 122 BuffTemp[ 9] = F_rasL;
Kovalev_D 23:12e6183f04d4 123
Kovalev_D 23:12e6183f04d4 124 BuffTemp[10] = HF_regH;
Kovalev_D 23:12e6183f04d4 125 BuffTemp[11] = HF_regL;
Kovalev_D 23:12e6183f04d4 126
Kovalev_D 23:12e6183f04d4 127 BuffTemp[12] = HF_difH;
Kovalev_D 23:12e6183f04d4 128 BuffTemp[13] = HF_difL;
Kovalev_D 23:12e6183f04d4 129
Kovalev_D 23:12e6183f04d4 130 BuffTemp[14] = T_VibH ;//
Kovalev_D 23:12e6183f04d4 131 BuffTemp[15] = T_VibL; //?
Kovalev_D 23:12e6183f04d4 132
Kovalev_D 23:12e6183f04d4 133 BuffTemp[16] = Main.Firmware_Version;//ÕÇ
Kovalev_D 23:12e6183f04d4 134 BuffTemp[17] = Main.Firmware_Version;//ÕÇ
Kovalev_D 23:12e6183f04d4 135
Kovalev_D 23:12e6183f04d4 136 BuffTemp[18] = T_VibH>>1;
Kovalev_D 23:12e6183f04d4 137 BuffTemp[19] = T_VibL;
Kovalev_D 23:12e6183f04d4 138
Kovalev_D 23:12e6183f04d4 139 BuffTemp[20] = Main.Firmware_Version;//ÕÇ
Kovalev_D 23:12e6183f04d4 140 BuffTemp[21] = Main.Firmware_Version;//ÕÇ
Kovalev_D 23:12e6183f04d4 141
Kovalev_D 23:12e6183f04d4 142 BuffTemp[22] = WP_regH; //ÑÐÏ Spi.DAC_B
Kovalev_D 23:12e6183f04d4 143 BuffTemp[23] = WP_regL; //ÑÐÏ
Kovalev_D 23:12e6183f04d4 144
Kovalev_D 23:12e6183f04d4 145 BuffTemp[24] = Main.Firmware_Version;// ÕÇ
Kovalev_D 23:12e6183f04d4 146 BuffTemp[25] = Main.Firmware_Version;// ÕÇ
Kovalev_D 23:12e6183f04d4 147
Kovalev_D 23:12e6183f04d4 148 BuffTemp[26] = ADC1H;
Kovalev_D 23:12e6183f04d4 149 BuffTemp[27] = ADC1L;
Kovalev_D 23:12e6183f04d4 150
Kovalev_D 23:12e6183f04d4 151 BuffTemp[28] = ADC1H;
Kovalev_D 23:12e6183f04d4 152 BuffTemp[29] = ADC1L;
Kovalev_D 23:12e6183f04d4 153
Kovalev_D 23:12e6183f04d4 154 BuffTemp[30] = ADC1H;
Kovalev_D 23:12e6183f04d4 155 BuffTemp[31] = ADC1L;
Kovalev_D 23:12e6183f04d4 156
Kovalev_D 23:12e6183f04d4 157 BuffTemp[32] = ADC1H;
Kovalev_D 23:12e6183f04d4 158 BuffTemp[33] = ADC1L;
Kovalev_D 23:12e6183f04d4 159
Kovalev_D 23:12e6183f04d4 160 BuffTemp[34] = ADC1H;
Kovalev_D 23:12e6183f04d4 161 BuffTemp[35] = ADC1L;
Kovalev_D 23:12e6183f04d4 162
Kovalev_D 23:12e6183f04d4 163 BuffTemp[36] = 0x00;//ADC6
Kovalev_D 23:12e6183f04d4 164 BuffTemp[37] = 0x00;//ADC6
Kovalev_D 23:12e6183f04d4 165
Kovalev_D 23:12e6183f04d4 166 BuffTemp[38] = Main.Firmware_Version;
Kovalev_D 23:12e6183f04d4 167 BuffTemp[39] = Main.Firmware_Version;
Kovalev_D 23:12e6183f04d4 168 BuffTemp[40] = Main.Firmware_Version;
Kovalev_D 23:12e6183f04d4 169 BuffTemp[41] = Main.Firmware_Version;
Kovalev_D 23:12e6183f04d4 170
Kovalev_D 23:12e6183f04d4 171
Kovalev_D 23:12e6183f04d4 172 Check(BuffTemp, 44);
Kovalev_D 23:12e6183f04d4 173 WriteConN (BuffTemp,44);
Kovalev_D 23:12e6183f04d4 174 LoopOff
Kovalev_D 23:12e6183f04d4 175 }
Kovalev_D 23:12e6183f04d4 176
Kovalev_D 23:12e6183f04d4 177 void CMD_M_Control_D8()///óñòàíîâêà\ñáðîñ ðåãèñòðîâ óïðàâëåíèÿ
Kovalev_D 23:12e6183f04d4 178 {
Kovalev_D 23:12e6183f04d4 179 int bit,NReg;
Kovalev_D 23:12e6183f04d4 180 BuffTemp[0] = Main.SOC_Out; //DD
Kovalev_D 23:12e6183f04d4 181 BuffTemp[1] = Main.My_Addres; //00
Kovalev_D 23:12e6183f04d4 182 BuffTemp[2] = Main.CMD_In; //D8
Kovalev_D 23:12e6183f04d4 183 //10?
Kovalev_D 23:12e6183f04d4 184 if((Param1&0x80))
Kovalev_D 23:12e6183f04d4 185 {
Kovalev_D 23:12e6183f04d4 186 bit=1;
Kovalev_D 23:12e6183f04d4 187 }
Kovalev_D 23:12e6183f04d4 188 else
Kovalev_D 23:12e6183f04d4 189 {
Kovalev_D 23:12e6183f04d4 190 bit=0;
Kovalev_D 23:12e6183f04d4 191 }
Kovalev_D 23:12e6183f04d4 192
Kovalev_D 23:12e6183f04d4 193 if ((Param1 & 0x10) == 0)
Kovalev_D 23:12e6183f04d4 194 {
Kovalev_D 23:12e6183f04d4 195 NReg=0;
Kovalev_D 23:12e6183f04d4 196 switch(Param1&0xf) // Main.RgConA
Kovalev_D 23:12e6183f04d4 197 {
Kovalev_D 23:12e6183f04d4 198 case 0x0:
Kovalev_D 23:12e6183f04d4 199 Main.RgConA|=bit;
Kovalev_D 23:12e6183f04d4 200 break;
Kovalev_D 23:12e6183f04d4 201
Kovalev_D 23:12e6183f04d4 202 case 0x1:
Kovalev_D 23:12e6183f04d4 203 Main.RgConA|=bit<<0x1;
Kovalev_D 23:12e6183f04d4 204 break;
Kovalev_D 23:12e6183f04d4 205
Kovalev_D 23:12e6183f04d4 206 case 0x2:
Kovalev_D 23:12e6183f04d4 207 Main.RgConA|=bit<<0x2;
Kovalev_D 23:12e6183f04d4 208 break;
Kovalev_D 23:12e6183f04d4 209
Kovalev_D 23:12e6183f04d4 210 case 0x3:
Kovalev_D 23:12e6183f04d4 211 Main.RgConA|=bit<<0x3;
Kovalev_D 23:12e6183f04d4 212 break;
Kovalev_D 23:12e6183f04d4 213
Kovalev_D 23:12e6183f04d4 214 case 0x4:
Kovalev_D 23:12e6183f04d4 215 Main.RgConA|=bit<<0x4;
Kovalev_D 23:12e6183f04d4 216 break;
Kovalev_D 23:12e6183f04d4 217
Kovalev_D 23:12e6183f04d4 218 case 0x5:
Kovalev_D 23:12e6183f04d4 219 Main.RgConA|=bit<<0x5;
Kovalev_D 23:12e6183f04d4 220 break;
Kovalev_D 23:12e6183f04d4 221
Kovalev_D 23:12e6183f04d4 222 case 0x6:
Kovalev_D 23:12e6183f04d4 223 Main.RgConA|=bit<<0x6;
Kovalev_D 23:12e6183f04d4 224 break;
Kovalev_D 23:12e6183f04d4 225
Kovalev_D 23:12e6183f04d4 226 case 0x7:
Kovalev_D 23:12e6183f04d4 227 Main.RgConA|=bit<<0x7;
Kovalev_D 23:12e6183f04d4 228 break;
Kovalev_D 23:12e6183f04d4 229 }
Kovalev_D 23:12e6183f04d4 230 BuffTemp[3] = NReg<<4;
Kovalev_D 23:12e6183f04d4 231 BuffTemp[4] = (Main.RgConA>>8 )& 0xff;
Kovalev_D 23:12e6183f04d4 232 BuffTemp[5] = Main.RgConA & 0xff;
Kovalev_D 23:12e6183f04d4 233 }
Kovalev_D 23:12e6183f04d4 234 else
Kovalev_D 23:12e6183f04d4 235 {
Kovalev_D 23:12e6183f04d4 236 NReg=1; // Main.RgConB
Kovalev_D 23:12e6183f04d4 237 switch(Param1&0xf) // Main.RgConB
Kovalev_D 23:12e6183f04d4 238 {
Kovalev_D 23:12e6183f04d4 239 case 0x0:
Kovalev_D 23:12e6183f04d4 240 Main.RgConB|=bit;
Kovalev_D 23:12e6183f04d4 241 break;
Kovalev_D 23:12e6183f04d4 242 case 0x1:
Kovalev_D 23:12e6183f04d4 243 Main.RgConB|=bit<1;
Kovalev_D 23:12e6183f04d4 244 break;
Kovalev_D 23:12e6183f04d4 245 case 0x2:
Kovalev_D 23:12e6183f04d4 246 Main.RgConB|=bit<2;
Kovalev_D 23:12e6183f04d4 247 break;
Kovalev_D 23:12e6183f04d4 248 }
Kovalev_D 23:12e6183f04d4 249 BuffTemp[3] = NReg<<4;
Kovalev_D 23:12e6183f04d4 250 BuffTemp[4] = (Main.RgConB>>8 ) & 0xff;
Kovalev_D 23:12e6183f04d4 251 BuffTemp[5] = Main.RgConB & 0xff;
Kovalev_D 23:12e6183f04d4 252 }
Kovalev_D 23:12e6183f04d4 253
Kovalev_D 23:12e6183f04d4 254 Check(BuffTemp, CRC_N);
Kovalev_D 23:12e6183f04d4 255 WriteConN (BuffTemp,CRC_N);
Kovalev_D 23:12e6183f04d4 256 }
Kovalev_D 23:12e6183f04d4 257
Kovalev_D 23:12e6183f04d4 258 void CMD_M_Control_D9()///÷òåíèå ðåãèñòðîâ óïðàâëåíèÿ
Kovalev_D 23:12e6183f04d4 259 {
Kovalev_D 23:12e6183f04d4 260 int bit,NReg;
Kovalev_D 23:12e6183f04d4 261 BuffTemp[0] = Main.SOC_Out; //DD
Kovalev_D 23:12e6183f04d4 262 BuffTemp[1] = Main.My_Addres; //00
Kovalev_D 23:12e6183f04d4 263 BuffTemp[2] = Main.CMD_In; //D9
Kovalev_D 23:12e6183f04d4 264 if ((Param1 & 0x10) == 0)
Kovalev_D 23:12e6183f04d4 265 {
Kovalev_D 23:12e6183f04d4 266 BuffTemp[3]=0<<4;
Kovalev_D 23:12e6183f04d4 267 BuffTemp[4] = (Main.RgConA>>8 )& 0xff;
Kovalev_D 23:12e6183f04d4 268 BuffTemp[5] = Main.RgConA & 0xff;
Kovalev_D 23:12e6183f04d4 269 }
Kovalev_D 23:12e6183f04d4 270 else
Kovalev_D 23:12e6183f04d4 271 {
Kovalev_D 23:12e6183f04d4 272 BuffTemp[3]=1<<4;
Kovalev_D 23:12e6183f04d4 273 BuffTemp[4] = (Main.RgConB>>8 ) & 0xff;
Kovalev_D 23:12e6183f04d4 274 BuffTemp[5] = Main.RgConB & 0xff;
Kovalev_D 23:12e6183f04d4 275 }
Kovalev_D 23:12e6183f04d4 276 Check(BuffTemp, CRC_N);
Kovalev_D 23:12e6183f04d4 277 WriteConN (BuffTemp,CRC_N);
Kovalev_D 23:12e6183f04d4 278 }
Kovalev_D 23:12e6183f04d4 279 // (íîìåð (êîä) ÖÀÏà 0...3, ñòàðøèé áàéò òðåáóåìîãî ÖÀÏà, ìëàäøèé áàéò òðåá ÖÀÏà)
Kovalev_D 23:12e6183f04d4 280 void CMD_M_Stymul()
Kovalev_D 23:12e6183f04d4 281 {
Kovalev_D 23:12e6183f04d4 282 int temp;
Kovalev_D 23:12e6183f04d4 283 temp =((BuffTemp[4]<<8) | BuffTemp[5]);
Kovalev_D 23:12e6183f04d4 284 // temp=0;
Kovalev_D 23:12e6183f04d4 285 temp=temp&0xFFFF;
Kovalev_D 23:12e6183f04d4 286 DACF =(temp*K_DAC)+deltaDAC;
Kovalev_D 23:12e6183f04d4 287 Spi.DAC_B =(unsigned int)(DACF) /*(unsigned int)(temp*K_DAC+deltaDAC)*/; // K_DAC);
Kovalev_D 23:12e6183f04d4 288
Kovalev_D 23:12e6183f04d4 289 //int temp;
Kovalev_D 23:12e6183f04d4 290 // temp =((BuffTemp[4]<<8) | BuffTemp[5]);
Kovalev_D 23:12e6183f04d4 291 //temp = 65535 - temp;
Kovalev_D 23:12e6183f04d4 292 /*if(temp<1000)
Kovalev_D 23:12e6183f04d4 293 {
Kovalev_D 23:12e6183f04d4 294 temp=0;
Kovalev_D 23:12e6183f04d4 295 }
Kovalev_D 23:12e6183f04d4 296 else if(temp>60000)
Kovalev_D 23:12e6183f04d4 297 {
Kovalev_D 23:12e6183f04d4 298 temp=65535;
Kovalev_D 23:12e6183f04d4 299 }*/
Kovalev_D 23:12e6183f04d4 300 //Spi.DAC_B =(((BuffTemp[4]<<8) | BuffTemp[5])*K_DAC+deltaDAC);/*((BuffTemp[4]<<8) | BuffTemp[5])-0xFFFF*///; //((rcv_buf[4] << 8) | (int)rcv_buf[5]);K_DAC+deltaDAC
Kovalev_D 23:12e6183f04d4 301 //BuffTemp[0] = temp; //DD
Kovalev_D 23:12e6183f04d4 302 //WriteConN (BuffTemp,1);
Kovalev_D 23:12e6183f04d4 303 }
Kovalev_D 23:12e6183f04d4 304
Kovalev_D 23:12e6183f04d4 305 unsigned int Check(char *c, unsigned int Count)
Kovalev_D 23:12e6183f04d4 306 {
Kovalev_D 23:12e6183f04d4 307 int i=1;
Kovalev_D 23:12e6183f04d4 308 unsigned int temp,CRC;
Kovalev_D 23:12e6183f04d4 309
Kovalev_D 23:12e6183f04d4 310
Kovalev_D 23:12e6183f04d4 311 temp=1;
Kovalev_D 23:12e6183f04d4 312 CRC=0;
Kovalev_D 23:12e6183f04d4 313
Kovalev_D 23:12e6183f04d4 314
Kovalev_D 23:12e6183f04d4 315 for(;i<Count-2;i++)
Kovalev_D 23:12e6183f04d4 316 {
Kovalev_D 23:12e6183f04d4 317 CRC+=c[i];
Kovalev_D 23:12e6183f04d4 318 }
Kovalev_D 23:12e6183f04d4 319
Kovalev_D 23:12e6183f04d4 320 if(c[Count-2]!=((CRC>>8)&0xFF))
Kovalev_D 23:12e6183f04d4 321 {
Kovalev_D 23:12e6183f04d4 322 temp=0;
Kovalev_D 23:12e6183f04d4 323 Main.RsErrLine = (Main.RsErrLine)&=0x2;
Kovalev_D 23:12e6183f04d4 324 }
Kovalev_D 23:12e6183f04d4 325
Kovalev_D 23:12e6183f04d4 326 if(c[Count-1]!=((CRC>>0)&0xFF))
Kovalev_D 23:12e6183f04d4 327 {
Kovalev_D 23:12e6183f04d4 328 temp=0;
Kovalev_D 23:12e6183f04d4 329 // Main.RsErrLine= (Main.RsErrLine)=0x2;
Kovalev_D 23:12e6183f04d4 330 }
Kovalev_D 23:12e6183f04d4 331
Kovalev_D 23:12e6183f04d4 332 c[Count-2]=(CRC>>8)&0xFF;
Kovalev_D 23:12e6183f04d4 333 c[Count-1]=(CRC>>0)&0xFF;
Kovalev_D 23:12e6183f04d4 334
Kovalev_D 23:12e6183f04d4 335
Kovalev_D 23:12e6183f04d4 336
Kovalev_D 23:12e6183f04d4 337 return temp;
Kovalev_D 23:12e6183f04d4 338 }
Kovalev_D 23:12e6183f04d4 339
Kovalev_D 23:12e6183f04d4 340 int Getlengf(void)
Kovalev_D 23:12e6183f04d4 341 {
Kovalev_D 23:12e6183f04d4 342 unsigned int lengf=0;
Kovalev_D 23:12e6183f04d4 343 switch(Main.CMD_In)
Kovalev_D 23:12e6183f04d4 344 {
Kovalev_D 23:12e6183f04d4 345 case 0x99://maintainance
Kovalev_D 23:12e6183f04d4 346 lengf=6;
Kovalev_D 23:12e6183f04d4 347 CRC_N=8;
Kovalev_D 23:12e6183f04d4 348 break;
Kovalev_D 23:12e6183f04d4 349
Kovalev_D 23:12e6183f04d4 350 case 0x0A: //m_stymul
Kovalev_D 23:12e6183f04d4 351 lengf=8;
Kovalev_D 23:12e6183f04d4 352 break;
Kovalev_D 23:12e6183f04d4 353
Kovalev_D 23:12e6183f04d4 354 case 0xA5://DeviceMode
Kovalev_D 23:12e6183f04d4 355
Kovalev_D 23:12e6183f04d4 356 lengf=6;
Kovalev_D 23:12e6183f04d4 357 CRC_N=8;
Kovalev_D 23:12e6183f04d4 358 break;
Kovalev_D 23:12e6183f04d4 359
Kovalev_D 23:12e6183f04d4 360 case 0xDD://m_rate
Kovalev_D 23:12e6183f04d4 361
Kovalev_D 23:12e6183f04d4 362 lengf=6;
Kovalev_D 23:12e6183f04d4 363 CRC_N=44;
Kovalev_D 23:12e6183f04d4 364 break;
Kovalev_D 23:12e6183f04d4 365
Kovalev_D 23:12e6183f04d4 366 case 0xB0://DeviceMode
Kovalev_D 23:12e6183f04d4 367
Kovalev_D 23:12e6183f04d4 368 lengf=6;
Kovalev_D 23:12e6183f04d4 369 CRC_N=8;
Kovalev_D 23:12e6183f04d4 370 break;
Kovalev_D 23:12e6183f04d4 371
Kovalev_D 23:12e6183f04d4 372 case 0xD8://m_control
Kovalev_D 23:12e6183f04d4 373
Kovalev_D 23:12e6183f04d4 374 lengf=6;
Kovalev_D 23:12e6183f04d4 375 CRC_N=8;
Kovalev_D 23:12e6183f04d4 376 break;
Kovalev_D 23:12e6183f04d4 377
Kovalev_D 23:12e6183f04d4 378 case 0xD9://m_control
Kovalev_D 23:12e6183f04d4 379
Kovalev_D 23:12e6183f04d4 380 lengf=6;
Kovalev_D 23:12e6183f04d4 381 CRC_N=8;
Kovalev_D 23:12e6183f04d4 382 break;
Kovalev_D 23:12e6183f04d4 383 }
Kovalev_D 23:12e6183f04d4 384 return lengf;
Kovalev_D 23:12e6183f04d4 385 }
Kovalev_D 23:12e6183f04d4 386
Kovalev_D 23:12e6183f04d4 387 void Read_CMD(void)
Kovalev_D 23:12e6183f04d4 388 {
Kovalev_D 23:12e6183f04d4 389 Main.SOC_Out=0xDD;
Kovalev_D 23:12e6183f04d4 390 Main.RsErrLine = (Main.RsErrLine)& 0xffff;
Kovalev_D 23:12e6183f04d4 391
Kovalev_D 23:12e6183f04d4 392
Kovalev_D 23:12e6183f04d4 393 CountBuFFIn=ReadChekCon(BuffTemp);
Kovalev_D 23:12e6183f04d4 394 if(CountBuFFIn==1)
Kovalev_D 23:12e6183f04d4 395 {
Kovalev_D 23:12e6183f04d4 396 if (BuffTemp[0] != SOC_In)
Kovalev_D 23:12e6183f04d4 397 {
Kovalev_D 23:12e6183f04d4 398 ReadCon(BuffTemp);
Kovalev_D 23:12e6183f04d4 399 Main.RsErrLine += 0x100;//WriteCon("\n\r ...Error.... ");
Kovalev_D 23:12e6183f04d4 400 BuffTemp[99]=Main.RsErrLine;
Kovalev_D 23:12e6183f04d4 401 }
Kovalev_D 23:12e6183f04d4 402 }
Kovalev_D 23:12e6183f04d4 403 else if(CountBuFFIn==2)
Kovalev_D 23:12e6183f04d4 404 {
Kovalev_D 23:12e6183f04d4 405 if (BuffTemp[1] != Main.My_Addres)
Kovalev_D 23:12e6183f04d4 406 {
Kovalev_D 23:12e6183f04d4 407 ReadCon(BuffTemp);
Kovalev_D 23:12e6183f04d4 408 Main.RsErrLine += 0x1;//WriteCon("\n\r ...Error_ADDRES.... ");
Kovalev_D 23:12e6183f04d4 409 }
Kovalev_D 23:12e6183f04d4 410 }
Kovalev_D 23:12e6183f04d4 411 else if(CountBuFFIn==3)
Kovalev_D 23:12e6183f04d4 412 {
Kovalev_D 23:12e6183f04d4 413 Main.CMD_In=BuffTemp[2];
Kovalev_D 23:12e6183f04d4 414 N=Getlengf();
Kovalev_D 23:12e6183f04d4 415 }
Kovalev_D 23:12e6183f04d4 416
Kovalev_D 23:12e6183f04d4 417 else if(CountBuFFIn==4 && N==6)
Kovalev_D 23:12e6183f04d4 418 {
Kovalev_D 23:12e6183f04d4 419 Param1=BuffTemp[3];
Kovalev_D 23:12e6183f04d4 420 }
Kovalev_D 23:12e6183f04d4 421 else if((CountBuFFIn==5)&&(N==7))
Kovalev_D 23:12e6183f04d4 422 {
Kovalev_D 23:12e6183f04d4 423 //LoopOn
Kovalev_D 23:12e6183f04d4 424 Param1=BuffTemp[3];
Kovalev_D 23:12e6183f04d4 425 Param2=BuffTemp[4];
Kovalev_D 23:12e6183f04d4 426
Kovalev_D 23:12e6183f04d4 427 }
Kovalev_D 23:12e6183f04d4 428 else if((CountBuFFIn==6)&&(N==8))
Kovalev_D 23:12e6183f04d4 429 {
Kovalev_D 23:12e6183f04d4 430 Param1=BuffTemp[3];
Kovalev_D 23:12e6183f04d4 431 Param2=BuffTemp[4];
Kovalev_D 23:12e6183f04d4 432 Param3=BuffTemp[5];
Kovalev_D 23:12e6183f04d4 433 }
Kovalev_D 23:12e6183f04d4 434 else if(CountBuFFIn > (N-1))
Kovalev_D 23:12e6183f04d4 435 {
Kovalev_D 23:12e6183f04d4 436 ReadCon(BuffTemp);
Kovalev_D 23:12e6183f04d4 437 if(Check(BuffTemp, CountBuFFIn))
Kovalev_D 23:12e6183f04d4 438 {
Kovalev_D 23:12e6183f04d4 439 switch(Main.CMD_In)
Kovalev_D 23:12e6183f04d4 440 {
Kovalev_D 23:12e6183f04d4 441 case CMD_MAINT:
Kovalev_D 23:12e6183f04d4 442 CMD_Maintenance();
Kovalev_D 23:12e6183f04d4 443 break;
Kovalev_D 23:12e6183f04d4 444 case 0xD8:
Kovalev_D 23:12e6183f04d4 445 CMD_M_Control_D8();
Kovalev_D 23:12e6183f04d4 446 case 0xD9:
Kovalev_D 23:12e6183f04d4 447 CMD_M_Control_D9();
Kovalev_D 23:12e6183f04d4 448 break;
Kovalev_D 23:12e6183f04d4 449 case 0x0A:
Kovalev_D 23:12e6183f04d4 450 CMD_M_Stymul(Param1,Param2,Param3);
Kovalev_D 23:12e6183f04d4 451 break;
Kovalev_D 23:12e6183f04d4 452 case 0xDD:
Kovalev_D 23:12e6183f04d4 453 Rate_Flag=1;
Kovalev_D 23:12e6183f04d4 454 break;
Kovalev_D 23:12e6183f04d4 455 Main.RsErrLine = 0;
Kovalev_D 23:12e6183f04d4 456 }
Kovalev_D 23:12e6183f04d4 457
Kovalev_D 23:12e6183f04d4 458 }
Kovalev_D 23:12e6183f04d4 459 }
Kovalev_D 23:12e6183f04d4 460 }
Kovalev_D 23:12e6183f04d4 461