![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
LEX_Threaded_Programming
Dependencies: Heater_V2 MODSERIAL Nanopb FastPWM ADS8568_ADC
Diff: main.cpp
- Revision:
- 8:58c6d51957df
- Parent:
- 7:a4fc853feb30
- Child:
- 9:9474da78cec3
diff -r a4fc853feb30 -r 58c6d51957df main.cpp --- a/main.cpp Wed Sep 04 10:18:33 2019 +0000 +++ b/main.cpp Thu Sep 05 08:29:32 2019 +0000 @@ -10,11 +10,13 @@ #include <vector> #include <iterator> +#define BUFFER_SIZE 4096 + Heater * heater; float r_gradient; //setpoint setting -MODSERIAL pc(PA_9, PA_10, 512); //mcu TX, RX, 512 byte TX and RX buffers +MODSERIAL pc(PA_9, PA_10, BUFFER_SIZE); //mcu TX, RX, BUFFER_SIZE byte TX and RX buffers ADS8568_ADC adc(PB_15, PB_14, PB_13, PB_12, PC_15, PC_0, PC_1, PC_2, PC_3); I2C i2c(PB_7, PB_8); //SDA, SCL Timer timer; @@ -73,7 +75,7 @@ memspcr_ExperimentConfiguration exp_config = memspcr_ExperimentConfiguration_init_zero; int buffer_length; size_t message_length; -uint8_t buffer[512]; //FIXME: Needs to be longer +uint8_t buffer[BUFFER_SIZE]; //Functions for reading and decoding the message__________________________________________________ @@ -197,9 +199,8 @@ r_gradient = (it->resistance - it_prev->resistance)/(it->elapsed_time_ms - it_prev->elapsed_time_ms); while ((curr_time = timer.read_ms()) <= it->elapsed_time_ms){ heater->Set_ref(it_prev->resistance + r_gradient * (curr_time - it_prev->elapsed_time_ms)); - - - if (!triggered_flag && curr_time > it_prev->elapsed_time_ms + it->camera_offset_ms) + + if (!triggered_flag && (it->camera_offset_ms > 0) && (curr_time > it_prev->elapsed_time_ms + it->camera_offset_ms)) { //Start camera exposure and turn on LED camTrigger = 0; @@ -209,22 +210,16 @@ led_0 = 1; triggered_flag = true; } - else - { - //Stop camera exposure and turn off LED - camTrigger = 0; - ledDrive = 0; - led_0 = 0; - } - - wait_us(10000); + wait_us(200); } - + //Stop camera exposure and turn off LED at end of time segment + camTrigger = 0; + ledDrive = 0; + led_0 = 0; } } - int main() { pc.baud(115200); @@ -255,7 +250,7 @@ heater = heater_lysis; heater_ID = heater_ID_lysis; } else { - pc.printf("# Error - no heater has been selected"); + pc.printf("# Error - no heater has been selected\n"); return 1; } @@ -268,7 +263,7 @@ while (pc.getcNb()!='s' && !user_0); - pc.printf("# Start signal received"); + pc.printf("# Start signal received\n"); logging_thread.start(& log_state); log_tick.attach_us(& log_trigger,exp_config.logging_interval_ms * 1000); @@ -283,7 +278,8 @@ log_tick.detach(); wait(1); heater->turn_off(); - + + pc.printf("# Finished\n"); return 0;