Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: FreescaleIAP mbed-rtos mbed
Fork of ACS_FULL_Flowchart_BAE by
Revision 6:036d08b62785, committed 2016-01-22
- Comitter:
- sakthipriya
- Date:
- Fri Jan 22 19:51:50 2016 +0000
- Parent:
- 5:bb592f3185cc
- Child:
- 7:a46a1dee4497
- Commit message:
- i2c prob again
Changed in this revision
--- a/ACS.cpp Thu Dec 31 17:12:52 2015 +0000
+++ b/ACS.cpp Fri Jan 22 19:51:50 2016 +0000
@@ -6,7 +6,7 @@
#include "pni.h" //pni header file
#include "pin_config.h"
#include "ACS.h"
-
+#include "EPS.h"
//********************************flags******************************************//
extern uint32_t BAE_STATUS;
@@ -34,6 +34,7 @@
int g_err_flag_TR_z=0; // setting z-flag to zero
extern float data[6];
+extern BAE_HK_actual actual_data;
//DigitalOut gpo1(PTC0); // enable of att sens2 switch
@@ -291,8 +292,10 @@
// pc_acs.printf("%f\t",mag_data[i]);
}
for(int i=0; i<3; i++) {
- data[i]=gyro_data[i];
- data[i+3]=mag_data[i];
+ // data[i]=gyro_data[i];
+ actual_data.AngularSpeed_actual[i] = gyro_data[i];
+ actual_data.Bvalue_actual[i] = mag_data[i];
+ //data[i+3]=mag_data[i];
}
// return(combined_values); //returning poiter combined values
}
--- a/EPS.cpp Thu Dec 31 17:12:52 2015 +0000
+++ b/EPS.cpp Fri Jan 22 19:51:50 2016 +0000
@@ -1,9 +1,11 @@
#include "EPS.h"
#include "pin_config.h"
+#include "iostream"
/***********************************************global variable declaration***************************************************************/
extern uint32_t BAE_STATUS;
extern uint32_t BAE_ENABLE;
-extern uint8_t BAE_data[73];
+extern uint8_t BAE_data[74];
+extern char BAE_chardata[74];
//m_I2C.frequency(10000)
const char RCOMP0= 0x97;
@@ -193,10 +195,12 @@
for(Iteration=0;Iteration<3;Iteration++){
quant_data.AngularSpeed_quant[Iteration]=actual_data.AngularSpeed_actual[Iteration];
+ printf("\n\r w value %f",quant_data.AngularSpeed_quant[Iteration]);
}
for(Iteration=0;Iteration<3;Iteration++){
quant_data.Bvalue_quant[Iteration]=actual_data.Bvalue_actual[Iteration];
+ printf("\n\r b value %f",quant_data.Bvalue_quant[Iteration]);
}
quant_data.Batt_voltage_quant=quantiz(vstart,vstep,actual_data.Batt_voltage_actual);
@@ -210,7 +214,7 @@
arch_data.faultPoll_status=actual_data.faultPoll_status;
arch_data.faultIr_status=actual_data.faultIr_status;
arch_data.Batt_voltage=quant_data.Batt_voltage_quant;
-
+ printf("\n\r in hk");
}
@@ -229,8 +233,14 @@
FCTN_CONVERT_FLOAT(quant_data.Batt_gauge_alerts,&BAE_data[33]);
BAE_data[37] = quant_data.BAE_temp_quant;
FCTN_CONVERT_FLOAT(quant_data.AngularSpeed_quant[0],&BAE_data[38]);
+ //printf("\n\r outside %d %d %d %d", BAE_data[38],BAE_data[39],BAE_data[40],BAE_data[41]);
+ //std:: cout << "\n\r uint8 outside " << BAE_data[38] << '\t' << BAE_data[39] << '\t' << BAE_data[40] << '\t' << BAE_data[41] <<std::endl;
FCTN_CONVERT_FLOAT(quant_data.AngularSpeed_quant[1],&BAE_data[42]);
+ //std:: cout << "\n\r uint8 outside " << BAE_data[42] << '\t' << BAE_data[43] << '\t' << BAE_data[44] << '\t' << BAE_data[45] <<std::endl;
+ // printf("\n\r outside %d %d %d %d", BAE_data[42],BAE_data[43],BAE_data[44],BAE_data[45]);
FCTN_CONVERT_FLOAT(quant_data.AngularSpeed_quant[2],&BAE_data[46]);
+ //printf("\n\r outside %d %d %d %d", BAE_data[46],BAE_data[47],BAE_data[48],BAE_data[49]);
+ //std:: cout << "\n\r uint8 outside " << BAE_data[46] << '\t' << BAE_data[47] << '\t' << BAE_data[48] << '\t' << BAE_data[49] <<std::endl;
FCTN_CONVERT_FLOAT(quant_data.Bvalue_quant[0],&BAE_data[50]);
FCTN_CONVERT_FLOAT(quant_data.Bvalue_quant[1],&BAE_data[54]);
FCTN_CONVERT_FLOAT(quant_data.Bvalue_quant[2],&BAE_data[58]);
@@ -247,6 +257,11 @@
BAE_data[71] = arch_data.faultPoll_status;
BAE_data[72] = arch_data.faultIr_status;
BAE_data[73] = arch_data.Batt_voltage;
+ for(int i=0; i<73;i++)
+ BAE_chardata[i] = (char)BAE_data[i];
+ BAE_chardata[73] = '\0';
+ printf("\n\r bae ats data %c %c %c %c", BAE_chardata[38],BAE_chardata[39],BAE_chardata[40],BAE_chardata[41]);
+ printf("\n\r BAE data is %s", BAE_chardata);
}
--- a/TCTM.cpp Thu Dec 31 17:12:52 2015 +0000
+++ b/TCTM.cpp Fri Jan 22 19:51:50 2016 +0000
@@ -4,6 +4,10 @@
#include "EPS.h"
#include "pin_config.h"
#include "FreescaleIAP.h"
+#include "inttypes.h"
+#include "iostream"
+#include "stdint.h"
+#include "cassert"
extern DigitalOut gpo1; // enable of att sens2 switch
extern DigitalOut gpo2; // enable of att sens switch
@@ -769,12 +773,20 @@
// Convert float to 4 uint8_t
-void FCTN_CONVERT_FLOAT(float input, uint8_t* output)
+void FCTN_CONVERT_FLOAT(float input, uint8_t output[4])
{
- uint32_t temp;
- temp = (uint32_t)input;
- output[0] = (temp>>24)&0xFF;
- output[2] = (temp>>16)&0xFF;
- output[1] = (temp>>8)&0xFF;
- output[3] = temp & 0xFF; // verify the logic
+ assert(sizeof(float) == sizeof(uint32_t));
+ uint32_t* temp = reinterpret_cast<uint32_t*>(&input);
+
+ //float* output1 = reinterpret_cast<float*>(temp);
+
+ printf("\n\r %f ", input);
+ std::cout << "\n\r uint32"<<*temp << std::endl;
+
+ output[0] =(uint8_t )(((*temp)>>24)&0xFF);
+ output[2] =(uint8_t ) (((*temp)>>16)&0xFF);
+ output[1] =(uint8_t ) (((*temp)>>8)&0xFF);
+ output[3] =(uint8_t ) ((*temp) & 0xFF); // verify the logic
+ //printf("\n\r inside %d %d %d %d", output[3],output[2],output[1],output[0]);
+ //std:: cout << "\n\r uint8 inside " << output[3] << '\t' << output[2] << '\t' << output[1] << '\t' << output[0] <<std::endl;
}
\ No newline at end of file
--- a/main.cpp Thu Dec 31 17:12:52 2015 +0000
+++ b/main.cpp Fri Jan 22 19:51:50 2016 +0000
@@ -39,7 +39,8 @@
char EPS_BATTERY_HEAT_ENABLE = 'q';
//.......................global variables..................................................................// new hk structure- everything has to changed based on this
-uint8_t BAE_data[73];
+uint8_t BAE_data[74];
+char BAE_chardata[74];
//*************************************Global declarations************************************************//
@@ -180,7 +181,7 @@
}
}
- float b1[3]={-23.376,-37.56,14.739}, omega1[3]={-1.52,2.746,0.7629}, moment1[3]= {1.0498,-1.0535,1.3246};
+ //float b1[3]={-23.376,-37.56,14.739}, omega1[3]={-1.52,2.746,0.7629}, moment1[3]= {1.0498,-1.0535,1.3246};
//b1[3] = {22, 22,10};
//omega1[3] = {2.1,3.0,1.5};
// gpo1 = 0; // att sens2 switch is disabled
@@ -202,18 +203,18 @@
pc.printf("gyro values\n\r"); //printing the angular velocity and magnetic field values
for(int i=0; i<3; i++)
{
- pc.printf("%f\n\r",data[i]);
+ pc.printf("%f\n\r",actual_data.AngularSpeed_actual[i]);
}
pc.printf("mag values\n\r");
- for(int i=3; i<6; i++)
+ for(int i=0; i<3; i++)
{
- pc.printf("%f\n\r",data[i]);
+ pc.printf("%f\n\r",actual_data.Bvalue_actual[i]);
}
- for(int i=0;i<3;i++)
- {
- omega1[i]= data[i];
- b1[i] = data[i+3];
- }
+ // for(int i=0;i<3;i++)
+// {
+// omega1[i]= data[i];
+// b1[i] = data[i+3];
+// }
}//if ACS_DATA_ACQ_ENABLE = 1
else
{
@@ -262,7 +263,7 @@
FLAG();
printf("\n\r nominal");
ACS_STATUS = '4'; // set ACS_STATUS = ACS_NOMINAL_ONLY
- FCTN_ACS_CNTRLALGO(b1,omega1);
+ FCTN_ACS_CNTRLALGO(actual_data.Bvalue_actual,actual_data.AngularSpeed_actual);
printf("\n\r moment values returned by control algo \n");
for(int i=0; i<3; i++)
{
@@ -286,7 +287,7 @@
FLAG();
printf("\n\r Entered detumbling \n");
ACS_STATUS = '6'; // set ACS_STATUS = ACS_DETUMBLING_ONLY
- FCTN_ACS_CNTRLALGO(b1,omega1); // detumbling code has to be included
+ FCTN_ACS_CNTRLALGO(actual_data.Bvalue_actual,actual_data.AngularSpeed_actual); // detumbling code has to be included
FCTN_ACS_GENPWM_MAIN(moment) ;
}
else
@@ -314,9 +315,6 @@
PWM3 = 0; //clear pwm pins
}
} //else for acs control off
-
-
-
ACS_MAIN_STATUS = 'c'; //clear ACS_MAIN_STATUS flag
}
@@ -370,9 +368,10 @@
// EPS_STATUS = EPS_ERR_BATTERY_TEMP;
// }
FCTN_HK_MAIN();
+ // printf("\n\r here");
FCTN_APPEND_HKDATA();
minMaxHkData();
-
+ //printf("\n\r here");
EPS_MAIN_STATUS = 'c'; // clear EPS main status
}
@@ -401,7 +400,11 @@
else if( slave.receive() == 1) // slave writes to master
{
if(data_send_flag == 'h')
- write_ack=slave.write((char*)BAE_data,73);
+ {
+ //FCTN_APPEND_HKDATA();
+ // pc.printf("\n\r here");
+ write_ack=slave.write(BAE_chardata,74);
+ }
else if(data_send_flag == 't')
{
write_ack=slave.write(telemetry,tm_len);
@@ -412,8 +415,8 @@
else if( slave.receive()==3 || slave.receive()==2) // slave read
{
read_ack=slave.read(telecommand,tc_len);
- pc.printf("\n\rTELECOMMAND received from CDMS is %s \n",telecommand);
- pc.printf("\n\r Executing Telecommand \n");
+ //pc.printf("\n\rTELECOMMAND received from CDMS is %s \n",telecommand);
+ //pc.printf("\n\r Executing Telecommand \n");
// FCTN_TC_DECODE((uint8_t*) telecommand);
uint8_t* temp = FCTN_BAE_TM_TC((uint8_t*) telecommand);
telemetry = (char*)temp;
@@ -422,6 +425,7 @@
//pc.printf("%c", telemetry[i]);
}
+
}
}
