LEX_Threaded_Programming

Dependencies:   Heater_V2 MODSERIAL Nanopb FastPWM ADS8568_ADC

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;