Rtos code for BAE microcontroller, IITMSAT

Dependencies:   mbed-rtos mbed

Revision:
3:307c56629df0
Parent:
2:1792c9cda669
--- a/HK.cpp	Fri Jul 04 11:30:40 2014 +0000
+++ b/HK.cpp	Wed Jul 09 09:03:11 2014 +0000
@@ -1,25 +1,42 @@
-
-#include "HK.h" 
-
- SensorData Sensor;
+#include "HK.h"
  
- DigitalOut SelectLine3 (p24); // MSB of Select Lines
- 
- DigitalOut SelectLine2 (p23);
+DigitalOut SelectLine3 (p24); // MSB of Select Lines
+DigitalOut SelectLine2 (p23);
+DigitalOut SelectLine1 (p22);
+DigitalOut SelectLine0 (p21); // LSB of Select Lines
  
- DigitalOut SelectLine1 (p22);
- 
- DigitalOut SelectLine0 (p21); // LSB of Select Lines
+AnalogIn CurrentInput(p15); // Input from Current Multiplexer
+AnalogIn VoltageInput(p16); // Input from Voltage Multiplexer
+AnalogIn TemperatureInput(p17); // input from Temperature Multiplexer
+
+SensorData Sensor; 
+int quantiz(float start,float step,float x)
+{
+    int y=(x-start)/step;
+    if(y<=0)y=0;
+    if(y>=15)y=15;
+    return y;
+}
  
- AnalogIn AnalogInput(p15); // Input from Multiplexer
- 
+void init_beacon(ShortBeacy x){
+    x.Voltage[0]=1;
+    x.AngularSpeed[0]=2;
+    x.AngularSpeed[1]=3;
+    x.SubsystemStatus[0]=145;
+    x.Temp[0]=1;
+    x.Temp[1]=2;
+    x.Temp[2]=3;
+    x.ErrorFlag[0]=3;
+}
  
- 
-void  FUNC_HK_MAIN()
+void FUNC_HK_MAIN()
 {
+    
+    ShortBeacy ShortBeacon;
+    init_beacon(ShortBeacon);
  
     int LoopIterator;
-    printf("\nHK invoked\n");
+ 
     SelectLine0=0;
     SelectLine1=0;
     SelectLine2=0;
@@ -27,22 +44,16 @@
  
     for(LoopIterator=0; LoopIterator<16; LoopIterator++) {
  
-        float SignalValue= AnalogInput.read()*3.180; // Calculation using ADC Reference
-        float Temperature=-90.7*SignalValue+190.1543; // Linear Equation for Temperature Sensor
- 
- 
-        if(LoopIterator%3==0)
-            Sensor.Current[LoopIterator/3]=SignalValue/4.37; // Equation for Current Sensor
- 
-        if(LoopIterator%3==1)
-            Sensor.Voltage[LoopIterator/3]=SignalValue*4.64; // Equation for Voltage Sensor  || GAIN NEEDS TO BE CHANGED ||
- 
- 
-        if(LoopIterator%3==2)
-            Sensor.Temp[LoopIterator/3]=Temperature;
- 
- 
-        // The following lines are used to iterate the select lines from 0 to 15
+        if(LoopIterator%2==0) {
+            Sensor.Current[LoopIterator/2]=quantiz(cstart,cstep,(CurrentInput.read()/(50*rsens)));
+            Sensor.Voltage[LoopIterator/2]=quantiz(vstart,vstep,(VoltageInput.read()/5.37));
+            Sensor.Temperature[LoopIterator/2]=quantiz(tstart,tstep,(-90.7*3.18*TemperatureInput.read()+190.1543));
+        } else {
+            Sensor.Current[(LoopIterator-1)/2]=Sensor.Current[LoopIterator-1]<<4+quantiz(cstart,cstep,(CurrentInput.read()/(50*rsens)));
+            Sensor.Voltage[(LoopIterator-1)/2]=Sensor.Voltage[LoopIterator-1]<<4+quantiz(vstart,vstep,(VoltageInput.read()/5.37));
+            Sensor.Temperature[(LoopIterator-1)/2]=Sensor.Temperature[LoopIterator-1]<<4+quantiz(tstart,tstep,(-90.7*3.18*TemperatureInput.read()+190.1543));
+        }
+// The following lines are used to iterate the select lines from 0 to 15
         SelectLine0=!(SelectLine0);
  
         if(LoopIterator%2==1)
@@ -54,10 +65,8 @@
         if(LoopIterator%8==7)
             SelectLine3=!(SelectLine3);
  
-        wait_us(10.0); // A delay of 10 microseconds between each sensor output. Can be changed.
+        wait_us(10.0); //  A delay of 10 microseconds between each sensor output. Can be changed.
+ 
     }
  
-}
-
-
-
+}
\ No newline at end of file