From b69e04c4ac85e36f1805161edbad7c361179b68e Mon Sep 17 00:00:00 2001 From: Bart Van Der Meerssche Date: Sat, 14 Nov 2009 23:51:43 +0000 Subject: [PATCH] uc: Safeguard against potential race condition. Thx Wutje! --- uc/main.c | 10 +++++++--- uc/main.h | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/uc/main.c b/uc/main.c index 5d9eda8..6fa1ac9 100644 --- a/uc/main.c +++ b/uc/main.c @@ -36,7 +36,7 @@ #include // variable declarations -volatile struct state aux[4] = {{false, false, START}, {false, false, START}, {false, false, START}, {false, false, START}}; +volatile struct state aux[4] = {{false, false, START, 0}, {false, false, START, 0}, {false, false, START, 0}, {false, false, START, 0}}; volatile struct sensor EEMEM EEPROM_measurements[4] = {{SENSOR0, START}, {SENSOR1, START}, {SENSOR2, START}, {SENSOR3, START}}; volatile struct sensor measurements[4]; @@ -75,6 +75,7 @@ ISR(TIMER2_OVF_vect) { measurements[0].value++; aux[0].pulse = true; aux[0].nano -= 1000000000; + aux[0].debug = ADC; } // start a new ADC conversion ADCSRA |= (1<value; char pulse[49]; + cli(); + uint32_t value = measurement->value; + sei(); + // generate pulse message structure strcpy(pulse, "pls "); strcpy(&pulse[4], measurement->id); @@ -240,7 +244,7 @@ void loop() if (i == 0) { //debugging printString("msg ADC0 sample value: "); - printIntegerInBase((unsigned long)ADC, 10); + printIntegerInBase((unsigned long)aux[0].debug, 10); printString("\n"); } send((const struct sensor *)&measurements[i]); diff --git a/uc/main.h b/uc/main.h index 6563e41..06b6858 100644 --- a/uc/main.h +++ b/uc/main.h @@ -54,6 +54,7 @@ struct state { boolean pulse; boolean toggle; uint32_t nano; + uint16_t debug; }; struct sensor {