Updated BAE RTOS

Dependencies:   mbed-rtos mbed

Fork of all_combined_week6 by Harshit Gupta

HK.cpp

Committer:
greenroshks
Date:
2014-07-12
Revision:
4:79b97f9cab00
Child:
6:82153349cc9b

File content as of revision 4:79b97f9cab00:

#include "HK.h"
 
DigitalOut SelectLine3 (p24); // MSB of Select Lines
DigitalOut SelectLine2 (p23);
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;
}
 
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()
{
    
    ShortBeacy ShortBeacon;
    init_beacon(ShortBeacon);
    
    int LoopIterator;
 
    SelectLine0=0;
    SelectLine1=0;
    SelectLine2=0;
    SelectLine3=0;
 
    for(LoopIterator=0; LoopIterator<16; LoopIterator++) {
        
        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)
            SelectLine1=!(SelectLine1);
 
        if(LoopIterator%4==3)
            SelectLine2=!(SelectLine2);
 
        if(LoopIterator%8==7)
            SelectLine3=!(SelectLine3);
        
        wait_us(10.0); //  A delay of 10 microseconds between each sensor output. Can be changed.
 
    }
 
}