Pranoy Varma
/
mbed_hkfinal
hk tentative jul 9
Fork of mbed_hkfinal by
hkfinal.c@1:8b8bc4aef6f9, 2014-07-09 (annotated)
- Committer:
- pranoysvarma
- Date:
- Wed Jul 09 05:55:31 2014 +0000
- Revision:
- 1:8b8bc4aef6f9
- Parent:
- 0:333cda053c40
hk tentative
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
pranoysvarma | 1:8b8bc4aef6f9 | 1 | #include "hkfinal.h" |
pranoysvarma | 1:8b8bc4aef6f9 | 2 | |
pranoysvarma | 1:8b8bc4aef6f9 | 3 | typedef struct SensorData { |
nbharaths | 0:333cda053c40 | 4 | char Voltage[10]; |
nbharaths | 0:333cda053c40 | 5 | char Current[10]; |
nbharaths | 0:333cda053c40 | 6 | char Temperature[10]; |
nbharaths | 0:333cda053c40 | 7 | //float Battery[2]; |
pranoysvarma | 1:8b8bc4aef6f9 | 8 | }SensorDaty; |
pranoysvarma | 1:8b8bc4aef6f9 | 9 | |
pranoysvarma | 1:8b8bc4aef6f9 | 10 | typedef struct ShortBeacon { |
pranoysvarma | 1:8b8bc4aef6f9 | 11 | char Voltage[1]; |
pranoysvarma | 1:8b8bc4aef6f9 | 12 | char AngularSpeed[2]; |
pranoysvarma | 1:8b8bc4aef6f9 | 13 | char SubsystemStatus[1]; |
pranoysvarma | 1:8b8bc4aef6f9 | 14 | char Temp[3]; |
pranoysvarma | 1:8b8bc4aef6f9 | 15 | char ErrorFlag[1]; |
pranoysvarma | 1:8b8bc4aef6f9 | 16 | }ShortBeacy; |
nbharaths | 0:333cda053c40 | 17 | |
nbharaths | 0:333cda053c40 | 18 | int quantiz(float start,float step,float x) |
nbharaths | 0:333cda053c40 | 19 | { |
pranoysvarma | 1:8b8bc4aef6f9 | 20 | int y=(x-start)/step; |
nbharaths | 0:333cda053c40 | 21 | if(y<=0)y=0; |
nbharaths | 0:333cda053c40 | 22 | if(y>=15)y=15; |
nbharaths | 0:333cda053c40 | 23 | return y; |
nbharaths | 0:333cda053c40 | 24 | } |
nbharaths | 0:333cda053c40 | 25 | |
pranoysvarma | 1:8b8bc4aef6f9 | 26 | void init_beacon(ShortBeacy x){ |
pranoysvarma | 1:8b8bc4aef6f9 | 27 | x.Voltage={1}; |
pranoysvarma | 1:8b8bc4aef6f9 | 28 | x.AngularSpeed={2,3} |
pranoysvarma | 1:8b8bc4aef6f9 | 29 | x.SubsystemStatus={145}; |
pranoysvarma | 1:8b8bc4aef6f9 | 30 | x.Temp={1,2,3}; |
pranoysvarma | 1:8b8bc4aef6f9 | 31 | x.ErrorFlag={3}; |
pranoysvarma | 1:8b8bc4aef6f9 | 32 | } |
pranoysvarma | 1:8b8bc4aef6f9 | 33 | |
nbharaths | 0:333cda053c40 | 34 | void FUNC_HK_MAIN() |
nbharaths | 0:333cda053c40 | 35 | { |
pranoysvarma | 1:8b8bc4aef6f9 | 36 | SensorDaty SensorData; |
pranoysvarma | 1:8b8bc4aef6f9 | 37 | ShortBeacy ShortBeacon; |
pranoysvarma | 1:8b8bc4aef6f9 | 38 | init_beacon(ShortBeacon); |
nbharaths | 0:333cda053c40 | 39 | |
nbharaths | 0:333cda053c40 | 40 | int LoopIterator; |
nbharaths | 0:333cda053c40 | 41 | |
nbharaths | 0:333cda053c40 | 42 | SelectLine0=0; |
nbharaths | 0:333cda053c40 | 43 | SelectLine1=0; |
nbharaths | 0:333cda053c40 | 44 | SelectLine2=0; |
nbharaths | 0:333cda053c40 | 45 | SelectLine3=0; |
nbharaths | 0:333cda053c40 | 46 | |
nbharaths | 0:333cda053c40 | 47 | for(LoopIterator=0; LoopIterator<16; LoopIterator++) { |
nbharaths | 0:333cda053c40 | 48 | |
nbharaths | 0:333cda053c40 | 49 | if(LoopIterator%2==0) { |
pranoysvarma | 1:8b8bc4aef6f9 | 50 | SensorData.Current[LoopIterator]=quantiz(cstart,cstep,(CurrentInput.read()/(50*rsens))); |
pranoysvarma | 1:8b8bc4aef6f9 | 51 | SensorData.Voltage[LoopIterator]=quantiz(vstart,vstep,(VoltageInput.read()/5.37)); |
pranoysvarma | 1:8b8bc4aef6f9 | 52 | SensorData.Temperature[LoopIterator]=quantiz(tstart,tstep,(-90.7*3.18*TemperatureInput.read()+190.1543)); |
nbharaths | 0:333cda053c40 | 53 | } else { |
pranoysvarma | 1:8b8bc4aef6f9 | 54 | SensorData.Current[LoopIterator-1]=Current[LoopIterator-1]<<4+quantiz(cstart,cstep,(CurrentInput.read()/(50*rsens))); |
pranoysvarma | 1:8b8bc4aef6f9 | 55 | SensorData.Voltage[LoopIterator-1]=Voltage[LoopIterator-1]<<4+quantiz(vstart,vstep,(VoltageInput.read()/5.37)); |
pranoysvarma | 1:8b8bc4aef6f9 | 56 | SensorData.Temperature[LoopIterator-1]=Temperature[LoopIterator-1]<<4+quantiz(tstart,tstep,(-90.7*3.18*TemperatureInput.read()+190.1543)); |
nbharaths | 0:333cda053c40 | 57 | } |
nbharaths | 0:333cda053c40 | 58 | // The following lines are used to iterate the select lines from 0 to 15 |
nbharaths | 0:333cda053c40 | 59 | SelectLine0=!(SelectLine0); |
nbharaths | 0:333cda053c40 | 60 | |
nbharaths | 0:333cda053c40 | 61 | if(LoopIterator%2==1) |
nbharaths | 0:333cda053c40 | 62 | SelectLine1=!(SelectLine1); |
nbharaths | 0:333cda053c40 | 63 | |
nbharaths | 0:333cda053c40 | 64 | if(LoopIterator%4==3) |
nbharaths | 0:333cda053c40 | 65 | SelectLine2=!(SelectLine2); |
nbharaths | 0:333cda053c40 | 66 | |
nbharaths | 0:333cda053c40 | 67 | if(LoopIterator%8==7) |
nbharaths | 0:333cda053c40 | 68 | SelectLine3=!(SelectLine3); |
nbharaths | 0:333cda053c40 | 69 | |
nbharaths | 0:333cda053c40 | 70 | wait_us(10.0); // A delay of 10 microseconds between each sensor output. Can be changed. |
nbharaths | 0:333cda053c40 | 71 | |
nbharaths | 0:333cda053c40 | 72 | } |
nbharaths | 0:333cda053c40 | 73 | |
nbharaths | 0:333cda053c40 | 74 | } |