QITH FLAGS
Dependencies: FreescaleIAP mbed-rtos mbed
Fork of TF_conops_BAE1_3 by
EPS.cpp
- Committer:
- sakthipriya
- Date:
- 2015-06-30
- Revision:
- 0:246d1b5f11ae
- Child:
- 1:7185136654ce
File content as of revision 0:246d1b5f11ae:
#include "EPS.h" #include "pin_config.h" //----------------------------------------------------EPS INIT---------------------------------------------------------------------------// void FCTN_EPS_INIT() { //FCTN_BTRY_GAUGE //read soc value //FCTN_BTRY_TEMP } int FCTN_QUANTIZE(float start,float step,float input_data) // accepts min and measured values and step->quantises on a scale 0-15..(4 bit quantisation) { int quant_data = (input_data - start)/step; if(quant_data <= 0) quant_data = 0; if(quant_data >= 15) quant_data = 15; return quant_data; } void FCTN_WRITE_BEASTRUCT(ShortBeacy* x,SensorDataQuantised y) { (*x).Voltage[0] = 2; //quantised value (*x).Temp[0] = y.PanelTemperature[0]; //quantised value (*x).Temp[1] = y.PanelTemperature[1]; //quantised value (*x).AngularSpeed[0] = y.AngularSpeed[0]; (*x).AngularSpeed[1] = y.AngularSpeed[1]; (*x).SubsystemStatus[0] = 145; //dummy values----------to be changed------------------- (*x).ErrorFlag[0] = 3; //dummy values----------to be changed------------------- } SensorData Sensor; SensorDataQuantised SensorQuantised; ShortBeacy Shortbeacon; void FCTN_EPS_MAIN() { SelectLinesA[0] = SelectLinesA[1] = SelectLinesA[2] = SelectLinesA[3] = 0; SelectLinesB[0] = SelectLinesB[1] = SelectLinesB[2] = 0; //initialise all selectlines to zeroes->1st line of muxes selected int loop_iterator = 0; int select_line_iterator = 3; for(loop_iterator = 0; loop_iterator < 16; loop_iterator++) //measurement from voltage sensor=> 16 sensors in place { //read the sensor values and stores them in 'SensorData' structure's variable 'Sensor' Sensor.Voltage[loop_iterator] = (VoltageInput.read()*3.3*5.545454);//resistors in voltage divider=>15Mohm,3.3Mohm if(loop_iterator%2 == 0) SensorQuantised.Voltage[loop_iterator/2] = FCTN_QUANTIZE(vstart,vstep,Sensor.Voltage[loop_iterator]); else SensorQuantised.Voltage[(loop_iterator)/2] = SensorQuantised.Voltage[(loop_iterator)/2]<<4 + FCTN_QUANTIZE(vstart,vstep,Sensor.Voltage[loop_iterator]); //iterate the select lines from 0 to 15 for(select_line_iterator = 3;select_line_iterator >= 0;select_line_iterator--) { if(SelectLinesA[select_line_iterator] == 0) { SelectLinesA[select_line_iterator] = 1; break; } else SelectLinesA[select_line_iterator] = 0; } wait_us(10.0); // A delay of 10 microseconds between each sensor output. Can be changed. } //measurement from current sensor=> 8 sensors in place for(loop_iterator = 0; loop_iterator < 8; loop_iterator++) { //read the sensor values and stores them in 'SensorData' structure variable 'Sensor' Sensor.Current[loop_iterator] = (CurrentInput.read()*3.3/(50*rsens)); if(loop_iterator%2 == 0) SensorQuantised.Current[loop_iterator/2] = FCTN_QUANTIZE(cstart,cstep,Sensor.Current[loop_iterator]); else SensorQuantised.Current[(loop_iterator)/2] = SensorQuantised.Current[(loop_iterator)/2]<<4 + FCTN_QUANTIZE(cstart,cstep,Sensor.Current[loop_iterator]); //iterate the select lines from 0 to 7 for(select_line_iterator = 2;select_line_iterator >= 0;select_line_iterator--) { if(SelectLinesB[select_line_iterator] == 0) { SelectLinesB[select_line_iterator] = 1; break; } else SelectLinesB[select_line_iterator] = 0; } wait_us(10.0); // A delay of 10 microseconds between each sensor output. Can be changed. } //update magnetometer data-> //populate values in structure variable 'Sensor' from data to be given by Green SensorQuantised.AngularSpeed[0] = FCTN_QUANTIZE(AngularSpeed_start,AngularSpeed_step,Sensor.AngularSpeed[0]); SensorQuantised.AngularSpeed[0] = SensorQuantised.AngularSpeed[0]<<4 + FCTN_QUANTIZE(AngularSpeed_start,AngularSpeed_step,Sensor.AngularSpeed[1]); SensorQuantised.AngularSpeed[1] = FCTN_QUANTIZE(AngularSpeed_start,AngularSpeed_step,Sensor.AngularSpeed[2]); //update gyro data-> //populate values in structure variable 'Sensor' from data to be given by Green SensorQuantised.Bnewvalue[0] = FCTN_QUANTIZE(Bnewvalue_start,Bnewvalue_step,Sensor.Bnewvalue[0]); SensorQuantised.Bnewvalue[0] = SensorQuantised.Bnewvalue[0]<<4 + FCTN_QUANTIZE(Bnewvalue_start,Bnewvalue_step,Sensor.Bnewvalue[1]); SensorQuantised.Bnewvalue[1] = FCTN_QUANTIZE(Bnewvalue_start,Bnewvalue_step,Sensor.Bnewvalue[2]); //update beacon structure FCTN_WRITE_BEASTRUCT(&Shortbeacon,SensorQuantised);//Shortbeacon is passed }