![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
LEX_Threaded_Programming
Dependencies: Heater_V2 MODSERIAL Nanopb FastPWM ADS8568_ADC
Diff: main.cpp
- Revision:
- 31:09d2f3e4ed99
- Parent:
- 30:b28088f244c2
- Child:
- 32:c825071486eb
--- a/main.cpp Sat Nov 16 06:21:24 2019 +0000 +++ b/main.cpp Mon Nov 18 13:49:01 2019 +0000 @@ -11,6 +11,7 @@ #include <iterator> #define BUFFER_SIZE 8192 +#define PRESSURE_SMOOTH_FACTOR 0.9 //UID lookup address and pointer #define UID_ADDR 0x1FFF7A10 @@ -47,11 +48,11 @@ DigitalIn adc_busy(PA_8); //Busy interrupt sig# //Fluidic Control -AnalogIn pressure_1(PA_0); +AnalogIn pressure_0(PA_0); AnalogIn pressure_1(PA_1); DigitalOut pump(PA_4); -DigitalOut valve_1(PA_5); -DigitalOut valve_2(PA_6); +DigitalOut valve_0(PA_5); +DigitalOut valve_1(PA_6); float pressure_in; float pressure_out; @@ -180,10 +181,10 @@ flags.set(0x2); } -void pressure_trigger() -{ - flags.set(0x4); -} +//void pressure_trigger() +//{ +// flags.set(0x4); +//} //Other functions__________________________________________________________________ @@ -210,18 +211,15 @@ } void pressure_control() { - while(1){ - flags.wait_any(0x4,osWaitForever,true); - pressure_in = pressure_1.read(); // fraction of supply voltage as float in range 0-1; values 0.1-0.9 correspond to 0-15PSI using pressure sensor Honeywell HSCSANN015PGAA3 - pressure_out = pressure_2.read(); + pressure_in = pressure_in * PRESSURE_SMOOTH_FACTOR + (1 - PRESSURE_SMOOTH_FACTOR) * pressure_1.read(); + pressure_out = pressure_out * PRESSURE_SMOOTH_FACTOR + (1 - PRESSURE_SMOOTH_FACTOR) * pressure_0.read(); 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 > exp_config.fluidics.pressure_sensor_setpoint_adc) { - led_1 = 0; - pump = 0; - } + led_1 = 1; +// pump = 1; + } + else if (pressure_in > exp_config.fluidics.pressure_sensor_setpoint_adc) { + led_1 = 0; +// pump = 0; } } @@ -267,6 +265,13 @@ int i_board = -1; int i_heater; float drive_cal_a, drive_cal_b; + + // turn off pump and valves and LED drive + pump = 0; + valve_0 = 0; + valve_1 = 0; + camTrigger = 0; + ledDrive = 0; pc.baud(115200); adc.init(); @@ -326,8 +331,8 @@ 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, exp_config.fluidics.pressure_control_loop_interval_ms * 1000); + //pressure_thread.start(& pressure_control); + pressure_tick.attach_us(& pressure_control, exp_config.fluidics.pressure_control_loop_interval_ms * 1000); //Start logging logging_thread.start(& log_state);