![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
LEX_Threaded_Programming
Dependencies: Heater_V2 MODSERIAL Nanopb FastPWM ADS8568_ADC
Diff: main.cpp
- 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);