Changes to be made for ATS_Fault logic and ACS_State
Dependencies: FreescaleIAP mbed-rtos mbed
Fork of Japan_BAE_sensorworking_interrupr_reoccuring_copy by
TCTM.cpp@15:3239c6391ffa, 2016-04-20 (annotated)
- Committer:
- Bragadeesh153
- Date:
- Wed Apr 20 17:47:05 2016 +0000
- Revision:
- 15:3239c6391ffa
- Parent:
- 14:a9588f443f1a
Upated commissioning.. Changes to be made in ACS_MAIN logic and checking the faults of ATS
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sakthipriya | 0:7b4c00e3912f | 1 | #include "mbed.h" |
sakthipriya | 0:7b4c00e3912f | 2 | #include "TCTM.h" |
sakthipriya | 3:07e15677a75c | 3 | #include "crc.h" |
sakthipriya | 4:39a4ae8c7ecd | 4 | #include "EPS.h" |
sakthipriya | 5:bb592f3185cc | 5 | #include "pin_config.h" |
sakthipriya | 5:bb592f3185cc | 6 | #include "FreescaleIAP.h" |
sakthipriya | 6:036d08b62785 | 7 | #include "inttypes.h" |
sakthipriya | 6:036d08b62785 | 8 | #include "iostream" |
sakthipriya | 6:036d08b62785 | 9 | #include "stdint.h" |
sakthipriya | 6:036d08b62785 | 10 | #include "cassert" |
lakshya | 10:f93407b97750 | 11 | #include"math.h" |
lakshya | 10:f93407b97750 | 12 | |
lakshya | 11:1fdb94ae6563 | 13 | /*define the pins for digital out*/ |
sakthipriya | 0:7b4c00e3912f | 14 | |
sakthipriya | 9:194afacf7449 | 15 | extern DigitalOut ATS1_SW_ENABLE; // enable of att sens2 switch |
sakthipriya | 9:194afacf7449 | 16 | extern DigitalOut ATS2_SW_ENABLE; // enable of att sens switch |
sakthipriya | 5:bb592f3185cc | 17 | |
Bragadeesh153 | 13:fb7facaf308b | 18 | extern DigitalOut TRXY_SW; //TR XY Switch if any TR_SW error arises then it is same as TR_SW_EN |
sakthipriya | 5:bb592f3185cc | 19 | extern DigitalOut TRZ_SW; //TR Z Switch |
sakthipriya | 5:bb592f3185cc | 20 | extern DigitalOut CDMS_RESET; // CDMS RESET |
sakthipriya | 5:bb592f3185cc | 21 | extern DigitalOut BCN_SW; //Beacon switch |
Bragadeesh153 | 15:3239c6391ffa | 22 | extern uint8_t ACS_ATS_STATUS; |
lakshya | 10:f93407b97750 | 23 | extern uint8_t BCN_TX_STATUS; |
lakshya | 10:f93407b97750 | 24 | extern uint8_t BCN_FEN; |
Bragadeesh153 | 15:3239c6391ffa | 25 | extern AnalogIn CurrentInput; |
Bragadeesh153 | 15:3239c6391ffa | 26 | |
sakthipriya | 4:39a4ae8c7ecd | 27 | extern BAE_HK_actual actual_data; |
sakthipriya | 4:39a4ae8c7ecd | 28 | extern BAE_HK_min_max bae_HK_minmax; |
sakthipriya | 4:39a4ae8c7ecd | 29 | extern uint32_t BAE_STATUS; |
sakthipriya | 5:bb592f3185cc | 30 | extern float data[6]; |
sakthipriya | 5:bb592f3185cc | 31 | extern float moment[3]; |
lakshya | 10:f93407b97750 | 32 | extern uint8_t ACS_STATE; |
lakshya | 10:f93407b97750 | 33 | extern DigitalOut EN_BTRY_HT; |
lakshya | 10:f93407b97750 | 34 | extern DigitalOut phase_TR_x; |
lakshya | 10:f93407b97750 | 35 | extern DigitalOut phase_TR_y; |
lakshya | 10:f93407b97750 | 36 | extern DigitalOut phase_TR_z; |
lakshya | 10:f93407b97750 | 37 | extern BAE_HK_quant quant_data; |
Bragadeesh153 | 13:fb7facaf308b | 38 | //extern DigitalOut TRXY_SW; |
lakshya | 11:1fdb94ae6563 | 39 | //extern DigitalOut TRZ_SW_EN; //same as TRZ_SW |
lakshya | 11:1fdb94ae6563 | 40 | extern uint32_t BAE_ENABLE; |
lakshya | 11:1fdb94ae6563 | 41 | //extern DigitalOut ACS_ACQ_DATA_ENABLE; |
lakshya | 11:1fdb94ae6563 | 42 | |
lakshya | 11:1fdb94ae6563 | 43 | /*given a default value as of now shuld read value from flash and increment it write it back very time it starts(bae)*/ |
lakshya | 11:1fdb94ae6563 | 44 | extern uint8_t BAE_RESET_COUNTER=0; |
lakshya | 11:1fdb94ae6563 | 45 | |
lakshya | 14:a9588f443f1a | 46 | //extern uint8_t BCN_FAIL_COUNT; |
lakshya | 11:1fdb94ae6563 | 47 | |
Bragadeesh153 | 13:fb7facaf308b | 48 | extern PwmOut PWM1; //x //Functions used to generate PWM signal |
lakshya | 11:1fdb94ae6563 | 49 | extern PwmOut PWM2; //y |
lakshya | 11:1fdb94ae6563 | 50 | extern PwmOut PWM3; //z //PWM output comes from pins p6 |
lakshya | 11:1fdb94ae6563 | 51 | |
lakshya | 11:1fdb94ae6563 | 52 | extern void F_ACS(); |
lakshya | 11:1fdb94ae6563 | 53 | extern void F_BCN(); |
lakshya | 11:1fdb94ae6563 | 54 | //extern void FCTN_ACS_GENPWM_MAIN(); |
lakshya | 11:1fdb94ae6563 | 55 | extern void F_EPS(); |
lakshya | 11:1fdb94ae6563 | 56 | extern void FCTN_ACS_GENPWM_MAIN(float Moment[3]); |
Bragadeesh153 | 13:fb7facaf308b | 57 | extern void FCTN_ACS_INIT(); |
lakshya | 11:1fdb94ae6563 | 58 | |
sakthipriya | 5:bb592f3185cc | 59 | |
sakthipriya | 5:bb592f3185cc | 60 | extern void FCTN_ATS_DATA_ACQ(); |
sakthipriya | 5:bb592f3185cc | 61 | extern void FCTN_ACS_CNTRLALGO(float*,float*); |
Bragadeesh153 | 13:fb7facaf308b | 62 | uint8_t telemetry[135]; |
lakshya | 11:1fdb94ae6563 | 63 | |
lakshya | 11:1fdb94ae6563 | 64 | void FCTN_CONVERT_UINT (uint8_t input[2], float* output) |
lakshya | 11:1fdb94ae6563 | 65 | { |
lakshya | 11:1fdb94ae6563 | 66 | |
lakshya | 11:1fdb94ae6563 | 67 | *output = (float) input[1]; |
lakshya | 11:1fdb94ae6563 | 68 | *output = *output/100.0; //input[0] integer part |
lakshya | 11:1fdb94ae6563 | 69 | *output = *output + (float) input[0]; //input[1] decimal part correct to two decimal places |
lakshya | 11:1fdb94ae6563 | 70 | } |
lakshya | 11:1fdb94ae6563 | 71 | |
lakshya | 10:f93407b97750 | 72 | float angle(float x,float y,float z) |
lakshya | 10:f93407b97750 | 73 | { |
lakshya | 10:f93407b97750 | 74 | float mag_total=sqrt(x*x + y*y + z*z); |
lakshya | 10:f93407b97750 | 75 | float cos_z = z/mag_total; |
lakshya | 10:f93407b97750 | 76 | float theta_z = acosf(cos_z); |
Bragadeesh153 | 13:fb7facaf308b | 77 | |
lakshya | 10:f93407b97750 | 78 | return theta_z; |
lakshya | 10:f93407b97750 | 79 | //printf("/n cos_zz= %f /t theta_z= %f /n",cos_z,theta_z); |
lakshya | 10:f93407b97750 | 80 | } |
lakshya | 10:f93407b97750 | 81 | |
Bragadeesh153 | 13:fb7facaf308b | 82 | //uint8_t tm1[134]; |
Bragadeesh153 | 13:fb7facaf308b | 83 | |
Bragadeesh153 | 13:fb7facaf308b | 84 | void FCTN_BAE_TM_TC (uint8_t* tc) |
sakthipriya | 0:7b4c00e3912f | 85 | |
sakthipriya | 3:07e15677a75c | 86 | { |
Bragadeesh153 | 13:fb7facaf308b | 87 | // tm1[0] = 1; |
sakthipriya | 3:07e15677a75c | 88 | uint8_t service_type=(tc[2]&0xF0); |
Bragadeesh153 | 13:fb7facaf308b | 89 | |
sakthipriya | 3:07e15677a75c | 90 | uint16_t crc16; |
Bragadeesh153 | 13:fb7facaf308b | 91 | |
Bragadeesh153 | 13:fb7facaf308b | 92 | |
sakthipriya | 3:07e15677a75c | 93 | switch(service_type) |
sakthipriya | 3:07e15677a75c | 94 | { |
sakthipriya | 3:07e15677a75c | 95 | case 0x60: |
sakthipriya | 3:07e15677a75c | 96 | { |
sakthipriya | 3:07e15677a75c | 97 | printf("Memory Management Service\r\n"); |
sakthipriya | 3:07e15677a75c | 98 | uint8_t service_subtype=(tc[2]&0x0F); |
Bragadeesh153 | 13:fb7facaf308b | 99 | |
sakthipriya | 3:07e15677a75c | 100 | switch(service_subtype) |
sakthipriya | 3:07e15677a75c | 101 | { |
sakthipriya | 3:07e15677a75c | 102 | case 0x01: |
sakthipriya | 3:07e15677a75c | 103 | { |
sakthipriya | 3:07e15677a75c | 104 | printf("Read from Flash\r\n"); |
Bragadeesh153 | 13:fb7facaf308b | 105 | break; |
sakthipriya | 3:07e15677a75c | 106 | } |
sakthipriya | 3:07e15677a75c | 107 | case 0x02: |
sakthipriya | 3:07e15677a75c | 108 | { |
Bragadeesh153 | 13:fb7facaf308b | 109 | uint16_t MID = ((uint16_t)tc[3] << 8) | tc[4]; |
Bragadeesh153 | 13:fb7facaf308b | 110 | switch(MID) |
Bragadeesh153 | 13:fb7facaf308b | 111 | { |
Bragadeesh153 | 13:fb7facaf308b | 112 | |
lakshya | 10:f93407b97750 | 113 | case 0x0001: |
Bragadeesh153 | 13:fb7facaf308b | 114 | { |
Bragadeesh153 | 13:fb7facaf308b | 115 | printf("Read from RAM\r\n"); |
Bragadeesh153 | 13:fb7facaf308b | 116 | |
Bragadeesh153 | 13:fb7facaf308b | 117 | /*taking some varible till we find some thing more useful*/ |
Bragadeesh153 | 13:fb7facaf308b | 118 | //uint8_t ref_val=0x01; |
Bragadeesh153 | 13:fb7facaf308b | 119 | telemetry[0] = 1; |
Bragadeesh153 | 13:fb7facaf308b | 120 | telemetry[1] = tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 121 | telemetry[2] = ACK_CODE; |
Bragadeesh153 | 13:fb7facaf308b | 122 | /*random or with bcn_tx_sw_enable assuming it is 1 bit in length |
Bragadeesh153 | 13:fb7facaf308b | 123 | how to get that we dont know, now we just assume it to be so*/ |
Bragadeesh153 | 13:fb7facaf308b | 124 | telemetry[3] = (BCN_SW); |
Bragadeesh153 | 13:fb7facaf308b | 125 | telemetry[3] = telemetry[3]|(TRXY_SW<<1); |
Bragadeesh153 | 13:fb7facaf308b | 126 | telemetry[3] = telemetry[3]|(TRZ_SW<<2); |
Bragadeesh153 | 13:fb7facaf308b | 127 | telemetry[3] = telemetry[3]|(ATS1_SW_ENABLE<<3); |
Bragadeesh153 | 13:fb7facaf308b | 128 | telemetry[3] = telemetry[3]|(ATS2_SW_ENABLE<<4); |
Bragadeesh153 | 13:fb7facaf308b | 129 | |
Bragadeesh153 | 13:fb7facaf308b | 130 | if(BCN_TX_STATUS==2) |
Bragadeesh153 | 13:fb7facaf308b | 131 | telemetry[3] = telemetry[3]|0x20; |
Bragadeesh153 | 13:fb7facaf308b | 132 | else |
Bragadeesh153 | 13:fb7facaf308b | 133 | telemetry[3] = telemetry[3] & 0xDF; |
Bragadeesh153 | 13:fb7facaf308b | 134 | |
Bragadeesh153 | 13:fb7facaf308b | 135 | telemetry[3] = telemetry[3]|(BCN_FEN<<6); |
Bragadeesh153 | 13:fb7facaf308b | 136 | uint8_t mask_val=BAE_ENABLE & 0x00000008; |
Bragadeesh153 | 13:fb7facaf308b | 137 | /*can be a problem see if any error occurs*/ |
Bragadeesh153 | 13:fb7facaf308b | 138 | telemetry[3] = telemetry[3]|(mask_val<<7); |
Bragadeesh153 | 13:fb7facaf308b | 139 | |
Bragadeesh153 | 13:fb7facaf308b | 140 | /*not included in the code yet*/ |
Bragadeesh153 | 13:fb7facaf308b | 141 | telemetry[4] = BAE_RESET_COUNTER; |
Bragadeesh153 | 13:fb7facaf308b | 142 | telemetry[5] = ACS_STATE; |
Bragadeesh153 | 13:fb7facaf308b | 143 | telemetry[5] = telemetry[5]|(EN_BTRY_HT<<3); |
Bragadeesh153 | 13:fb7facaf308b | 144 | telemetry[5] = telemetry[5]|(phase_TR_x<<4); |
Bragadeesh153 | 13:fb7facaf308b | 145 | telemetry[5] = telemetry[5]|(phase_TR_y<<5); |
Bragadeesh153 | 13:fb7facaf308b | 146 | telemetry[5] = telemetry[5]|(phase_TR_z<<6); |
Bragadeesh153 | 13:fb7facaf308b | 147 | /*spare to be fixed*/ |
Bragadeesh153 | 13:fb7facaf308b | 148 | //telemetry[5] = telemetry[5]|(Spare))<<7); |
Bragadeesh153 | 13:fb7facaf308b | 149 | /**/ |
Bragadeesh153 | 13:fb7facaf308b | 150 | uint8_t soc_powerlevel_2=50; |
Bragadeesh153 | 13:fb7facaf308b | 151 | uint8_t soc_powerlevel_3=65; |
Bragadeesh153 | 13:fb7facaf308b | 152 | |
Bragadeesh153 | 13:fb7facaf308b | 153 | telemetry[6] = soc_powerlevel_2; |
Bragadeesh153 | 13:fb7facaf308b | 154 | telemetry[7] = soc_powerlevel_3; |
lakshya | 10:f93407b97750 | 155 | |
Bragadeesh153 | 13:fb7facaf308b | 156 | /*to be fixed*/ |
Bragadeesh153 | 13:fb7facaf308b | 157 | telemetry[8] = 0; |
Bragadeesh153 | 13:fb7facaf308b | 158 | telemetry[9] = 0; |
Bragadeesh153 | 13:fb7facaf308b | 159 | telemetry[10] = 0; |
Bragadeesh153 | 13:fb7facaf308b | 160 | telemetry[11] = 0; |
Bragadeesh153 | 13:fb7facaf308b | 161 | //telemetry[8] = Torque Rod X Offset; |
Bragadeesh153 | 13:fb7facaf308b | 162 | //telemetry[9] = Torque Rod Y Offset; |
Bragadeesh153 | 13:fb7facaf308b | 163 | //telemetry[10] = Torque Rod Z Offset; |
Bragadeesh153 | 13:fb7facaf308b | 164 | //telemetry[11] = ACS_DEMAG_TIME_DELAY; |
Bragadeesh153 | 13:fb7facaf308b | 165 | telemetry[12] = (BAE_STATUS>>24) & 0xFF; |
Bragadeesh153 | 13:fb7facaf308b | 166 | telemetry[13] = (BAE_STATUS>>16) & 0xFF; |
Bragadeesh153 | 13:fb7facaf308b | 167 | telemetry[14] = (BAE_STATUS>>8) & 0xFF; |
Bragadeesh153 | 13:fb7facaf308b | 168 | telemetry[15] = BAE_STATUS & 0xFF; |
Bragadeesh153 | 13:fb7facaf308b | 169 | |
Bragadeesh153 | 13:fb7facaf308b | 170 | /*to be fixed*/ |
lakshya | 14:a9588f443f1a | 171 | //telemetry[16] = BCN_FAIL_COUNT; |
Bragadeesh153 | 13:fb7facaf308b | 172 | telemetry[17] = actual_data.power_mode; |
Bragadeesh153 | 13:fb7facaf308b | 173 | /*to be fixed*/ |
Bragadeesh153 | 13:fb7facaf308b | 174 | uint16_t P_BAE_I2CRX_COUNTER=0; |
Bragadeesh153 | 13:fb7facaf308b | 175 | uint16_t P_ACS_MAIN_COUNTER=0; |
Bragadeesh153 | 13:fb7facaf308b | 176 | uint16_t P_BCN_TX_MAIN_COUNTER=0; |
Bragadeesh153 | 13:fb7facaf308b | 177 | uint16_t P_EPS_MAIN_COUNTER=0; |
Bragadeesh153 | 13:fb7facaf308b | 178 | |
Bragadeesh153 | 13:fb7facaf308b | 179 | telemetry[18] = P_BAE_I2CRX_COUNTER>>8; |
Bragadeesh153 | 13:fb7facaf308b | 180 | telemetry[19] = P_BAE_I2CRX_COUNTER; |
Bragadeesh153 | 13:fb7facaf308b | 181 | telemetry[20] = P_ACS_MAIN_COUNTER>>8; |
Bragadeesh153 | 13:fb7facaf308b | 182 | telemetry[21] = P_ACS_MAIN_COUNTER; |
Bragadeesh153 | 13:fb7facaf308b | 183 | telemetry[22] = P_BCN_TX_MAIN_COUNTER>>8; |
Bragadeesh153 | 13:fb7facaf308b | 184 | telemetry[23] = P_BCN_TX_MAIN_COUNTER; |
Bragadeesh153 | 13:fb7facaf308b | 185 | telemetry[24] = P_EPS_MAIN_COUNTER>>8; |
Bragadeesh153 | 13:fb7facaf308b | 186 | telemetry[25] = P_EPS_MAIN_COUNTER; |
Bragadeesh153 | 13:fb7facaf308b | 187 | |
Bragadeesh153 | 13:fb7facaf308b | 188 | for(int i=0; i<3; i++) |
Bragadeesh153 | 13:fb7facaf308b | 189 | FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[i],&telemetry[26+ (i*4)]); |
Bragadeesh153 | 13:fb7facaf308b | 190 | for(int i=0; i<3; i++) |
Bragadeesh153 | 13:fb7facaf308b | 191 | FCTN_CONVERT_FLOAT(actual_data.AngularSpeed_actual[i],&telemetry[38+(i*4)]); |
Bragadeesh153 | 13:fb7facaf308b | 192 | |
Bragadeesh153 | 13:fb7facaf308b | 193 | //FAULT_FLAG(); |
Bragadeesh153 | 13:fb7facaf308b | 194 | telemetry[50] = actual_data.faultIr_status; |
Bragadeesh153 | 13:fb7facaf308b | 195 | telemetry[51] = actual_data.faultPoll_status; |
Bragadeesh153 | 13:fb7facaf308b | 196 | //Bdot Rotation Speed of Command telemetry[52-53] |
Bragadeesh153 | 13:fb7facaf308b | 197 | //Bdot Output Current telemetry[54] |
Bragadeesh153 | 13:fb7facaf308b | 198 | //float l_pmw1 = (PWM1); |
Bragadeesh153 | 13:fb7facaf308b | 199 | //float l_pmw2 = PWM2; |
Bragadeesh153 | 13:fb7facaf308b | 200 | //float l_pmw3 = PWM3; |
Bragadeesh153 | 13:fb7facaf308b | 201 | |
lakshya | 11:1fdb94ae6563 | 202 | /*__________________________________________________________________*/ |
Bragadeesh153 | 13:fb7facaf308b | 203 | |
lakshya | 11:1fdb94ae6563 | 204 | /*change and check if changing it to PWM1 causes problem*/ |
Bragadeesh153 | 13:fb7facaf308b | 205 | |
lakshya | 11:1fdb94ae6563 | 206 | /*___________________________________________________________________*/ |
Bragadeesh153 | 13:fb7facaf308b | 207 | |
lakshya | 11:1fdb94ae6563 | 208 | float PWM_measured[3]; |
Bragadeesh153 | 13:fb7facaf308b | 209 | |
Bragadeesh153 | 13:fb7facaf308b | 210 | PWM_measured[0] = PWM1.read(); |
Bragadeesh153 | 13:fb7facaf308b | 211 | PWM_measured[1] = PWM2.read(); |
Bragadeesh153 | 13:fb7facaf308b | 212 | PWM_measured[2] = PWM3.read(); |
Bragadeesh153 | 13:fb7facaf308b | 213 | |
Bragadeesh153 | 13:fb7facaf308b | 214 | FCTN_CONVERT_FLOAT(PWM_measured[0], &telemetry[55]); |
Bragadeesh153 | 13:fb7facaf308b | 215 | FCTN_CONVERT_FLOAT(PWM_measured[1], &telemetry[59]); |
Bragadeesh153 | 13:fb7facaf308b | 216 | FCTN_CONVERT_FLOAT(PWM_measured[2], &telemetry[63]); |
lakshya | 10:f93407b97750 | 217 | float attitude_ang = angle(actual_data.Bvalue_actual[0],actual_data.Bvalue_actual[1],actual_data.Bvalue_actual[2]); |
Bragadeesh153 | 13:fb7facaf308b | 218 | FCTN_CONVERT_FLOAT(attitude_ang, &telemetry[67]); |
lakshya | 10:f93407b97750 | 219 | |
lakshya | 10:f93407b97750 | 220 | for (int i=0; i<16; i++) |
Bragadeesh153 | 13:fb7facaf308b | 221 | telemetry[68+i] = quant_data.voltage_quant[i]; |
lakshya | 10:f93407b97750 | 222 | for (int i=0; i<12; i++) |
Bragadeesh153 | 13:fb7facaf308b | 223 | telemetry[84+i] = quant_data.current_quant[i]; |
Bragadeesh153 | 13:fb7facaf308b | 224 | //telemetry[96] |
Bragadeesh153 | 13:fb7facaf308b | 225 | //telemetry[97] |
Bragadeesh153 | 13:fb7facaf308b | 226 | //telemetry[98] |
Bragadeesh153 | 13:fb7facaf308b | 227 | //telemetry[99] |
Bragadeesh153 | 13:fb7facaf308b | 228 | telemetry[100] = quant_data.Batt_voltage_quant; |
Bragadeesh153 | 13:fb7facaf308b | 229 | telemetry[101] = quant_data.BAE_temp_quant; |
Bragadeesh153 | 13:fb7facaf308b | 230 | telemetry[102] = quant_data.Batt_gauge_quant[1]; |
Bragadeesh153 | 13:fb7facaf308b | 231 | telemetry[103] = quant_data.Batt_temp_quant[0]; |
Bragadeesh153 | 13:fb7facaf308b | 232 | telemetry[104] = quant_data.Batt_temp_quant[1]; |
Bragadeesh153 | 13:fb7facaf308b | 233 | |
Bragadeesh153 | 13:fb7facaf308b | 234 | //telemetry[105] = beacon temperature; |
Bragadeesh153 | 13:fb7facaf308b | 235 | |
lakshya | 10:f93407b97750 | 236 | for (int i=105; i<132;i++) |
sakthipriya | 8:82250e41da81 | 237 | { |
Bragadeesh153 | 13:fb7facaf308b | 238 | telemetry[i] = 0x00; |
sakthipriya | 5:bb592f3185cc | 239 | } |
Bragadeesh153 | 13:fb7facaf308b | 240 | crc16 = CRC::crc16_gen(telemetry,132); |
Bragadeesh153 | 13:fb7facaf308b | 241 | telemetry[132] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 242 | telemetry[133] = (uint8_t)(crc16&0x00FF); |
Bragadeesh153 | 13:fb7facaf308b | 243 | |
Bragadeesh153 | 13:fb7facaf308b | 244 | break; |
Bragadeesh153 | 13:fb7facaf308b | 245 | } |
Bragadeesh153 | 13:fb7facaf308b | 246 | case 0x0002: |
Bragadeesh153 | 13:fb7facaf308b | 247 | { |
Bragadeesh153 | 13:fb7facaf308b | 248 | telemetry[0] = 0x60; |
Bragadeesh153 | 13:fb7facaf308b | 249 | telemetry[1] = tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 250 | telemetry[2] = ACK_CODE; |
Bragadeesh153 | 13:fb7facaf308b | 251 | |
Bragadeesh153 | 13:fb7facaf308b | 252 | for(int i;i<16;i++) |
Bragadeesh153 | 13:fb7facaf308b | 253 | telemetry[i+3] = bae_HK_minmax.voltage_max[i]; |
Bragadeesh153 | 13:fb7facaf308b | 254 | |
Bragadeesh153 | 13:fb7facaf308b | 255 | for(int i;i<12;i++) |
Bragadeesh153 | 13:fb7facaf308b | 256 | telemetry[i+18] = bae_HK_minmax.current_max[i]; |
Bragadeesh153 | 13:fb7facaf308b | 257 | |
Bragadeesh153 | 13:fb7facaf308b | 258 | telemetry[29] = bae_HK_minmax.Batt_voltage_max;; |
Bragadeesh153 | 13:fb7facaf308b | 259 | telemetry[30] = bae_HK_minmax.BAE_temp_max; |
Bragadeesh153 | 13:fb7facaf308b | 260 | |
Bragadeesh153 | 13:fb7facaf308b | 261 | /*battery soc*/ |
Bragadeesh153 | 13:fb7facaf308b | 262 | //telemetry[31] = BAE_HK_min_max bae_HK_minmax.voltage_max; |
Bragadeesh153 | 13:fb7facaf308b | 263 | |
Bragadeesh153 | 13:fb7facaf308b | 264 | telemetry[32] = bae_HK_minmax.Batt_temp_max[0]; |
Bragadeesh153 | 13:fb7facaf308b | 265 | telemetry[33] = bae_HK_minmax.Batt_temp_max[1]; |
Bragadeesh153 | 13:fb7facaf308b | 266 | |
Bragadeesh153 | 13:fb7facaf308b | 267 | /*BCN temp not there*/ |
Bragadeesh153 | 13:fb7facaf308b | 268 | //telemetry[34] = BAE_HK_min_max bae_HK_minmax.; |
Bragadeesh153 | 13:fb7facaf308b | 269 | |
Bragadeesh153 | 13:fb7facaf308b | 270 | for(int i=0; i<3; i++) |
Bragadeesh153 | 13:fb7facaf308b | 271 | FCTN_CONVERT_FLOAT(bae_HK_minmax.Bvalue_max[i],&telemetry[35+(i*4)]); |
Bragadeesh153 | 13:fb7facaf308b | 272 | |
Bragadeesh153 | 13:fb7facaf308b | 273 | for(int i=0; i<3; i++) |
Bragadeesh153 | 13:fb7facaf308b | 274 | FCTN_CONVERT_FLOAT(bae_HK_minmax.AngularSpeed_max[i],&telemetry[47+(i*4)]); |
Bragadeesh153 | 13:fb7facaf308b | 275 | |
Bragadeesh153 | 13:fb7facaf308b | 276 | /*min data*/ |
Bragadeesh153 | 13:fb7facaf308b | 277 | |
Bragadeesh153 | 13:fb7facaf308b | 278 | for(int i;i<16;i++) |
Bragadeesh153 | 13:fb7facaf308b | 279 | telemetry[i+59] = bae_HK_minmax.voltage_min[i]; |
Bragadeesh153 | 13:fb7facaf308b | 280 | |
Bragadeesh153 | 13:fb7facaf308b | 281 | for(int i;i<12;i++) |
Bragadeesh153 | 13:fb7facaf308b | 282 | telemetry[i+74] = bae_HK_minmax.current_min[i]; |
Bragadeesh153 | 13:fb7facaf308b | 283 | |
Bragadeesh153 | 13:fb7facaf308b | 284 | telemetry[86] = bae_HK_minmax.Batt_voltage_min; |
Bragadeesh153 | 13:fb7facaf308b | 285 | telemetry[87] = bae_HK_minmax.BAE_temp_min; |
Bragadeesh153 | 13:fb7facaf308b | 286 | |
Bragadeesh153 | 13:fb7facaf308b | 287 | /*battery soc*/ |
Bragadeesh153 | 13:fb7facaf308b | 288 | //telemetry[88] = BAE_HK_min_max bae_HK_minmax.voltage_max; |
Bragadeesh153 | 13:fb7facaf308b | 289 | |
Bragadeesh153 | 13:fb7facaf308b | 290 | telemetry[89] = bae_HK_minmax.Batt_temp_min[0]; |
Bragadeesh153 | 13:fb7facaf308b | 291 | telemetry[90] = bae_HK_minmax.Batt_temp_min[1]; |
Bragadeesh153 | 13:fb7facaf308b | 292 | //huhu// |
Bragadeesh153 | 13:fb7facaf308b | 293 | |
Bragadeesh153 | 13:fb7facaf308b | 294 | /*BCN temp not there*/ |
Bragadeesh153 | 13:fb7facaf308b | 295 | //telemetry[91] = BAE_HK_min_max bae_HK_minmax.; |
Bragadeesh153 | 13:fb7facaf308b | 296 | |
Bragadeesh153 | 13:fb7facaf308b | 297 | for(int i=0; i<3; i++) |
Bragadeesh153 | 13:fb7facaf308b | 298 | FCTN_CONVERT_FLOAT(bae_HK_minmax.Bvalue_min[i],&telemetry[91+(i*4)]); |
Bragadeesh153 | 13:fb7facaf308b | 299 | |
Bragadeesh153 | 13:fb7facaf308b | 300 | for(int i=0; i<3; i++) |
Bragadeesh153 | 13:fb7facaf308b | 301 | FCTN_CONVERT_FLOAT(bae_HK_minmax.AngularSpeed_min[i],&telemetry[103+(i*4)]); |
Bragadeesh153 | 13:fb7facaf308b | 302 | |
Bragadeesh153 | 13:fb7facaf308b | 303 | |
Bragadeesh153 | 13:fb7facaf308b | 304 | for (int i=115; i<132;i++) |
Bragadeesh153 | 13:fb7facaf308b | 305 | { |
Bragadeesh153 | 13:fb7facaf308b | 306 | telemetry[i] = 0x00; |
Bragadeesh153 | 13:fb7facaf308b | 307 | } |
Bragadeesh153 | 13:fb7facaf308b | 308 | crc16 = CRC::crc16_gen(telemetry,132); |
Bragadeesh153 | 13:fb7facaf308b | 309 | telemetry[132] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 310 | telemetry[133] = (uint8_t)(crc16&0x00FF); |
Bragadeesh153 | 13:fb7facaf308b | 311 | break; |
Bragadeesh153 | 13:fb7facaf308b | 312 | } |
Bragadeesh153 | 13:fb7facaf308b | 313 | } |
Bragadeesh153 | 13:fb7facaf308b | 314 | break; |
Bragadeesh153 | 13:fb7facaf308b | 315 | } |
sakthipriya | 3:07e15677a75c | 316 | case 0x05: |
sakthipriya | 3:07e15677a75c | 317 | { |
sakthipriya | 3:07e15677a75c | 318 | printf("Write on Flash\r\n"); |
Bragadeesh153 | 13:fb7facaf308b | 319 | break; |
sakthipriya | 3:07e15677a75c | 320 | } |
sakthipriya | 3:07e15677a75c | 321 | default: |
sakthipriya | 3:07e15677a75c | 322 | { |
sakthipriya | 3:07e15677a75c | 323 | printf("Invalid TC"); |
Bragadeesh153 | 13:fb7facaf308b | 324 | //ACK_L234_telemetry |
Bragadeesh153 | 13:fb7facaf308b | 325 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 326 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 327 | telemetry[2]=ACK_CODE; |
sakthipriya | 3:07e15677a75c | 328 | for(uint8_t i=3;i<11;i++) |
sakthipriya | 3:07e15677a75c | 329 | { |
Bragadeesh153 | 13:fb7facaf308b | 330 | telemetry[i]=0x00; |
sakthipriya | 0:7b4c00e3912f | 331 | } |
Bragadeesh153 | 13:fb7facaf308b | 332 | crc16 = CRC::crc16_gen(telemetry,11); |
Bragadeesh153 | 13:fb7facaf308b | 333 | telemetry[11] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 334 | telemetry[12] = (uint8_t)(crc16&0x00FF); |
sakthipriya | 3:07e15677a75c | 335 | for(uint8_t i=13;i<134;i++) |
sakthipriya | 3:07e15677a75c | 336 | { |
Bragadeesh153 | 13:fb7facaf308b | 337 | telemetry[i]=0x00; |
sakthipriya | 0:7b4c00e3912f | 338 | } |
Bragadeesh153 | 13:fb7facaf308b | 339 | break; |
sakthipriya | 3:07e15677a75c | 340 | } |
sakthipriya | 3:07e15677a75c | 341 | } |
Bragadeesh153 | 13:fb7facaf308b | 342 | break; |
sakthipriya | 0:7b4c00e3912f | 343 | } |
sakthipriya | 3:07e15677a75c | 344 | case 0x80: |
sakthipriya | 3:07e15677a75c | 345 | { |
Bragadeesh153 | 13:fb7facaf308b | 346 | //printf("Function Management Service\r\n"); |
sakthipriya | 3:07e15677a75c | 347 | uint8_t service_subtype=(tc[2]&0x0F); |
sakthipriya | 3:07e15677a75c | 348 | switch(service_subtype) |
sakthipriya | 3:07e15677a75c | 349 | { |
sakthipriya | 3:07e15677a75c | 350 | case 0x01: |
sakthipriya | 3:07e15677a75c | 351 | { |
sakthipriya | 3:07e15677a75c | 352 | printf("FMS Activated\r\n"); |
sakthipriya | 3:07e15677a75c | 353 | uint8_t pid=tc[3]; |
sakthipriya | 3:07e15677a75c | 354 | switch(pid) |
sakthipriya | 3:07e15677a75c | 355 | { |
sakthipriya | 5:bb592f3185cc | 356 | case 0xE0: |
sakthipriya | 3:07e15677a75c | 357 | { |
lakshya | 10:f93407b97750 | 358 | float B[3],W[3]; |
sakthipriya | 5:bb592f3185cc | 359 | printf("ACS_COMSN\r\n"); |
Bragadeesh153 | 13:fb7facaf308b | 360 | //ACK_L234_telemetry |
Bragadeesh153 | 13:fb7facaf308b | 361 | |
Bragadeesh153 | 13:fb7facaf308b | 362 | |
Bragadeesh153 | 15:3239c6391ffa | 363 | B[0]=(float)tc[4]; |
Bragadeesh153 | 15:3239c6391ffa | 364 | B[1]=(float)tc[5]; |
Bragadeesh153 | 15:3239c6391ffa | 365 | B[2] = 300; //constant value |
Bragadeesh153 | 15:3239c6391ffa | 366 | |
Bragadeesh153 | 15:3239c6391ffa | 367 | W[0]=(float)tc[6]; |
Bragadeesh153 | 15:3239c6391ffa | 368 | W[1]=(float)tc[7]; |
Bragadeesh153 | 15:3239c6391ffa | 369 | W[2] = 300; //constant value |
Bragadeesh153 | 13:fb7facaf308b | 370 | |
Bragadeesh153 | 13:fb7facaf308b | 371 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 372 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 373 | telemetry[2]=ACK_CODE; |
lakshya | 10:f93407b97750 | 374 | //FCTN_ATS_DATA_ACQ(); //get data |
Bragadeesh153 | 13:fb7facaf308b | 375 | printf("gyro values\n\r"); |
Bragadeesh153 | 13:fb7facaf308b | 376 | for(int i=0; i<3; i++) |
lakshya | 10:f93407b97750 | 377 | printf("%f\n\r",W[i]); |
sakthipriya | 5:bb592f3185cc | 378 | printf("mag values\n\r"); |
Bragadeesh153 | 13:fb7facaf308b | 379 | for(int i=0; i<3; i++) |
lakshya | 10:f93407b97750 | 380 | printf("%f\n\r",B[i]); |
Bragadeesh153 | 13:fb7facaf308b | 381 | /* FCTN_CONVERT_FLOAT(data[0],&telemetry[4]); //telemetry[4] - telemetry[7] |
Bragadeesh153 | 13:fb7facaf308b | 382 | FCTN_CONVERT_FLOAT(data[1],&telemetry[8]); //telemetry[8] - telemetry[11] |
Bragadeesh153 | 13:fb7facaf308b | 383 | FCTN_CONVERT_FLOAT(data[2],&telemetry[12]); //telemetry[12] - telemetry[15] |
Bragadeesh153 | 13:fb7facaf308b | 384 | FCTN_CONVERT_FLOAT(data[0],&telemetry[16]); //telemetry[16] - telemetry[19] |
Bragadeesh153 | 13:fb7facaf308b | 385 | FCTN_CONVERT_FLOAT(data[1],&telemetry[20]); //telemetry[20] - telemetry[23] |
Bragadeesh153 | 13:fb7facaf308b | 386 | FCTN_CONVERT_FLOAT(data[2],&telemetry[24]); //telemetry[24] - telemetry[27] |
sakthipriya | 5:bb592f3185cc | 387 | if((data[0]<8) && (data[1]<8) && (data[2] <8)) |
Bragadeesh153 | 13:fb7facaf308b | 388 | telemetry[28] = 1; // gyro values in correct range |
sakthipriya | 5:bb592f3185cc | 389 | else |
Bragadeesh153 | 13:fb7facaf308b | 390 | telemetry[28] = 0; |
sakthipriya | 5:bb592f3185cc | 391 | if ((data[3] > 20 ) && (data[4] >20) && (data[5]>20)&& (data[3] < 50 ) && (data[4] <50) && (data[5]<50)) |
Bragadeesh153 | 13:fb7facaf308b | 392 | telemetry[29] = 1; // mag values in correct range |
sakthipriya | 5:bb592f3185cc | 393 | else |
Bragadeesh153 | 13:fb7facaf308b | 394 | telemetry[29] = 0; |
Bragadeesh153 | 13:fb7facaf308b | 395 | */ |
Bragadeesh153 | 13:fb7facaf308b | 396 | // float B[3],W[3]; |
lakshya | 10:f93407b97750 | 397 | // B[0] = B0; |
Bragadeesh153 | 13:fb7facaf308b | 398 | // B[1] = B1; |
lakshya | 10:f93407b97750 | 399 | // B[2] = B2; |
lakshya | 10:f93407b97750 | 400 | // W[0] = W0; |
Bragadeesh153 | 13:fb7facaf308b | 401 | // W[1] = W1; |
Bragadeesh153 | 13:fb7facaf308b | 402 | // W[2] = W2; |
sakthipriya | 5:bb592f3185cc | 403 | // Control algo commissioning |
lakshya | 10:f93407b97750 | 404 | /* FCTN_ACS_CNTRLALGO(B,W); |
Bragadeesh153 | 13:fb7facaf308b | 405 | FCTN_CONVERT_FLOAT(moment[0],&telemetry[30]); //telemetry[30] - telemetry[33] |
Bragadeesh153 | 13:fb7facaf308b | 406 | FCTN_CONVERT_FLOAT(moment[1],&telemetry[34]); //telemetry[34] - telemetry[37] |
Bragadeesh153 | 13:fb7facaf308b | 407 | FCTN_CONVERT_FLOAT(moment[2],&telemetry[38]); //telemetry[38] - telemetry[41] |
sakthipriya | 5:bb592f3185cc | 408 | // to include commission TR as well |
sakthipriya | 5:bb592f3185cc | 409 | for(uint8_t i=42;i<132;i++) |
sakthipriya | 3:07e15677a75c | 410 | { |
Bragadeesh153 | 13:fb7facaf308b | 411 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 412 | } |
Bragadeesh153 | 13:fb7facaf308b | 413 | |
Bragadeesh153 | 13:fb7facaf308b | 414 | crc16 = CRC::crc16_gen(telemetry,132); |
Bragadeesh153 | 13:fb7facaf308b | 415 | telemetry[133] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 416 | telemetry[134] = (uint8_t)(crc16&0x00FF); |
Bragadeesh153 | 13:fb7facaf308b | 417 | break; |
Bragadeesh153 | 13:fb7facaf308b | 418 | */ |
Bragadeesh153 | 13:fb7facaf308b | 419 | |
lakshya | 10:f93407b97750 | 420 | // Control algo commissioning |
lakshya | 10:f93407b97750 | 421 | FCTN_ACS_CNTRLALGO(B,W); |
Bragadeesh153 | 13:fb7facaf308b | 422 | FCTN_CONVERT_FLOAT(moment[0],&telemetry[4]); //telemetry[4] - telemetry[7] |
Bragadeesh153 | 13:fb7facaf308b | 423 | FCTN_CONVERT_FLOAT(moment[1],&telemetry[8]); //telemetry[8] - telemetry[11] |
Bragadeesh153 | 13:fb7facaf308b | 424 | FCTN_CONVERT_FLOAT(moment[2],&telemetry[12]); //telemetry[12] - telemetry[15] |
lakshya | 10:f93407b97750 | 425 | // to include commission TR as well |
lakshya | 10:f93407b97750 | 426 | for(uint8_t i=16;i<132;i++) |
lakshya | 10:f93407b97750 | 427 | { |
Bragadeesh153 | 13:fb7facaf308b | 428 | telemetry[i]=0x00; |
lakshya | 10:f93407b97750 | 429 | } |
Bragadeesh153 | 13:fb7facaf308b | 430 | |
Bragadeesh153 | 13:fb7facaf308b | 431 | crc16 = CRC::crc16_gen(telemetry,132); |
Bragadeesh153 | 13:fb7facaf308b | 432 | telemetry[133] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 433 | telemetry[134] = (uint8_t)(crc16&0x00FF); |
Bragadeesh153 | 13:fb7facaf308b | 434 | break; |
sakthipriya | 3:07e15677a75c | 435 | } |
lakshya | 10:f93407b97750 | 436 | case 0xE1: |
sakthipriya | 3:07e15677a75c | 437 | { |
Bragadeesh153 | 15:3239c6391ffa | 438 | |
lakshya | 10:f93407b97750 | 439 | printf("HARDWARE_COMSN\r\n"); |
Bragadeesh153 | 13:fb7facaf308b | 440 | //ACK_L234_telemetry |
Bragadeesh153 | 13:fb7facaf308b | 441 | |
Bragadeesh153 | 15:3239c6391ffa | 442 | |
Bragadeesh153 | 15:3239c6391ffa | 443 | TRXY_SW = 1; |
Bragadeesh153 | 15:3239c6391ffa | 444 | TRZ_SW = 1; |
Bragadeesh153 | 15:3239c6391ffa | 445 | |
Bragadeesh153 | 15:3239c6391ffa | 446 | PWM1 = 0; |
Bragadeesh153 | 15:3239c6391ffa | 447 | PWM2 = 0; |
Bragadeesh153 | 15:3239c6391ffa | 448 | PWM3 = 0; |
Bragadeesh153 | 15:3239c6391ffa | 449 | |
Bragadeesh153 | 15:3239c6391ffa | 450 | wait_ms(60); //Demagnetising time delay for torquerod |
Bragadeesh153 | 13:fb7facaf308b | 451 | |
Bragadeesh153 | 13:fb7facaf308b | 452 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 453 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 454 | telemetry[2]=ACK_CODE; |
lakshya | 10:f93407b97750 | 455 | |
Bragadeesh153 | 15:3239c6391ffa | 456 | float PWM_tc[3]; |
Bragadeesh153 | 15:3239c6391ffa | 457 | |
Bragadeesh153 | 15:3239c6391ffa | 458 | PWM_tc[0] = (float) tc[4]; |
Bragadeesh153 | 15:3239c6391ffa | 459 | PWM_tc[1] = (float) tc[5]; |
Bragadeesh153 | 15:3239c6391ffa | 460 | PWM_tc[2] = (float) tc[6]; |
Bragadeesh153 | 15:3239c6391ffa | 461 | |
Bragadeesh153 | 15:3239c6391ffa | 462 | ATS2_SW_ENABLE = 1; |
Bragadeesh153 | 15:3239c6391ffa | 463 | ATS1_SW_ENABLE = 0; // making sure we switch off the other |
Bragadeesh153 | 15:3239c6391ffa | 464 | |
Bragadeesh153 | 15:3239c6391ffa | 465 | |
Bragadeesh153 | 15:3239c6391ffa | 466 | FCTN_ATS_DATA_ACQ(); |
Bragadeesh153 | 15:3239c6391ffa | 467 | |
Bragadeesh153 | 15:3239c6391ffa | 468 | |
Bragadeesh153 | 15:3239c6391ffa | 469 | FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[0], &telemetry[6]); |
Bragadeesh153 | 15:3239c6391ffa | 470 | FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[1], &telemetry[10]); |
Bragadeesh153 | 15:3239c6391ffa | 471 | FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[2], &telemetry[14]); |
Bragadeesh153 | 15:3239c6391ffa | 472 | |
Bragadeesh153 | 15:3239c6391ffa | 473 | FCTN_CONVERT_FLOAT(actual_data.AngularSpeed_actual[0], &telemetry[18]); |
Bragadeesh153 | 15:3239c6391ffa | 474 | FCTN_CONVERT_FLOAT(actual_data.AngularSpeed_actual[0], &telemetry[22]); |
Bragadeesh153 | 15:3239c6391ffa | 475 | FCTN_CONVERT_FLOAT(actual_data.AngularSpeed_actual[0], &telemetry[26]); |
Bragadeesh153 | 15:3239c6391ffa | 476 | |
Bragadeesh153 | 15:3239c6391ffa | 477 | ACS_ATS_STATUS = ACS_ATS_STATUS & 0xF0; |
Bragadeesh153 | 15:3239c6391ffa | 478 | ACS_ATS_STATUS = ACS_ATS_STATUS | 0x00; |
Bragadeesh153 | 15:3239c6391ffa | 479 | |
Bragadeesh153 | 15:3239c6391ffa | 480 | |
Bragadeesh153 | 15:3239c6391ffa | 481 | ATS1_SW_ENABLE = 1; |
Bragadeesh153 | 15:3239c6391ffa | 482 | ATS2_SW_ENABLE = 0; // making sure we switch off the other |
Bragadeesh153 | 15:3239c6391ffa | 483 | |
Bragadeesh153 | 15:3239c6391ffa | 484 | |
Bragadeesh153 | 15:3239c6391ffa | 485 | FCTN_ATS_DATA_ACQ(); |
Bragadeesh153 | 15:3239c6391ffa | 486 | |
Bragadeesh153 | 15:3239c6391ffa | 487 | |
Bragadeesh153 | 15:3239c6391ffa | 488 | FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[0], &telemetry[30]); |
Bragadeesh153 | 15:3239c6391ffa | 489 | FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[1], &telemetry[34]); |
Bragadeesh153 | 15:3239c6391ffa | 490 | FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[2], &telemetry[38]); |
Bragadeesh153 | 15:3239c6391ffa | 491 | |
Bragadeesh153 | 15:3239c6391ffa | 492 | FCTN_CONVERT_FLOAT(actual_data.AngularSpeed_actual[0], &telemetry[42]); |
Bragadeesh153 | 15:3239c6391ffa | 493 | FCTN_CONVERT_FLOAT(actual_data.AngularSpeed_actual[0], &telemetry[46]); |
Bragadeesh153 | 15:3239c6391ffa | 494 | FCTN_CONVERT_FLOAT(actual_data.AngularSpeed_actual[0], &telemetry[50]); |
Bragadeesh153 | 15:3239c6391ffa | 495 | |
Bragadeesh153 | 15:3239c6391ffa | 496 | ACS_ATS_STATUS = ACS_ATS_STATUS & 0x0F; |
Bragadeesh153 | 15:3239c6391ffa | 497 | ACS_ATS_STATUS = ACS_ATS_STATUS | 0x00; |
Bragadeesh153 | 15:3239c6391ffa | 498 | |
Bragadeesh153 | 15:3239c6391ffa | 499 | ACS_ATS_STATUS = telemetry[4]; |
Bragadeesh153 | 15:3239c6391ffa | 500 | |
Bragadeesh153 | 15:3239c6391ffa | 501 | PWM1 = PWM_tc[0]; |
Bragadeesh153 | 15:3239c6391ffa | 502 | wait_ms(60); |
Bragadeesh153 | 15:3239c6391ffa | 503 | FCTN_ATS_DATA_ACQ(); |
Bragadeesh153 | 15:3239c6391ffa | 504 | |
Bragadeesh153 | 15:3239c6391ffa | 505 | actual_data.current_actual[5]=CurrentInput.read(); |
Bragadeesh153 | 15:3239c6391ffa | 506 | actual_data.current_actual[5]= actual_data.current_actual[5]*3.3/(50*rsens); |
Bragadeesh153 | 15:3239c6391ffa | 507 | int resistance; |
Bragadeesh153 | 15:3239c6391ffa | 508 | |
Bragadeesh153 | 15:3239c6391ffa | 509 | resistance=24000*actual_data.current_actual[5]/(3.3-actual_data.current_actual[5]); |
Bragadeesh153 | 15:3239c6391ffa | 510 | if(actual_data.current_actual[5]>1.47) |
Bragadeesh153 | 15:3239c6391ffa | 511 | { |
Bragadeesh153 | 15:3239c6391ffa | 512 | actual_data.current_actual[5]=3694/log(24.032242*resistance); |
Bragadeesh153 | 15:3239c6391ffa | 513 | } |
Bragadeesh153 | 15:3239c6391ffa | 514 | else{ |
Bragadeesh153 | 15:3239c6391ffa | 515 | |
Bragadeesh153 | 15:3239c6391ffa | 516 | actual_data.current_actual[5]=3365.4/log(7.60573*resistance); |
Bragadeesh153 | 15:3239c6391ffa | 517 | } |
Bragadeesh153 | 15:3239c6391ffa | 518 | |
Bragadeesh153 | 15:3239c6391ffa | 519 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.current_actual[5], &telemetry[54]); |
Bragadeesh153 | 15:3239c6391ffa | 520 | |
Bragadeesh153 | 15:3239c6391ffa | 521 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.Bvalue_actual[0], &telemetry[56]); |
Bragadeesh153 | 15:3239c6391ffa | 522 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.Bvalue_actual[1], &telemetry[58]); |
Bragadeesh153 | 15:3239c6391ffa | 523 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.Bvalue_actual[2], &telemetry[60]); |
Bragadeesh153 | 15:3239c6391ffa | 524 | |
Bragadeesh153 | 15:3239c6391ffa | 525 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.AngularSpeed_actual[0], &telemetry[62]); |
Bragadeesh153 | 15:3239c6391ffa | 526 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.AngularSpeed_actual[0], &telemetry[64]); |
Bragadeesh153 | 15:3239c6391ffa | 527 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.AngularSpeed_actual[0], &telemetry[66]); |
Bragadeesh153 | 15:3239c6391ffa | 528 | |
Bragadeesh153 | 15:3239c6391ffa | 529 | |
Bragadeesh153 | 15:3239c6391ffa | 530 | |
Bragadeesh153 | 15:3239c6391ffa | 531 | PWM1 = 0; |
lakshya | 10:f93407b97750 | 532 | |
lakshya | 10:f93407b97750 | 533 | |
Bragadeesh153 | 15:3239c6391ffa | 534 | PWM2 = PWM_tc[1]; |
Bragadeesh153 | 15:3239c6391ffa | 535 | wait_ms(60); |
Bragadeesh153 | 15:3239c6391ffa | 536 | FCTN_ATS_DATA_ACQ(); |
Bragadeesh153 | 13:fb7facaf308b | 537 | |
lakshya | 10:f93407b97750 | 538 | |
Bragadeesh153 | 15:3239c6391ffa | 539 | actual_data.current_actual[5]=CurrentInput.read(); |
Bragadeesh153 | 15:3239c6391ffa | 540 | actual_data.current_actual[5]= actual_data.current_actual[5]*3.3/(50*rsens); |
Bragadeesh153 | 15:3239c6391ffa | 541 | |
Bragadeesh153 | 15:3239c6391ffa | 542 | resistance=24000*actual_data.current_actual[5]/(3.3-actual_data.current_actual[5]); |
Bragadeesh153 | 15:3239c6391ffa | 543 | if(actual_data.current_actual[5]>1.47) |
Bragadeesh153 | 15:3239c6391ffa | 544 | { |
Bragadeesh153 | 15:3239c6391ffa | 545 | actual_data.current_actual[5]=3694/log(24.032242*resistance); |
Bragadeesh153 | 15:3239c6391ffa | 546 | } |
Bragadeesh153 | 15:3239c6391ffa | 547 | else{ |
Bragadeesh153 | 15:3239c6391ffa | 548 | |
Bragadeesh153 | 15:3239c6391ffa | 549 | actual_data.current_actual[5]=3365.4/log(7.60573*resistance); |
Bragadeesh153 | 15:3239c6391ffa | 550 | } |
Bragadeesh153 | 15:3239c6391ffa | 551 | |
Bragadeesh153 | 15:3239c6391ffa | 552 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.current_actual[5], &telemetry[68]); |
Bragadeesh153 | 15:3239c6391ffa | 553 | |
Bragadeesh153 | 15:3239c6391ffa | 554 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.Bvalue_actual[0], &telemetry[70]); |
Bragadeesh153 | 15:3239c6391ffa | 555 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.Bvalue_actual[1], &telemetry[72]); |
Bragadeesh153 | 15:3239c6391ffa | 556 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.Bvalue_actual[2], &telemetry[74]); |
Bragadeesh153 | 15:3239c6391ffa | 557 | |
Bragadeesh153 | 15:3239c6391ffa | 558 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.AngularSpeed_actual[0], &telemetry[76]); |
Bragadeesh153 | 15:3239c6391ffa | 559 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.AngularSpeed_actual[0], &telemetry[78]); |
Bragadeesh153 | 15:3239c6391ffa | 560 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.AngularSpeed_actual[0], &telemetry[80]); |
Bragadeesh153 | 15:3239c6391ffa | 561 | |
Bragadeesh153 | 15:3239c6391ffa | 562 | PWM2 = 0; |
Bragadeesh153 | 15:3239c6391ffa | 563 | |
Bragadeesh153 | 15:3239c6391ffa | 564 | PWM3 = PWM_tc[2]; |
Bragadeesh153 | 15:3239c6391ffa | 565 | |
Bragadeesh153 | 15:3239c6391ffa | 566 | wait_ms(60); |
Bragadeesh153 | 15:3239c6391ffa | 567 | FCTN_ATS_DATA_ACQ(); |
Bragadeesh153 | 15:3239c6391ffa | 568 | |
Bragadeesh153 | 15:3239c6391ffa | 569 | resistance=24000*actual_data.current_actual[5]/(3.3-actual_data.current_actual[5]); |
Bragadeesh153 | 15:3239c6391ffa | 570 | if(actual_data.current_actual[5]>1.47) |
Bragadeesh153 | 15:3239c6391ffa | 571 | { |
Bragadeesh153 | 15:3239c6391ffa | 572 | actual_data.current_actual[5]=3694/log(24.032242*resistance); |
Bragadeesh153 | 15:3239c6391ffa | 573 | } |
Bragadeesh153 | 15:3239c6391ffa | 574 | else{ |
Bragadeesh153 | 15:3239c6391ffa | 575 | |
Bragadeesh153 | 15:3239c6391ffa | 576 | actual_data.current_actual[5]=3365.4/log(7.60573*resistance); |
Bragadeesh153 | 15:3239c6391ffa | 577 | } |
Bragadeesh153 | 15:3239c6391ffa | 578 | |
Bragadeesh153 | 15:3239c6391ffa | 579 | |
Bragadeesh153 | 15:3239c6391ffa | 580 | |
Bragadeesh153 | 15:3239c6391ffa | 581 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.current_actual[5], &telemetry[82]); |
Bragadeesh153 | 15:3239c6391ffa | 582 | |
Bragadeesh153 | 15:3239c6391ffa | 583 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.Bvalue_actual[0], &telemetry[84]); |
Bragadeesh153 | 15:3239c6391ffa | 584 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.Bvalue_actual[1], &telemetry[86]); |
Bragadeesh153 | 15:3239c6391ffa | 585 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.Bvalue_actual[2], &telemetry[88]); |
Bragadeesh153 | 15:3239c6391ffa | 586 | |
Bragadeesh153 | 15:3239c6391ffa | 587 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.AngularSpeed_actual[0], &telemetry[90]); |
Bragadeesh153 | 15:3239c6391ffa | 588 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.AngularSpeed_actual[0], &telemetry[92]); |
Bragadeesh153 | 15:3239c6391ffa | 589 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.AngularSpeed_actual[0], &telemetry[94]); |
Bragadeesh153 | 15:3239c6391ffa | 590 | |
Bragadeesh153 | 15:3239c6391ffa | 591 | PWM3 = 0; |
Bragadeesh153 | 15:3239c6391ffa | 592 | |
Bragadeesh153 | 15:3239c6391ffa | 593 | wait_ms(60); |
Bragadeesh153 | 15:3239c6391ffa | 594 | |
Bragadeesh153 | 15:3239c6391ffa | 595 | FCTN_ATS_DATA_ACQ(); |
Bragadeesh153 | 15:3239c6391ffa | 596 | actual_data.current_actual[5]=CurrentInput.read(); |
Bragadeesh153 | 15:3239c6391ffa | 597 | actual_data.current_actual[5]= actual_data.current_actual[5]*3.3/(50*rsens); |
Bragadeesh153 | 15:3239c6391ffa | 598 | |
Bragadeesh153 | 15:3239c6391ffa | 599 | resistance=24000*actual_data.current_actual[5]/(3.3-actual_data.current_actual[5]); |
Bragadeesh153 | 15:3239c6391ffa | 600 | if(actual_data.current_actual[5]>1.47) |
Bragadeesh153 | 15:3239c6391ffa | 601 | { |
Bragadeesh153 | 15:3239c6391ffa | 602 | actual_data.current_actual[5]=3694/log(24.032242*resistance); |
Bragadeesh153 | 15:3239c6391ffa | 603 | } |
Bragadeesh153 | 15:3239c6391ffa | 604 | else{ |
Bragadeesh153 | 15:3239c6391ffa | 605 | |
Bragadeesh153 | 15:3239c6391ffa | 606 | actual_data.current_actual[5]=3365.4/log(7.60573*resistance); |
Bragadeesh153 | 15:3239c6391ffa | 607 | } |
Bragadeesh153 | 15:3239c6391ffa | 608 | |
Bragadeesh153 | 15:3239c6391ffa | 609 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.Bvalue_actual[0], &telemetry[96]); |
Bragadeesh153 | 15:3239c6391ffa | 610 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.Bvalue_actual[1], &telemetry[98]); |
Bragadeesh153 | 15:3239c6391ffa | 611 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.Bvalue_actual[2], &telemetry[100]); |
Bragadeesh153 | 15:3239c6391ffa | 612 | |
Bragadeesh153 | 15:3239c6391ffa | 613 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.AngularSpeed_actual[0], &telemetry[102]); |
Bragadeesh153 | 15:3239c6391ffa | 614 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.AngularSpeed_actual[0], &telemetry[104]); |
Bragadeesh153 | 15:3239c6391ffa | 615 | FCTN_CONVERT_FLOAT_COMPRESS(actual_data.AngularSpeed_actual[0], &telemetry[106]); |
Bragadeesh153 | 15:3239c6391ffa | 616 | |
Bragadeesh153 | 15:3239c6391ffa | 617 | |
Bragadeesh153 | 15:3239c6391ffa | 618 | |
Bragadeesh153 | 15:3239c6391ffa | 619 | for(uint8_t i=108;i<132;i++) |
lakshya | 10:f93407b97750 | 620 | { |
Bragadeesh153 | 13:fb7facaf308b | 621 | telemetry[i]=0x00; |
lakshya | 10:f93407b97750 | 622 | } |
Bragadeesh153 | 13:fb7facaf308b | 623 | |
Bragadeesh153 | 13:fb7facaf308b | 624 | crc16 = CRC::crc16_gen(telemetry,132); |
Bragadeesh153 | 13:fb7facaf308b | 625 | telemetry[133] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 626 | telemetry[134] = (uint8_t)(crc16&0x00FF); |
Bragadeesh153 | 13:fb7facaf308b | 627 | break; |
lakshya | 10:f93407b97750 | 628 | } |
Bragadeesh153 | 13:fb7facaf308b | 629 | case 0x02: |
lakshya | 10:f93407b97750 | 630 | { |
Bragadeesh153 | 13:fb7facaf308b | 631 | |
Bragadeesh153 | 13:fb7facaf308b | 632 | printf("Run P_EPS_MAIN\r\n"); |
Bragadeesh153 | 13:fb7facaf308b | 633 | F_EPS(); |
Bragadeesh153 | 13:fb7facaf308b | 634 | //ACK_L234_telemetry |
Bragadeesh153 | 13:fb7facaf308b | 635 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 636 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 637 | telemetry[2]=ACK_CODE; |
lakshya | 10:f93407b97750 | 638 | for(uint8_t i=0;i<133;i++) |
sakthipriya | 3:07e15677a75c | 639 | { |
Bragadeesh153 | 13:fb7facaf308b | 640 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 641 | } |
Bragadeesh153 | 13:fb7facaf308b | 642 | crc16 = CRC::crc16_gen(telemetry,132); |
Bragadeesh153 | 13:fb7facaf308b | 643 | telemetry[132] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 644 | telemetry[133] = (uint8_t)(crc16&0x00FF); |
Bragadeesh153 | 13:fb7facaf308b | 645 | |
sakthipriya | 3:07e15677a75c | 646 | for(uint8_t i=13;i<134;i++) |
sakthipriya | 3:07e15677a75c | 647 | { |
Bragadeesh153 | 13:fb7facaf308b | 648 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 649 | } |
Bragadeesh153 | 13:fb7facaf308b | 650 | break; |
sakthipriya | 3:07e15677a75c | 651 | } |
Bragadeesh153 | 13:fb7facaf308b | 652 | case 0x03: |
sakthipriya | 3:07e15677a75c | 653 | { |
Bragadeesh153 | 13:fb7facaf308b | 654 | printf("Run P_ACS_INIT\r\n"); |
Bragadeesh153 | 13:fb7facaf308b | 655 | FCTN_ACS_INIT(); |
Bragadeesh153 | 13:fb7facaf308b | 656 | //ACK_L234_telemetry |
Bragadeesh153 | 13:fb7facaf308b | 657 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 658 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 659 | telemetry[2]=ACK_CODE; |
sakthipriya | 3:07e15677a75c | 660 | for(uint8_t i=3;i<11;i++) |
sakthipriya | 3:07e15677a75c | 661 | { |
Bragadeesh153 | 13:fb7facaf308b | 662 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 663 | } |
Bragadeesh153 | 13:fb7facaf308b | 664 | crc16 = CRC::crc16_gen(telemetry,11); |
Bragadeesh153 | 13:fb7facaf308b | 665 | telemetry[11] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 666 | telemetry[12] = (uint8_t)(crc16&0x00FF); |
sakthipriya | 3:07e15677a75c | 667 | for(uint8_t i=13;i<134;i++) |
sakthipriya | 3:07e15677a75c | 668 | { |
Bragadeesh153 | 13:fb7facaf308b | 669 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 670 | } |
Bragadeesh153 | 13:fb7facaf308b | 671 | break; |
sakthipriya | 3:07e15677a75c | 672 | } |
sakthipriya | 3:07e15677a75c | 673 | case 0x04: |
sakthipriya | 3:07e15677a75c | 674 | { |
Bragadeesh153 | 13:fb7facaf308b | 675 | |
sakthipriya | 3:07e15677a75c | 676 | printf("Run P_ACS_ACQ_DATA\r\n"); |
Bragadeesh153 | 13:fb7facaf308b | 677 | FCTN_ATS_DATA_ACQ(); |
sakthipriya | 3:07e15677a75c | 678 | //ACK_L234_TM |
Bragadeesh153 | 13:fb7facaf308b | 679 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 680 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 681 | telemetry[2]=ACK_CODE; |
sakthipriya | 3:07e15677a75c | 682 | for(uint8_t i=3;i<11;i++) |
sakthipriya | 3:07e15677a75c | 683 | { |
Bragadeesh153 | 13:fb7facaf308b | 684 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 685 | } |
Bragadeesh153 | 13:fb7facaf308b | 686 | crc16 = CRC::crc16_gen(telemetry,11); |
Bragadeesh153 | 13:fb7facaf308b | 687 | telemetry[11] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 688 | telemetry[12] = (uint8_t)(crc16&0x00FF); |
sakthipriya | 3:07e15677a75c | 689 | for(uint8_t i=13;i<134;i++) |
sakthipriya | 3:07e15677a75c | 690 | { |
Bragadeesh153 | 13:fb7facaf308b | 691 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 692 | } |
Bragadeesh153 | 13:fb7facaf308b | 693 | break; |
sakthipriya | 3:07e15677a75c | 694 | } |
sakthipriya | 3:07e15677a75c | 695 | case 0x05: |
sakthipriya | 3:07e15677a75c | 696 | { |
sakthipriya | 3:07e15677a75c | 697 | printf("Run P_ACS_MAIN\r\n"); |
lakshya | 10:f93407b97750 | 698 | F_ACS(); |
Bragadeesh153 | 13:fb7facaf308b | 699 | for(int i=0; i<3; i++) |
Bragadeesh153 | 13:fb7facaf308b | 700 | FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[i],&telemetry[(i*4)]); |
lakshya | 10:f93407b97750 | 701 | for(int i=0; i<3; i++) |
Bragadeesh153 | 13:fb7facaf308b | 702 | FCTN_CONVERT_FLOAT(actual_data.AngularSpeed_actual[i],&telemetry[12+(i*4)]); |
Bragadeesh153 | 13:fb7facaf308b | 703 | |
Bragadeesh153 | 13:fb7facaf308b | 704 | telemetry[24] = ACS_STATE; |
Bragadeesh153 | 13:fb7facaf308b | 705 | telemetry[24] = telemetry[5]|(EN_BTRY_HT<<3); |
Bragadeesh153 | 13:fb7facaf308b | 706 | telemetry[24] = telemetry[5]|(phase_TR_x<<4); |
Bragadeesh153 | 13:fb7facaf308b | 707 | telemetry[24] = telemetry[5]|(phase_TR_y<<5); |
Bragadeesh153 | 13:fb7facaf308b | 708 | telemetry[24] = telemetry[5]|(phase_TR_z<<6); |
Bragadeesh153 | 13:fb7facaf308b | 709 | |
lakshya | 11:1fdb94ae6563 | 710 | /*___________________change / check pwm working__________________________________*/ |
Bragadeesh153 | 13:fb7facaf308b | 711 | |
Bragadeesh153 | 13:fb7facaf308b | 712 | FCTN_CONVERT_FLOAT(PWM1,&telemetry[25]); |
Bragadeesh153 | 13:fb7facaf308b | 713 | FCTN_CONVERT_FLOAT(PWM2,&telemetry[29]); |
Bragadeesh153 | 13:fb7facaf308b | 714 | FCTN_CONVERT_FLOAT(PWM3,&telemetry[33]); |
Bragadeesh153 | 13:fb7facaf308b | 715 | |
lakshya | 10:f93407b97750 | 716 | //ACK_L234_TM |
Bragadeesh153 | 13:fb7facaf308b | 717 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 718 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 719 | telemetry[2]=ACK_CODE; |
lakshya | 10:f93407b97750 | 720 | for(uint8_t i=3;i<11;i++) |
lakshya | 10:f93407b97750 | 721 | { |
Bragadeesh153 | 13:fb7facaf308b | 722 | telemetry[i]=0x00; |
lakshya | 10:f93407b97750 | 723 | } |
Bragadeesh153 | 13:fb7facaf308b | 724 | |
Bragadeesh153 | 13:fb7facaf308b | 725 | crc16 = CRC::crc16_gen(telemetry,37); |
Bragadeesh153 | 13:fb7facaf308b | 726 | telemetry[37] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 727 | telemetry[38] = (uint8_t)(crc16&0x00FF); |
lakshya | 10:f93407b97750 | 728 | for(uint8_t i=39;i<134;i++) |
lakshya | 10:f93407b97750 | 729 | { |
Bragadeesh153 | 13:fb7facaf308b | 730 | telemetry[i]=0x00; |
lakshya | 10:f93407b97750 | 731 | } |
Bragadeesh153 | 13:fb7facaf308b | 732 | break; |
lakshya | 10:f93407b97750 | 733 | } |
lakshya | 10:f93407b97750 | 734 | case 0x06: |
lakshya | 10:f93407b97750 | 735 | { |
lakshya | 10:f93407b97750 | 736 | F_BCN(); |
Bragadeesh153 | 13:fb7facaf308b | 737 | printf("Run P_BCN_INIT\r\n"); |
sakthipriya | 3:07e15677a75c | 738 | //ACK_L234_TM |
Bragadeesh153 | 13:fb7facaf308b | 739 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 740 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 741 | telemetry[2]=ACK_CODE; |
sakthipriya | 3:07e15677a75c | 742 | for(uint8_t i=3;i<11;i++) |
sakthipriya | 3:07e15677a75c | 743 | { |
Bragadeesh153 | 13:fb7facaf308b | 744 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 745 | } |
Bragadeesh153 | 13:fb7facaf308b | 746 | crc16 = CRC::crc16_gen(telemetry,0); |
Bragadeesh153 | 13:fb7facaf308b | 747 | telemetry[0] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 748 | telemetry[1] = (uint8_t)(crc16&0x00FF); |
lakshya | 10:f93407b97750 | 749 | for(uint8_t i=2;i<134;i++) |
sakthipriya | 3:07e15677a75c | 750 | { |
Bragadeesh153 | 13:fb7facaf308b | 751 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 752 | } |
Bragadeesh153 | 13:fb7facaf308b | 753 | break; |
sakthipriya | 3:07e15677a75c | 754 | } |
sakthipriya | 3:07e15677a75c | 755 | case 0x07: |
sakthipriya | 3:07e15677a75c | 756 | { |
Bragadeesh153 | 13:fb7facaf308b | 757 | printf("Run P_BCN_TX_MAIN\r\n"); |
sakthipriya | 3:07e15677a75c | 758 | //ACK_L234_TM |
Bragadeesh153 | 13:fb7facaf308b | 759 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 760 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 761 | telemetry[2]=ACK_CODE; |
sakthipriya | 3:07e15677a75c | 762 | for(uint8_t i=3;i<11;i++) |
sakthipriya | 3:07e15677a75c | 763 | { |
Bragadeesh153 | 13:fb7facaf308b | 764 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 765 | } |
Bragadeesh153 | 13:fb7facaf308b | 766 | crc16 = CRC::crc16_gen(telemetry,11); |
Bragadeesh153 | 13:fb7facaf308b | 767 | telemetry[11] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 768 | telemetry[12] = (uint8_t)(crc16&0x00FF); |
sakthipriya | 3:07e15677a75c | 769 | for(uint8_t i=13;i<134;i++) |
sakthipriya | 3:07e15677a75c | 770 | { |
Bragadeesh153 | 13:fb7facaf308b | 771 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 772 | } |
Bragadeesh153 | 13:fb7facaf308b | 773 | break; |
Bragadeesh153 | 13:fb7facaf308b | 774 | } |
Bragadeesh153 | 13:fb7facaf308b | 775 | case 0x11: |
sakthipriya | 3:07e15677a75c | 776 | { |
sakthipriya | 3:07e15677a75c | 777 | printf("SW_ON_ACS_ATS1_SW_ENABLE\r\n"); |
sakthipriya | 3:07e15677a75c | 778 | //ACK_L234_TM |
Bragadeesh153 | 13:fb7facaf308b | 779 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 780 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 781 | telemetry[2]=1; |
Bragadeesh153 | 15:3239c6391ffa | 782 | ATS2_SW_ENABLE = 1; // making sure we switch off the other |
sakthipriya | 9:194afacf7449 | 783 | ATS1_SW_ENABLE = 0; |
sakthipriya | 3:07e15677a75c | 784 | for(uint8_t i=3;i<11;i++) |
sakthipriya | 3:07e15677a75c | 785 | { |
Bragadeesh153 | 13:fb7facaf308b | 786 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 787 | } |
Bragadeesh153 | 13:fb7facaf308b | 788 | crc16 = CRC::crc16_gen(telemetry,11); |
Bragadeesh153 | 13:fb7facaf308b | 789 | telemetry[11] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 790 | telemetry[12] = (uint8_t)(crc16&0x00FF); |
sakthipriya | 3:07e15677a75c | 791 | for(uint8_t i=13;i<134;i++) |
sakthipriya | 3:07e15677a75c | 792 | { |
Bragadeesh153 | 13:fb7facaf308b | 793 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 794 | } |
Bragadeesh153 | 13:fb7facaf308b | 795 | break; |
sakthipriya | 3:07e15677a75c | 796 | } |
sakthipriya | 3:07e15677a75c | 797 | case 0x12: |
sakthipriya | 3:07e15677a75c | 798 | { |
sakthipriya | 3:07e15677a75c | 799 | printf("SW_ON_ACS_ATS2_SW_ENABLE\r\n"); |
sakthipriya | 3:07e15677a75c | 800 | //ACK_L234_TM |
Bragadeesh153 | 13:fb7facaf308b | 801 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 802 | telemetry[1]=tc[0]; |
Bragadeesh153 | 15:3239c6391ffa | 803 | |
lakshya | 10:f93407b97750 | 804 | ATS1_SW_ENABLE = 1; //make sure u switch off the other |
sakthipriya | 9:194afacf7449 | 805 | ATS2_SW_ENABLE = 0; |
Bragadeesh153 | 13:fb7facaf308b | 806 | telemetry[2]=1; |
sakthipriya | 3:07e15677a75c | 807 | for(uint8_t i=3;i<11;i++) |
sakthipriya | 3:07e15677a75c | 808 | { |
Bragadeesh153 | 13:fb7facaf308b | 809 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 810 | } |
Bragadeesh153 | 13:fb7facaf308b | 811 | crc16 = CRC::crc16_gen(telemetry,11); |
Bragadeesh153 | 13:fb7facaf308b | 812 | telemetry[11] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 813 | telemetry[12] = (uint8_t)(crc16&0x00FF); |
sakthipriya | 3:07e15677a75c | 814 | for(uint8_t i=13;i<134;i++) |
sakthipriya | 3:07e15677a75c | 815 | { |
Bragadeesh153 | 13:fb7facaf308b | 816 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 817 | } |
Bragadeesh153 | 13:fb7facaf308b | 818 | break; |
sakthipriya | 3:07e15677a75c | 819 | } |
sakthipriya | 3:07e15677a75c | 820 | case 0x13: |
sakthipriya | 3:07e15677a75c | 821 | { |
sakthipriya | 3:07e15677a75c | 822 | printf("SW_ON_ACS_TR_XY_ENABLE\r\n"); |
sakthipriya | 3:07e15677a75c | 823 | //ACK_L234_TM |
Bragadeesh153 | 13:fb7facaf308b | 824 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 825 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 826 | TRXY_SW = 1; |
Bragadeesh153 | 13:fb7facaf308b | 827 | telemetry[2]=1; |
sakthipriya | 3:07e15677a75c | 828 | for(uint8_t i=3;i<11;i++) |
sakthipriya | 3:07e15677a75c | 829 | { |
Bragadeesh153 | 13:fb7facaf308b | 830 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 831 | } |
Bragadeesh153 | 13:fb7facaf308b | 832 | crc16 = CRC::crc16_gen(telemetry,11); |
Bragadeesh153 | 13:fb7facaf308b | 833 | telemetry[11] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 834 | telemetry[12] = (uint8_t)(crc16&0x00FF); |
sakthipriya | 3:07e15677a75c | 835 | for(uint8_t i=13;i<134;i++) |
sakthipriya | 3:07e15677a75c | 836 | { |
Bragadeesh153 | 13:fb7facaf308b | 837 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 838 | } |
Bragadeesh153 | 13:fb7facaf308b | 839 | break; |
sakthipriya | 3:07e15677a75c | 840 | } |
sakthipriya | 3:07e15677a75c | 841 | case 0x14: |
sakthipriya | 3:07e15677a75c | 842 | { |
sakthipriya | 3:07e15677a75c | 843 | printf("SW_ON_ACS_TR_Z_ENABLE\r\n"); |
sakthipriya | 3:07e15677a75c | 844 | //ACK_L234_TM |
Bragadeesh153 | 13:fb7facaf308b | 845 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 846 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 847 | telemetry[2]=1; |
sakthipriya | 5:bb592f3185cc | 848 | TRZ_SW = 1; |
sakthipriya | 3:07e15677a75c | 849 | for(uint8_t i=3;i<11;i++) |
sakthipriya | 3:07e15677a75c | 850 | { |
Bragadeesh153 | 13:fb7facaf308b | 851 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 852 | } |
Bragadeesh153 | 13:fb7facaf308b | 853 | crc16 = CRC::crc16_gen(telemetry,11); |
Bragadeesh153 | 13:fb7facaf308b | 854 | telemetry[11] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 855 | telemetry[12] = (uint8_t)(crc16&0x00FF); |
sakthipriya | 3:07e15677a75c | 856 | for(uint8_t i=13;i<134;i++) |
sakthipriya | 3:07e15677a75c | 857 | { |
Bragadeesh153 | 13:fb7facaf308b | 858 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 859 | } |
Bragadeesh153 | 13:fb7facaf308b | 860 | break; |
sakthipriya | 3:07e15677a75c | 861 | } |
Bragadeesh153 | 13:fb7facaf308b | 862 | case 0x15: |
sakthipriya | 3:07e15677a75c | 863 | { |
sakthipriya | 3:07e15677a75c | 864 | printf("SW_ON_BCN_TX_SW_ENABLE\r\n"); |
sakthipriya | 3:07e15677a75c | 865 | //ACK_L234_TM |
Bragadeesh153 | 13:fb7facaf308b | 866 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 867 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 868 | telemetry[2]=1; |
Bragadeesh153 | 13:fb7facaf308b | 869 | BCN_SW = 0; |
sakthipriya | 3:07e15677a75c | 870 | for(uint8_t i=3;i<11;i++) |
sakthipriya | 3:07e15677a75c | 871 | { |
Bragadeesh153 | 13:fb7facaf308b | 872 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 873 | } |
Bragadeesh153 | 13:fb7facaf308b | 874 | crc16 = CRC::crc16_gen(telemetry,11); |
Bragadeesh153 | 13:fb7facaf308b | 875 | telemetry[11] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 876 | telemetry[12] = (uint8_t)(crc16&0x00FF); |
sakthipriya | 3:07e15677a75c | 877 | for(uint8_t i=13;i<134;i++) |
sakthipriya | 3:07e15677a75c | 878 | { |
Bragadeesh153 | 13:fb7facaf308b | 879 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 880 | } |
Bragadeesh153 | 13:fb7facaf308b | 881 | break; |
sakthipriya | 3:07e15677a75c | 882 | } |
sakthipriya | 3:07e15677a75c | 883 | case 0x21: |
sakthipriya | 3:07e15677a75c | 884 | { |
sakthipriya | 3:07e15677a75c | 885 | printf("SW_OFF_ACS_ATS1_SW_ENABLE\r\n"); |
sakthipriya | 3:07e15677a75c | 886 | //ACK_L234_TM |
Bragadeesh153 | 13:fb7facaf308b | 887 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 888 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 889 | telemetry[2]=1; |
sakthipriya | 9:194afacf7449 | 890 | ATS1_SW_ENABLE = 1; |
sakthipriya | 3:07e15677a75c | 891 | for(uint8_t i=3;i<11;i++) |
sakthipriya | 3:07e15677a75c | 892 | { |
Bragadeesh153 | 13:fb7facaf308b | 893 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 894 | } |
Bragadeesh153 | 13:fb7facaf308b | 895 | crc16 = CRC::crc16_gen(telemetry,11); |
Bragadeesh153 | 13:fb7facaf308b | 896 | telemetry[11] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 897 | telemetry[12] = (uint8_t)(crc16&0x00FF); |
sakthipriya | 3:07e15677a75c | 898 | for(uint8_t i=13;i<134;i++) |
sakthipriya | 3:07e15677a75c | 899 | { |
Bragadeesh153 | 13:fb7facaf308b | 900 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 901 | } |
Bragadeesh153 | 13:fb7facaf308b | 902 | break; |
sakthipriya | 3:07e15677a75c | 903 | } |
sakthipriya | 3:07e15677a75c | 904 | case 0x22: |
sakthipriya | 3:07e15677a75c | 905 | { |
sakthipriya | 3:07e15677a75c | 906 | printf("SW_OFF_ACS_ATS2_SW_ENABLE\r\n"); |
sakthipriya | 3:07e15677a75c | 907 | //ACK_L234_TM |
Bragadeesh153 | 13:fb7facaf308b | 908 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 909 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 910 | telemetry[2]=1; |
sakthipriya | 9:194afacf7449 | 911 | ATS2_SW_ENABLE = 1; |
sakthipriya | 3:07e15677a75c | 912 | for(uint8_t i=3;i<11;i++) |
sakthipriya | 3:07e15677a75c | 913 | { |
Bragadeesh153 | 13:fb7facaf308b | 914 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 915 | } |
Bragadeesh153 | 13:fb7facaf308b | 916 | crc16 = CRC::crc16_gen(telemetry,11); |
Bragadeesh153 | 13:fb7facaf308b | 917 | telemetry[11] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 918 | telemetry[12] = (uint8_t)(crc16&0x00FF); |
sakthipriya | 3:07e15677a75c | 919 | for(uint8_t i=13;i<134;i++) |
sakthipriya | 3:07e15677a75c | 920 | { |
Bragadeesh153 | 13:fb7facaf308b | 921 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 922 | } |
Bragadeesh153 | 13:fb7facaf308b | 923 | break; |
sakthipriya | 3:07e15677a75c | 924 | } |
sakthipriya | 3:07e15677a75c | 925 | case 0x23: |
sakthipriya | 3:07e15677a75c | 926 | { |
sakthipriya | 3:07e15677a75c | 927 | printf("SW_OFF_ACS_TR_XY_ENABLE\r\n"); |
sakthipriya | 3:07e15677a75c | 928 | //ACK_L234_TM |
Bragadeesh153 | 13:fb7facaf308b | 929 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 930 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 931 | telemetry[2]=1; |
Bragadeesh153 | 13:fb7facaf308b | 932 | TRXY_SW= 0; |
sakthipriya | 3:07e15677a75c | 933 | for(uint8_t i=3;i<11;i++) |
sakthipriya | 3:07e15677a75c | 934 | { |
Bragadeesh153 | 13:fb7facaf308b | 935 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 936 | } |
Bragadeesh153 | 13:fb7facaf308b | 937 | crc16 = CRC::crc16_gen(telemetry,11); |
Bragadeesh153 | 13:fb7facaf308b | 938 | telemetry[11] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 939 | telemetry[12] = (uint8_t)(crc16&0x00FF); |
sakthipriya | 3:07e15677a75c | 940 | for(uint8_t i=13;i<134;i++) |
sakthipriya | 3:07e15677a75c | 941 | { |
Bragadeesh153 | 13:fb7facaf308b | 942 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 943 | } |
Bragadeesh153 | 13:fb7facaf308b | 944 | break; |
sakthipriya | 3:07e15677a75c | 945 | } |
sakthipriya | 3:07e15677a75c | 946 | case 0x24: |
sakthipriya | 3:07e15677a75c | 947 | { |
sakthipriya | 3:07e15677a75c | 948 | printf("SW_OFF_ACS_TR_Z_ENABLE\r\n"); |
sakthipriya | 3:07e15677a75c | 949 | //ACK_L234_TM |
Bragadeesh153 | 13:fb7facaf308b | 950 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 951 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 952 | telemetry[2]=1; |
sakthipriya | 5:bb592f3185cc | 953 | TRZ_SW = 0; |
sakthipriya | 3:07e15677a75c | 954 | for(uint8_t i=3;i<11;i++) |
sakthipriya | 3:07e15677a75c | 955 | { |
Bragadeesh153 | 13:fb7facaf308b | 956 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 957 | } |
Bragadeesh153 | 13:fb7facaf308b | 958 | crc16 = CRC::crc16_gen(telemetry,11); |
Bragadeesh153 | 13:fb7facaf308b | 959 | telemetry[11] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 960 | telemetry[12] = (uint8_t)(crc16&0x00FF); |
sakthipriya | 3:07e15677a75c | 961 | for(uint8_t i=13;i<134;i++) |
sakthipriya | 3:07e15677a75c | 962 | { |
Bragadeesh153 | 13:fb7facaf308b | 963 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 964 | } |
Bragadeesh153 | 13:fb7facaf308b | 965 | break; |
sakthipriya | 3:07e15677a75c | 966 | } |
Bragadeesh153 | 13:fb7facaf308b | 967 | case 0x25: |
sakthipriya | 3:07e15677a75c | 968 | { |
sakthipriya | 3:07e15677a75c | 969 | printf("SW_OFF_BCN_TX_SW_ENABLE\r\n"); |
sakthipriya | 3:07e15677a75c | 970 | //ACK_L234_TM |
Bragadeesh153 | 13:fb7facaf308b | 971 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 972 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 973 | telemetry[2]=1; |
sakthipriya | 5:bb592f3185cc | 974 | BCN_SW = 1; |
sakthipriya | 3:07e15677a75c | 975 | for(uint8_t i=3;i<11;i++) |
sakthipriya | 3:07e15677a75c | 976 | { |
Bragadeesh153 | 13:fb7facaf308b | 977 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 978 | } |
Bragadeesh153 | 13:fb7facaf308b | 979 | crc16 = CRC::crc16_gen(telemetry,11); |
Bragadeesh153 | 13:fb7facaf308b | 980 | telemetry[11] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 981 | telemetry[12] = (uint8_t)(crc16&0x00FF); |
sakthipriya | 3:07e15677a75c | 982 | for(uint8_t i=13;i<134;i++) |
sakthipriya | 3:07e15677a75c | 983 | { |
Bragadeesh153 | 13:fb7facaf308b | 984 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 985 | } |
Bragadeesh153 | 13:fb7facaf308b | 986 | break; |
sakthipriya | 3:07e15677a75c | 987 | } |
sakthipriya | 3:07e15677a75c | 988 | case 0x31: |
sakthipriya | 3:07e15677a75c | 989 | { |
sakthipriya | 5:bb592f3185cc | 990 | printf("ACS_ATS1_SW_RESET\r\n"); |
sakthipriya | 3:07e15677a75c | 991 | //ACK_L234_TM |
Bragadeesh153 | 13:fb7facaf308b | 992 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 993 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 994 | telemetry[2]=1; |
sakthipriya | 9:194afacf7449 | 995 | ATS1_SW_ENABLE = 1; |
sakthipriya | 5:bb592f3185cc | 996 | wait_us(1); |
sakthipriya | 9:194afacf7449 | 997 | ATS1_SW_ENABLE = 0; |
sakthipriya | 3:07e15677a75c | 998 | for(uint8_t i=3;i<11;i++) |
sakthipriya | 3:07e15677a75c | 999 | { |
Bragadeesh153 | 13:fb7facaf308b | 1000 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 1001 | } |
Bragadeesh153 | 13:fb7facaf308b | 1002 | crc16 = CRC::crc16_gen(telemetry,11); |
Bragadeesh153 | 13:fb7facaf308b | 1003 | telemetry[11] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 1004 | telemetry[12] = (uint8_t)(crc16&0x00FF); |
sakthipriya | 3:07e15677a75c | 1005 | for(uint8_t i=13;i<134;i++) |
sakthipriya | 3:07e15677a75c | 1006 | { |
Bragadeesh153 | 13:fb7facaf308b | 1007 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 1008 | } |
Bragadeesh153 | 13:fb7facaf308b | 1009 | break; |
sakthipriya | 3:07e15677a75c | 1010 | } |
sakthipriya | 3:07e15677a75c | 1011 | case 0x32: |
sakthipriya | 3:07e15677a75c | 1012 | { |
sakthipriya | 3:07e15677a75c | 1013 | printf("BCN_SW_RESET\r\n"); |
sakthipriya | 3:07e15677a75c | 1014 | //ACK_L234_TM |
Bragadeesh153 | 13:fb7facaf308b | 1015 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 1016 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 1017 | telemetry[2]=1; |
sakthipriya | 5:bb592f3185cc | 1018 | BCN_SW = 1; |
sakthipriya | 5:bb592f3185cc | 1019 | wait_us(1); |
sakthipriya | 5:bb592f3185cc | 1020 | BCN_SW = 0; |
sakthipriya | 3:07e15677a75c | 1021 | for(uint8_t i=3;i<11;i++) |
sakthipriya | 3:07e15677a75c | 1022 | { |
Bragadeesh153 | 13:fb7facaf308b | 1023 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 1024 | } |
Bragadeesh153 | 13:fb7facaf308b | 1025 | crc16 = CRC::crc16_gen(telemetry,11); |
Bragadeesh153 | 13:fb7facaf308b | 1026 | telemetry[11] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 1027 | telemetry[12] = (uint8_t)(crc16&0x00FF); |
sakthipriya | 3:07e15677a75c | 1028 | for(uint8_t i=13;i<134;i++) |
sakthipriya | 3:07e15677a75c | 1029 | { |
Bragadeesh153 | 13:fb7facaf308b | 1030 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 1031 | } |
Bragadeesh153 | 13:fb7facaf308b | 1032 | break; |
sakthipriya | 3:07e15677a75c | 1033 | } |
sakthipriya | 3:07e15677a75c | 1034 | case 0x33: |
sakthipriya | 3:07e15677a75c | 1035 | { |
sakthipriya | 5:bb592f3185cc | 1036 | printf("ACS_ATS2_SW_RESET\r\n"); |
sakthipriya | 3:07e15677a75c | 1037 | //ACK_L234_TM |
Bragadeesh153 | 13:fb7facaf308b | 1038 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 1039 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 1040 | telemetry[2]=1; |
sakthipriya | 9:194afacf7449 | 1041 | ATS1_SW_ENABLE = 1; |
sakthipriya | 5:bb592f3185cc | 1042 | wait_us(1); |
sakthipriya | 9:194afacf7449 | 1043 | ATS1_SW_ENABLE = 0; |
sakthipriya | 3:07e15677a75c | 1044 | for(uint8_t i=3;i<11;i++) |
sakthipriya | 3:07e15677a75c | 1045 | { |
Bragadeesh153 | 13:fb7facaf308b | 1046 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 1047 | } |
Bragadeesh153 | 13:fb7facaf308b | 1048 | crc16 = CRC::crc16_gen(telemetry,11); |
Bragadeesh153 | 13:fb7facaf308b | 1049 | telemetry[11] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 1050 | telemetry[12] = (uint8_t)(crc16&0x00FF); |
sakthipriya | 3:07e15677a75c | 1051 | for(uint8_t i=13;i<134;i++) |
sakthipriya | 3:07e15677a75c | 1052 | { |
Bragadeesh153 | 13:fb7facaf308b | 1053 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 1054 | } |
Bragadeesh153 | 13:fb7facaf308b | 1055 | break; |
sakthipriya | 3:07e15677a75c | 1056 | } |
Bragadeesh153 | 13:fb7facaf308b | 1057 | case 0x34: |
sakthipriya | 3:07e15677a75c | 1058 | { |
sakthipriya | 3:07e15677a75c | 1059 | printf("CDMS_SW_RESET\r\n"); |
sakthipriya | 3:07e15677a75c | 1060 | //ACK_L234_TM |
Bragadeesh153 | 13:fb7facaf308b | 1061 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 1062 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 1063 | telemetry[2]=1; |
sakthipriya | 5:bb592f3185cc | 1064 | CDMS_RESET = 0; |
sakthipriya | 5:bb592f3185cc | 1065 | wait_us(1); |
sakthipriya | 5:bb592f3185cc | 1066 | CDMS_RESET = 1; |
sakthipriya | 3:07e15677a75c | 1067 | for(uint8_t i=3;i<11;i++) |
sakthipriya | 3:07e15677a75c | 1068 | { |
Bragadeesh153 | 13:fb7facaf308b | 1069 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 1070 | } |
Bragadeesh153 | 13:fb7facaf308b | 1071 | crc16 = CRC::crc16_gen(telemetry,11); |
Bragadeesh153 | 13:fb7facaf308b | 1072 | telemetry[11] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 1073 | telemetry[12] = (uint8_t)(crc16&0x00FF); |
sakthipriya | 3:07e15677a75c | 1074 | for(uint8_t i=13;i<134;i++) |
sakthipriya | 3:07e15677a75c | 1075 | { |
Bragadeesh153 | 13:fb7facaf308b | 1076 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 1077 | } |
Bragadeesh153 | 13:fb7facaf308b | 1078 | break; |
sakthipriya | 3:07e15677a75c | 1079 | } |
sakthipriya | 3:07e15677a75c | 1080 | default: |
Bragadeesh153 | 13:fb7facaf308b | 1081 | { |
sakthipriya | 3:07e15677a75c | 1082 | printf("Invalid TC\r\n"); |
sakthipriya | 3:07e15677a75c | 1083 | //ACK_L234_TM |
Bragadeesh153 | 13:fb7facaf308b | 1084 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 1085 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 1086 | telemetry[2]=ACK_CODE; |
sakthipriya | 3:07e15677a75c | 1087 | for(uint8_t i=3;i<11;i++) |
sakthipriya | 3:07e15677a75c | 1088 | { |
Bragadeesh153 | 13:fb7facaf308b | 1089 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 1090 | } |
Bragadeesh153 | 13:fb7facaf308b | 1091 | crc16 = CRC::crc16_gen(telemetry,11); |
Bragadeesh153 | 13:fb7facaf308b | 1092 | telemetry[11] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 1093 | telemetry[12] = (uint8_t)(crc16&0x00FF); |
sakthipriya | 3:07e15677a75c | 1094 | for(uint8_t i=13;i<134;i++) |
sakthipriya | 3:07e15677a75c | 1095 | { |
Bragadeesh153 | 13:fb7facaf308b | 1096 | telemetry[i]=0x00; |
sakthipriya | 3:07e15677a75c | 1097 | } |
Bragadeesh153 | 13:fb7facaf308b | 1098 | break; |
sakthipriya | 3:07e15677a75c | 1099 | } |
sakthipriya | 3:07e15677a75c | 1100 | } |
Bragadeesh153 | 13:fb7facaf308b | 1101 | break; |
Bragadeesh153 | 13:fb7facaf308b | 1102 | } |
sakthipriya | 3:07e15677a75c | 1103 | default: |
Bragadeesh153 | 13:fb7facaf308b | 1104 | { |
Bragadeesh153 | 13:fb7facaf308b | 1105 | printf("Invalid TC\r\n"); |
Bragadeesh153 | 13:fb7facaf308b | 1106 | //ACK_L234_TM |
Bragadeesh153 | 13:fb7facaf308b | 1107 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 1108 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 1109 | telemetry[2]=ACK_CODE; |
Bragadeesh153 | 13:fb7facaf308b | 1110 | for(uint8_t i=3;i<11;i++) |
Bragadeesh153 | 13:fb7facaf308b | 1111 | { |
Bragadeesh153 | 13:fb7facaf308b | 1112 | telemetry[i]=0x00; |
Bragadeesh153 | 13:fb7facaf308b | 1113 | } |
Bragadeesh153 | 13:fb7facaf308b | 1114 | crc16 = CRC::crc16_gen(telemetry,11); |
Bragadeesh153 | 13:fb7facaf308b | 1115 | telemetry[11] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 1116 | telemetry[12] = (uint8_t)(crc16&0x00FF); |
Bragadeesh153 | 13:fb7facaf308b | 1117 | for(uint8_t i=13;i<134;i++) |
Bragadeesh153 | 13:fb7facaf308b | 1118 | { |
Bragadeesh153 | 13:fb7facaf308b | 1119 | telemetry[i]=0x00; |
Bragadeesh153 | 13:fb7facaf308b | 1120 | } |
Bragadeesh153 | 13:fb7facaf308b | 1121 | break; |
sakthipriya | 3:07e15677a75c | 1122 | } |
sakthipriya | 3:07e15677a75c | 1123 | } |
Bragadeesh153 | 13:fb7facaf308b | 1124 | break; |
Bragadeesh153 | 13:fb7facaf308b | 1125 | } |
Bragadeesh153 | 13:fb7facaf308b | 1126 | default: |
Bragadeesh153 | 13:fb7facaf308b | 1127 | { |
Bragadeesh153 | 13:fb7facaf308b | 1128 | printf("Invalid TC\r\n"); |
Bragadeesh153 | 13:fb7facaf308b | 1129 | //ACK_L234_TM |
Bragadeesh153 | 13:fb7facaf308b | 1130 | telemetry[0]=0xB0; |
Bragadeesh153 | 13:fb7facaf308b | 1131 | telemetry[1]=tc[0]; |
Bragadeesh153 | 13:fb7facaf308b | 1132 | telemetry[2]=ACK_CODE; |
Bragadeesh153 | 13:fb7facaf308b | 1133 | for(uint8_t i=3;i<11;i++) |
Bragadeesh153 | 13:fb7facaf308b | 1134 | { |
Bragadeesh153 | 13:fb7facaf308b | 1135 | telemetry[i]=0x00; |
Bragadeesh153 | 13:fb7facaf308b | 1136 | } |
Bragadeesh153 | 13:fb7facaf308b | 1137 | crc16 = CRC::crc16_gen(telemetry,11); |
Bragadeesh153 | 13:fb7facaf308b | 1138 | telemetry[11] = (uint8_t)((crc16&0xFF00)>>8); |
Bragadeesh153 | 13:fb7facaf308b | 1139 | telemetry[12] = (uint8_t)(crc16&0x00FF); |
Bragadeesh153 | 13:fb7facaf308b | 1140 | for(uint8_t i=13;i<134;i++) |
Bragadeesh153 | 13:fb7facaf308b | 1141 | { |
Bragadeesh153 | 13:fb7facaf308b | 1142 | telemetry[i]=0x00; |
Bragadeesh153 | 13:fb7facaf308b | 1143 | } |
Bragadeesh153 | 13:fb7facaf308b | 1144 | break; |
sakthipriya | 3:07e15677a75c | 1145 | } |
sakthipriya | 3:07e15677a75c | 1146 | } |
Bragadeesh153 | 13:fb7facaf308b | 1147 | } |
sakthipriya | 4:39a4ae8c7ecd | 1148 | |
sakthipriya | 4:39a4ae8c7ecd | 1149 | |
sakthipriya | 4:39a4ae8c7ecd | 1150 | |
sakthipriya | 4:39a4ae8c7ecd | 1151 | |
Bragadeesh153 | 13:fb7facaf308b | 1152 | int strt_add = flash_size() - (2*SECTOR_SIZE); |
sakthipriya | 4:39a4ae8c7ecd | 1153 | uint32_t flasharray[8]; //256+(3*1024) |
sakthipriya | 4:39a4ae8c7ecd | 1154 | char *nativeflash = (char*)strt_add; |
sakthipriya | 4:39a4ae8c7ecd | 1155 | |
sakthipriya | 4:39a4ae8c7ecd | 1156 | /*Writing to the Flash*/ |
sakthipriya | 4:39a4ae8c7ecd | 1157 | void FCTN_CDMS_WR_FLASH(uint16_t j,uint32_t fdata) //j-position to write address ; fdata - flash data to be written |
sakthipriya | 4:39a4ae8c7ecd | 1158 | { |
Bragadeesh153 | 13:fb7facaf308b | 1159 | for(int i=0;i<8;i++) |
sakthipriya | 4:39a4ae8c7ecd | 1160 | { |
sakthipriya | 4:39a4ae8c7ecd | 1161 | flasharray[i]=nativeflash[i]; |
sakthipriya | 4:39a4ae8c7ecd | 1162 | } |
sakthipriya | 4:39a4ae8c7ecd | 1163 | flasharray[j]=fdata; |
sakthipriya | 4:39a4ae8c7ecd | 1164 | erase_sector(strt_add); |
sakthipriya | 4:39a4ae8c7ecd | 1165 | program_flash(strt_add, (char*)&flasharray,4*8); |
sakthipriya | 4:39a4ae8c7ecd | 1166 | } |
sakthipriya | 4:39a4ae8c7ecd | 1167 | /*End*/ |
sakthipriya | 4:39a4ae8c7ecd | 1168 | |
sakthipriya | 4:39a4ae8c7ecd | 1169 | /*Reading from Flash*/ |
sakthipriya | 4:39a4ae8c7ecd | 1170 | uint32_t FCTN_CDMS_RD_FLASH(uint16_t j) |
sakthipriya | 4:39a4ae8c7ecd | 1171 | { |
sakthipriya | 4:39a4ae8c7ecd | 1172 | for(int i=0;i<8;i++) |
sakthipriya | 4:39a4ae8c7ecd | 1173 | { |
sakthipriya | 4:39a4ae8c7ecd | 1174 | flasharray[i]=nativeflash[i]; |
sakthipriya | 4:39a4ae8c7ecd | 1175 | } |
sakthipriya | 4:39a4ae8c7ecd | 1176 | return flasharray[j]; |
sakthipriya | 4:39a4ae8c7ecd | 1177 | } |
sakthipriya | 5:bb592f3185cc | 1178 | /*End*/ |
sakthipriya | 5:bb592f3185cc | 1179 | |
sakthipriya | 5:bb592f3185cc | 1180 | // Convert float to 4 uint8_t |
sakthipriya | 5:bb592f3185cc | 1181 | |
sakthipriya | 6:036d08b62785 | 1182 | void FCTN_CONVERT_FLOAT(float input, uint8_t output[4]) |
sakthipriya | 5:bb592f3185cc | 1183 | { |
sakthipriya | 6:036d08b62785 | 1184 | assert(sizeof(float) == sizeof(uint32_t)); |
sakthipriya | 6:036d08b62785 | 1185 | uint32_t* temp = reinterpret_cast<uint32_t*>(&input); |
sakthipriya | 6:036d08b62785 | 1186 | |
sakthipriya | 6:036d08b62785 | 1187 | //float* output1 = reinterpret_cast<float*>(temp); |
Bragadeesh153 | 13:fb7facaf308b | 1188 | |
sakthipriya | 6:036d08b62785 | 1189 | printf("\n\r %f ", input); |
sakthipriya | 6:036d08b62785 | 1190 | std::cout << "\n\r uint32"<<*temp << std::endl; |
sakthipriya | 6:036d08b62785 | 1191 | |
sakthipriya | 6:036d08b62785 | 1192 | output[0] =(uint8_t )(((*temp)>>24)&0xFF); |
sakthipriya | 6:036d08b62785 | 1193 | output[2] =(uint8_t ) (((*temp)>>16)&0xFF); |
Bragadeesh153 | 13:fb7facaf308b | 1194 | output[1] =(uint8_t ) (((*temp)>>8)&0xFF); |
Bragadeesh153 | 13:fb7facaf308b | 1195 | output[3] =(uint8_t ) ((*temp) & 0xFF); // verify the logic |
sakthipriya | 6:036d08b62785 | 1196 | //printf("\n\r inside %d %d %d %d", output[3],output[2],output[1],output[0]); |
Bragadeesh153 | 13:fb7facaf308b | 1197 | //std:: cout << "\n\r uint8 inside " << output[3] << '\t' << output[2] << '\t' << output[1] << '\t' << output[0] <<std::endl; |
Bragadeesh153 | 15:3239c6391ffa | 1198 | } |
Bragadeesh153 | 15:3239c6391ffa | 1199 | |
Bragadeesh153 | 15:3239c6391ffa | 1200 | |
Bragadeesh153 | 15:3239c6391ffa | 1201 | void FCTN_CONVERT_FLOAT_COMPRESS(float input, uint8_t output[2]) |
Bragadeesh153 | 15:3239c6391ffa | 1202 | { |
Bragadeesh153 | 15:3239c6391ffa | 1203 | int integer = (int)input; |
Bragadeesh153 | 15:3239c6391ffa | 1204 | assert(sizeof(int) == sizeof(uint16_t)); |
Bragadeesh153 | 15:3239c6391ffa | 1205 | uint16_t* temp = reinterpret_cast<uint16_t*>(&integer); |
Bragadeesh153 | 15:3239c6391ffa | 1206 | |
Bragadeesh153 | 15:3239c6391ffa | 1207 | //float* output1 = reinterpret_cast<float*>(temp); |
Bragadeesh153 | 15:3239c6391ffa | 1208 | |
Bragadeesh153 | 15:3239c6391ffa | 1209 | printf("\n\r %d ", integer); |
Bragadeesh153 | 15:3239c6391ffa | 1210 | std::cout << "\n\r uint16"<<*temp << std::endl; |
Bragadeesh153 | 15:3239c6391ffa | 1211 | |
Bragadeesh153 | 15:3239c6391ffa | 1212 | output[0] =(uint8_t ) (((*temp)>>8)&0xFF); |
Bragadeesh153 | 15:3239c6391ffa | 1213 | output[1] =(uint8_t ) ((*temp) & 0xFF); // verify the logic |
Bragadeesh153 | 15:3239c6391ffa | 1214 | //printf("\n\r inside %d %d %d %d", output[3],output[2],output[1],output[0]); |
Bragadeesh153 | 15:3239c6391ffa | 1215 | //std:: cout << "\n\r uint8 inside " << output[3] << '\t' << output[2] << '\t' << output[1] << '\t' << output[0] <<std::endl; |
Bragadeesh153 | 13:fb7facaf308b | 1216 | } |