LEX_Threaded_Programming

Dependencies:   Heater_V2 MODSERIAL Nanopb FastPWM ADS8568_ADC

Revision:
20:ccbe2a03893d
Parent:
19:8154688252fd
Child:
22:f65353f6e935
--- a/main.cpp	Mon Sep 23 17:30:25 2019 +0000
+++ b/main.cpp	Tue Sep 24 08:38:40 2019 +0000
@@ -52,8 +52,6 @@
 
 float pressure_in;
 float pressure_out;
-float pressure_set_low;  // update to define pressure setpoints using variables from protobuf
-float pressure_set_high;
 
 //Heater Control
 FastPWM drive_1(PC_9);
@@ -212,11 +210,11 @@
     while(1){
         flags.wait_any(0x4,osWaitForever,true);
         pressure_in = pressure_1.read();
-        if (pressure_in < pressure_set_low) {
+        if (pressure_in < exp_config.fluidics.pressure_sensor_setpoint_adc - exp_config.fluidics.pressure_sensor_hysteresis_adc) {
             led_1 = 1;
             pump = 1;
         }
-        else if (pressure_in > pressure_set_high) {
+        else if (pressure_in > exp_config.fluidics.pressure_sensor_setpoint_adc) {
             led_1 = 0;
             pump = 0;
         }
@@ -296,7 +294,6 @@
     decode_message();
     pc.printf("# Message decoded\n");
 
-
     //Select heater
     if (exp_config.selected_heater == memspcr_ExperimentConfiguration_Heater_HEATER_1)
         i_heater = 0;
@@ -313,7 +310,7 @@
     drive_cal_b = drive_board_cal[i_board][i_heater][1];
         
     pc.printf("# Heater: %d\n", heater_ID);
-    pc.printf("# Calibration: %10.6f, %10.6f\n", drive_cal_a, drive_cal_b);
+    pc.printf("# Drive board calibration: %10.6f, %10.6f\n", drive_cal_a, drive_cal_b);
 
     //Define heaters
     Heater * heater_1 = new Heater(i_port_1, v_port_1, drive_cal_a, drive_cal_b, & drive_1, & guard_1, & adc, adc_busy, exp_config.thermal);
@@ -323,12 +320,15 @@
     else
         heater = heater_2;
     
+    //Start pressure control
+    pc.printf("# Pressure setpoint: %10.6f hystersess: %10.6f\n",exp_config.fluidics.pressure_sensor_setpoint_adc, exp_config.fluidics.pressure_sensor_hysteresis_adc);
     pc.printf("# Waiting for signal to begin pressure control (type p or press button 0)\n");
     while (pc.getcNb()!='p' && !user_0);
     pc.printf("# Pressure control start signal received\n");
     pressure_thread.start(& pressure_control);
-    pressure_tick.attach_us(& pressure_trigger, 100000);  // update to protobuf variable
+    pressure_tick.attach_us(& pressure_trigger, exp_config.fluidics.pressure_control_loop_interval_ms * 1000); 
 
+    //Start temperature control
     pc.printf("# Waiting for signal to begin temperature control (type s or press button 0)\n");
     while (pc.getcNb()!='s' && !user_0);
     pc.printf("# Temperature control start signal received\n");
@@ -337,6 +337,7 @@
     heater_control.start(& temp_control);
     heat_tick.attach_us(& temp_trigger,exp_config.thermal.control_loop_interval_ms * 1000);  
 
+    //Start logging
     logging_thread.start(& log_state);
     log_tick.attach_us(& log_trigger,exp_config.logging_interval_ms * 1000);