vr1.1

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of CDMS_RTOS_v1_1 by Team Fox

Committer:
cholletisaik777
Date:
Fri Jul 17 06:35:40 2015 +0000
Revision:
16:7428828a5da2
Parent:
8:607ae92fa6af
COM INTEGRATION

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cholletisaik777 8:607ae92fa6af 1 #include "mbed.h"
cholletisaik777 8:607ae92fa6af 2 #include "HK_CDMS.h"
cholletisaik777 7:c270a9e37290 3 #include "pin_config.h"
cholletisaik777 8:607ae92fa6af 4 #include "all_funcs.h"
cholletisaik777 7:c270a9e37290 5
cholletisaik777 7:c270a9e37290 6
cholletisaik777 7:c270a9e37290 7 Serial hk_cdms(USBTX, USBRX);
cholletisaik777 7:c270a9e37290 8 //DigitalOut Select_Lines_C[]={PIN85,PIN84,PIN39,PIN38}; //to mux on IF board,from LSB(Select_Lines_C[3]) to MSB(Select_Lines_C[0])
cholletisaik777 7:c270a9e37290 9 DigitalOut Select_Lines_C[]={D7,D6,D5,D4};
cholletisaik777 7:c270a9e37290 10 AnalogIn Temperature_voltage_Input(PIN53); //output from IF mux
cholletisaik777 7:c270a9e37290 11 //AnalogIn Sensor_Input(PIN53); //output from temperature sensor on CDMS
cholletisaik777 7:c270a9e37290 12 char CDMS_HK_DATA[8];
cholletisaik777 7:c270a9e37290 13
cholletisaik777 7:c270a9e37290 14 void FCTN_CDMS_HK_INIT()
cholletisaik777 7:c270a9e37290 15 {
cholletisaik777 7:c270a9e37290 16 Select_Lines_C[0] = Select_Lines_C[1] = Select_Lines_C[2] = Select_Lines_C[3] = 0; //initialisation of variables
cholletisaik777 7:c270a9e37290 17 }
cholletisaik777 7:c270a9e37290 18
cholletisaik777 7:c270a9e37290 19 int quantiz(float l_start,float l_step,float l_x) // accepts min and measured values and step->quantises on a scale 0-15..(4 bit quantisation)
cholletisaik777 7:c270a9e37290 20 {
cholletisaik777 7:c270a9e37290 21 int l_y = (l_x - l_start)/l_step;
cholletisaik777 7:c270a9e37290 22
cholletisaik777 7:c270a9e37290 23 if(l_y <= 0)
cholletisaik777 7:c270a9e37290 24 l_y = 0;
cholletisaik777 7:c270a9e37290 25
cholletisaik777 7:c270a9e37290 26 if(l_y >= 15)
cholletisaik777 7:c270a9e37290 27 l_y = 15;
cholletisaik777 7:c270a9e37290 28
cholletisaik777 7:c270a9e37290 29 return l_y;
cholletisaik777 7:c270a9e37290 30 }
cholletisaik777 7:c270a9e37290 31
cholletisaik777 7:c270a9e37290 32 Sensor_Data Sensor;
cholletisaik777 7:c270a9e37290 33 Sensor_Data_Quantised Sensor_Quantised;
cholletisaik777 7:c270a9e37290 34
cholletisaik777 7:c270a9e37290 35 char* FCTN_CDMS_HK_MAIN()
cholletisaik777 7:c270a9e37290 36 {
cholletisaik777 7:c270a9e37290 37 float l_resistance_thermistor; //declaration of variables
cholletisaik777 7:c270a9e37290 38 float l_voltage_thermistor;
cholletisaik777 7:c270a9e37290 39 float l_Payload_voltage;
cholletisaik777 7:c270a9e37290 40 int l_Loop_Iterator = 0;
cholletisaik777 7:c270a9e37290 41 int l_Select_Line_Iterator = 3;
cholletisaik777 7:c270a9e37290 42
cholletisaik777 7:c270a9e37290 43 for(l_Loop_Iterator = 0; l_Loop_Iterator < 16; l_Loop_Iterator++)
cholletisaik777 7:c270a9e37290 44 {
cholletisaik777 7:c270a9e37290 45
cholletisaik777 7:c270a9e37290 46 l_voltage_thermistor = Temperature_voltage_Input.read()*3.3; //voltage across thermistor
cholletisaik777 7:c270a9e37290 47 l_resistance_thermistor = 24000*l_voltage_thermistor/(3.3 - l_voltage_thermistor); //resistance of thermistor
cholletisaik777 7:c270a9e37290 48 l_Payload_voltage = Temperature_voltage_Input.read()*3.3;
cholletisaik777 7:c270a9e37290 49
cholletisaik777 7:c270a9e37290 50 Sensor.l_Temperature_thermistor[(l_Loop_Iterator)] = 0.00000004*l_resistance_thermistor*l_resistance_thermistor - 0.0039*l_resistance_thermistor + 347.97;
cholletisaik777 7:c270a9e37290 51 Sensor.l_Temperature_sensor[l_Loop_Iterator] = (-90.7*3.3*Temperature_voltage_Input.read() + 190.1543);
cholletisaik777 7:c270a9e37290 52
cholletisaik777 7:c270a9e37290 53 if(l_Loop_Iterator % 2 == 0)
cholletisaik777 7:c270a9e37290 54 {
cholletisaik777 7:c270a9e37290 55 if(l_Loop_Iterator < 4)
cholletisaik777 7:c270a9e37290 56 Sensor_Quantised.l_Temperature_thermistor[(l_Loop_Iterator)/2] = quantiz(tstart_thermistor,tstep_thermistor,Sensor.l_Temperature_thermistor[(l_Loop_Iterator)]);
cholletisaik777 7:c270a9e37290 57
cholletisaik777 7:c270a9e37290 58 else
cholletisaik777 7:c270a9e37290 59 {
cholletisaik777 7:c270a9e37290 60 if(4 < l_Loop_Iterator < 14)
cholletisaik777 7:c270a9e37290 61 Sensor_Quantised.l_Payload_voltage[(l_Loop_Iterator)/2] = Sensor_Quantised.l_Payload_voltage[(l_Loop_Iterator)/2] <<4 + quantiz(tstart,tstep,Sensor.l_Payload_voltage[l_Loop_Iterator]);
cholletisaik777 7:c270a9e37290 62
cholletisaik777 7:c270a9e37290 63 else
cholletisaik777 7:c270a9e37290 64 Sensor_Quantised.l_Temperature_sensor[(l_Loop_Iterator)/2] = quantiz(tstart,tstep,Sensor.l_Temperature_sensor[l_Loop_Iterator]);
cholletisaik777 7:c270a9e37290 65 }
cholletisaik777 7:c270a9e37290 66 }
cholletisaik777 7:c270a9e37290 67
cholletisaik777 7:c270a9e37290 68 else
cholletisaik777 7:c270a9e37290 69 {
cholletisaik777 7:c270a9e37290 70
cholletisaik777 7:c270a9e37290 71 if(l_Loop_Iterator < 4)
cholletisaik777 7:c270a9e37290 72 Sensor_Quantised.l_Temperature_thermistor[(l_Loop_Iterator)/2] = Sensor_Quantised.l_Temperature_thermistor[(l_Loop_Iterator)/2] <<4 + quantiz(tstart_thermistor,tstep_thermistor,Sensor.l_Temperature_thermistor[l_Loop_Iterator]);
cholletisaik777 7:c270a9e37290 73
cholletisaik777 7:c270a9e37290 74 else
cholletisaik777 7:c270a9e37290 75 {
cholletisaik777 7:c270a9e37290 76 if(4 < l_Loop_Iterator < 14)
cholletisaik777 7:c270a9e37290 77 Sensor_Quantised.l_Payload_voltage[(l_Loop_Iterator)/2] = quantiz(tstart,tstep,Sensor.l_Payload_voltage[l_Loop_Iterator]);
cholletisaik777 7:c270a9e37290 78
cholletisaik777 7:c270a9e37290 79 else
cholletisaik777 7:c270a9e37290 80 Sensor_Quantised.l_Temperature_sensor[(l_Loop_Iterator)/2] = Sensor_Quantised.l_Temperature_sensor[(l_Loop_Iterator)/2] <<4 + quantiz(tstart,tstep,Sensor.l_Temperature_sensor[l_Loop_Iterator]);
cholletisaik777 7:c270a9e37290 81
cholletisaik777 7:c270a9e37290 82 }
cholletisaik777 7:c270a9e37290 83 }
cholletisaik777 7:c270a9e37290 84
cholletisaik777 7:c270a9e37290 85
cholletisaik777 7:c270a9e37290 86
cholletisaik777 7:c270a9e37290 87 // The following lines are used to iterate the select lines from 0 to 15
cholletisaik777 7:c270a9e37290 88 for(l_Select_Line_Iterator = 3;l_Select_Line_Iterator >= 0;l_Select_Line_Iterator--)
cholletisaik777 7:c270a9e37290 89 {
cholletisaik777 7:c270a9e37290 90 if(Select_Lines_C[l_Select_Line_Iterator] == 0)
cholletisaik777 7:c270a9e37290 91 {
cholletisaik777 7:c270a9e37290 92 Select_Lines_C[l_Select_Line_Iterator] = 1;
cholletisaik777 7:c270a9e37290 93 break;
cholletisaik777 7:c270a9e37290 94 }
cholletisaik777 7:c270a9e37290 95 else Select_Lines_C[l_Select_Line_Iterator] = 0;
cholletisaik777 7:c270a9e37290 96 printf("%d\n",l_Select_Line_Iterator);
cholletisaik777 7:c270a9e37290 97 }
cholletisaik777 7:c270a9e37290 98
cholletisaik777 7:c270a9e37290 99 wait_us(10.0); // A delay of 10 microseconds between each sensor output. Can be changed.
cholletisaik777 7:c270a9e37290 100 }
cholletisaik777 7:c270a9e37290 101 printf("vol %f temp %f",Temperature_voltage_Input.read()*3.3,-90.7*3.3*Temperature_voltage_Input.read() + 190.1543 );
cholletisaik777 7:c270a9e37290 102 printf("CDMS_HK Data is Temperature_sensor=%s, l_Temperature_thermistor=%s, Payload_voltage=%s ",Sensor_Quantised.l_Temperature_sensor,Sensor_Quantised.l_Temperature_thermistor,Sensor_Quantised.l_Payload_voltage);
cholletisaik777 7:c270a9e37290 103 strcpy (CDMS_HK_DATA,Sensor_Quantised.l_Temperature_sensor);
cholletisaik777 7:c270a9e37290 104 strcat (CDMS_HK_DATA,Sensor_Quantised.l_Temperature_thermistor);
cholletisaik777 7:c270a9e37290 105 strcat (CDMS_HK_DATA,Sensor_Quantised.l_Payload_voltage);
cholletisaik777 7:c270a9e37290 106 return(CDMS_HK_DATA);
cholletisaik777 7:c270a9e37290 107 }