QITH FLAGS

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of TF_conops_BAE1_3 by Team Fox

Committer:
sakthipriya
Date:
Tue Jun 30 05:55:48 2015 +0000
Revision:
0:246d1b5f11ae
Child:
1:7185136654ce
conops in progress. to check if individual codes are r8

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sakthipriya 0:246d1b5f11ae 1 #include "EPS.h"
sakthipriya 0:246d1b5f11ae 2 #include "pin_config.h"
sakthipriya 0:246d1b5f11ae 3
sakthipriya 0:246d1b5f11ae 4
sakthipriya 0:246d1b5f11ae 5
sakthipriya 0:246d1b5f11ae 6 //----------------------------------------------------EPS INIT---------------------------------------------------------------------------//
sakthipriya 0:246d1b5f11ae 7 void FCTN_EPS_INIT()
sakthipriya 0:246d1b5f11ae 8 {
sakthipriya 0:246d1b5f11ae 9 //FCTN_BTRY_GAUGE //read soc value
sakthipriya 0:246d1b5f11ae 10 //FCTN_BTRY_TEMP
sakthipriya 0:246d1b5f11ae 11 }
sakthipriya 0:246d1b5f11ae 12
sakthipriya 0:246d1b5f11ae 13
sakthipriya 0:246d1b5f11ae 14 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)
sakthipriya 0:246d1b5f11ae 15 {
sakthipriya 0:246d1b5f11ae 16 int quant_data = (input_data - start)/step;
sakthipriya 0:246d1b5f11ae 17 if(quant_data <= 0)
sakthipriya 0:246d1b5f11ae 18 quant_data = 0;
sakthipriya 0:246d1b5f11ae 19 if(quant_data >= 15)
sakthipriya 0:246d1b5f11ae 20 quant_data = 15;
sakthipriya 0:246d1b5f11ae 21 return quant_data;
sakthipriya 0:246d1b5f11ae 22 }
sakthipriya 0:246d1b5f11ae 23
sakthipriya 0:246d1b5f11ae 24 void FCTN_WRITE_BEASTRUCT(ShortBeacy* x,SensorDataQuantised y)
sakthipriya 0:246d1b5f11ae 25 {
sakthipriya 0:246d1b5f11ae 26 (*x).Voltage[0] = 2; //quantised value
sakthipriya 0:246d1b5f11ae 27 (*x).Temp[0] = y.PanelTemperature[0]; //quantised value
sakthipriya 0:246d1b5f11ae 28 (*x).Temp[1] = y.PanelTemperature[1]; //quantised value
sakthipriya 0:246d1b5f11ae 29 (*x).AngularSpeed[0] = y.AngularSpeed[0];
sakthipriya 0:246d1b5f11ae 30 (*x).AngularSpeed[1] = y.AngularSpeed[1];
sakthipriya 0:246d1b5f11ae 31
sakthipriya 0:246d1b5f11ae 32 (*x).SubsystemStatus[0] = 145; //dummy values----------to be changed-------------------
sakthipriya 0:246d1b5f11ae 33 (*x).ErrorFlag[0] = 3; //dummy values----------to be changed-------------------
sakthipriya 0:246d1b5f11ae 34 }
sakthipriya 0:246d1b5f11ae 35
sakthipriya 0:246d1b5f11ae 36 SensorData Sensor;
sakthipriya 0:246d1b5f11ae 37 SensorDataQuantised SensorQuantised;
sakthipriya 0:246d1b5f11ae 38 ShortBeacy Shortbeacon;
sakthipriya 0:246d1b5f11ae 39
sakthipriya 0:246d1b5f11ae 40 void FCTN_EPS_MAIN()
sakthipriya 0:246d1b5f11ae 41 {
sakthipriya 0:246d1b5f11ae 42 SelectLinesA[0] = SelectLinesA[1] = SelectLinesA[2] = SelectLinesA[3] = 0;
sakthipriya 0:246d1b5f11ae 43 SelectLinesB[0] = SelectLinesB[1] = SelectLinesB[2] = 0; //initialise all selectlines to zeroes->1st line of muxes selected
sakthipriya 0:246d1b5f11ae 44 int loop_iterator = 0;
sakthipriya 0:246d1b5f11ae 45 int select_line_iterator = 3;
sakthipriya 0:246d1b5f11ae 46
sakthipriya 0:246d1b5f11ae 47 for(loop_iterator = 0; loop_iterator < 16; loop_iterator++) //measurement from voltage sensor=> 16 sensors in place
sakthipriya 0:246d1b5f11ae 48 {
sakthipriya 0:246d1b5f11ae 49 //read the sensor values and stores them in 'SensorData' structure's variable 'Sensor'
sakthipriya 0:246d1b5f11ae 50 Sensor.Voltage[loop_iterator] = (VoltageInput.read()*3.3*5.545454);//resistors in voltage divider=>15Mohm,3.3Mohm
sakthipriya 0:246d1b5f11ae 51
sakthipriya 0:246d1b5f11ae 52 if(loop_iterator%2 == 0)
sakthipriya 0:246d1b5f11ae 53 SensorQuantised.Voltage[loop_iterator/2] = FCTN_QUANTIZE(vstart,vstep,Sensor.Voltage[loop_iterator]);
sakthipriya 0:246d1b5f11ae 54
sakthipriya 0:246d1b5f11ae 55 else
sakthipriya 0:246d1b5f11ae 56 SensorQuantised.Voltage[(loop_iterator)/2] = SensorQuantised.Voltage[(loop_iterator)/2]<<4 + FCTN_QUANTIZE(vstart,vstep,Sensor.Voltage[loop_iterator]);
sakthipriya 0:246d1b5f11ae 57
sakthipriya 0:246d1b5f11ae 58 //iterate the select lines from 0 to 15
sakthipriya 0:246d1b5f11ae 59 for(select_line_iterator = 3;select_line_iterator >= 0;select_line_iterator--)
sakthipriya 0:246d1b5f11ae 60 {
sakthipriya 0:246d1b5f11ae 61 if(SelectLinesA[select_line_iterator] == 0)
sakthipriya 0:246d1b5f11ae 62 {
sakthipriya 0:246d1b5f11ae 63 SelectLinesA[select_line_iterator] = 1;
sakthipriya 0:246d1b5f11ae 64 break;
sakthipriya 0:246d1b5f11ae 65 }
sakthipriya 0:246d1b5f11ae 66 else SelectLinesA[select_line_iterator] = 0;
sakthipriya 0:246d1b5f11ae 67 }
sakthipriya 0:246d1b5f11ae 68
sakthipriya 0:246d1b5f11ae 69 wait_us(10.0); // A delay of 10 microseconds between each sensor output. Can be changed.
sakthipriya 0:246d1b5f11ae 70 }
sakthipriya 0:246d1b5f11ae 71
sakthipriya 0:246d1b5f11ae 72
sakthipriya 0:246d1b5f11ae 73 //measurement from current sensor=> 8 sensors in place
sakthipriya 0:246d1b5f11ae 74 for(loop_iterator = 0; loop_iterator < 8; loop_iterator++)
sakthipriya 0:246d1b5f11ae 75 {
sakthipriya 0:246d1b5f11ae 76 //read the sensor values and stores them in 'SensorData' structure variable 'Sensor'
sakthipriya 0:246d1b5f11ae 77 Sensor.Current[loop_iterator] = (CurrentInput.read()*3.3/(50*rsens));
sakthipriya 0:246d1b5f11ae 78 if(loop_iterator%2 == 0)
sakthipriya 0:246d1b5f11ae 79 SensorQuantised.Current[loop_iterator/2] = FCTN_QUANTIZE(cstart,cstep,Sensor.Current[loop_iterator]);
sakthipriya 0:246d1b5f11ae 80 else
sakthipriya 0:246d1b5f11ae 81 SensorQuantised.Current[(loop_iterator)/2] = SensorQuantised.Current[(loop_iterator)/2]<<4 + FCTN_QUANTIZE(cstart,cstep,Sensor.Current[loop_iterator]);
sakthipriya 0:246d1b5f11ae 82
sakthipriya 0:246d1b5f11ae 83 //iterate the select lines from 0 to 7
sakthipriya 0:246d1b5f11ae 84 for(select_line_iterator = 2;select_line_iterator >= 0;select_line_iterator--)
sakthipriya 0:246d1b5f11ae 85 {
sakthipriya 0:246d1b5f11ae 86 if(SelectLinesB[select_line_iterator] == 0)
sakthipriya 0:246d1b5f11ae 87 {
sakthipriya 0:246d1b5f11ae 88 SelectLinesB[select_line_iterator] = 1;
sakthipriya 0:246d1b5f11ae 89 break;
sakthipriya 0:246d1b5f11ae 90 }
sakthipriya 0:246d1b5f11ae 91 else SelectLinesB[select_line_iterator] = 0;
sakthipriya 0:246d1b5f11ae 92
sakthipriya 0:246d1b5f11ae 93 }
sakthipriya 0:246d1b5f11ae 94
sakthipriya 0:246d1b5f11ae 95 wait_us(10.0); // A delay of 10 microseconds between each sensor output. Can be changed.
sakthipriya 0:246d1b5f11ae 96 }
sakthipriya 0:246d1b5f11ae 97
sakthipriya 0:246d1b5f11ae 98
sakthipriya 0:246d1b5f11ae 99
sakthipriya 0:246d1b5f11ae 100 //update magnetometer data->
sakthipriya 0:246d1b5f11ae 101 //populate values in structure variable 'Sensor' from data to be given by Green
sakthipriya 0:246d1b5f11ae 102 SensorQuantised.AngularSpeed[0] = FCTN_QUANTIZE(AngularSpeed_start,AngularSpeed_step,Sensor.AngularSpeed[0]);
sakthipriya 0:246d1b5f11ae 103 SensorQuantised.AngularSpeed[0] = SensorQuantised.AngularSpeed[0]<<4 + FCTN_QUANTIZE(AngularSpeed_start,AngularSpeed_step,Sensor.AngularSpeed[1]);
sakthipriya 0:246d1b5f11ae 104 SensorQuantised.AngularSpeed[1] = FCTN_QUANTIZE(AngularSpeed_start,AngularSpeed_step,Sensor.AngularSpeed[2]);
sakthipriya 0:246d1b5f11ae 105
sakthipriya 0:246d1b5f11ae 106 //update gyro data->
sakthipriya 0:246d1b5f11ae 107 //populate values in structure variable 'Sensor' from data to be given by Green
sakthipriya 0:246d1b5f11ae 108 SensorQuantised.Bnewvalue[0] = FCTN_QUANTIZE(Bnewvalue_start,Bnewvalue_step,Sensor.Bnewvalue[0]);
sakthipriya 0:246d1b5f11ae 109 SensorQuantised.Bnewvalue[0] = SensorQuantised.Bnewvalue[0]<<4 + FCTN_QUANTIZE(Bnewvalue_start,Bnewvalue_step,Sensor.Bnewvalue[1]);
sakthipriya 0:246d1b5f11ae 110 SensorQuantised.Bnewvalue[1] = FCTN_QUANTIZE(Bnewvalue_start,Bnewvalue_step,Sensor.Bnewvalue[2]);
sakthipriya 0:246d1b5f11ae 111
sakthipriya 0:246d1b5f11ae 112 //update beacon structure
sakthipriya 0:246d1b5f11ae 113 FCTN_WRITE_BEASTRUCT(&Shortbeacon,SensorQuantised);//Shortbeacon is passed
sakthipriya 0:246d1b5f11ae 114
sakthipriya 0:246d1b5f11ae 115 }
sakthipriya 0:246d1b5f11ae 116
sakthipriya 0:246d1b5f11ae 117
sakthipriya 0:246d1b5f11ae 118