QITH FLAGS
Dependencies: FreescaleIAP mbed-rtos mbed
Fork of TF_conops_BAE1_3 by
EPS.cpp@0:246d1b5f11ae, 2015-06-30 (annotated)
- 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?
User | Revision | Line number | New 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 |