From 256c06290b0db37a54eac70a39fb8ac58ac46e9f Mon Sep 17 00:00:00 2001 From: "Michael D. M. Dryden" <mdryden@chem.utoronto.ca> Date: Wed, 20 Jan 2016 18:12:47 -0500 Subject: [PATCH] Fix TCS driver to detect unconnected module. --- DSTAT/src/config/conf_board.h | 2 +- DSTAT/src/experiment.c | 12 +++++++----- DSTAT/src/settings.c | 4 ++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/DSTAT/src/config/conf_board.h b/DSTAT/src/config/conf_board.h index a57fbf6..4d91cab 100644 --- a/DSTAT/src/config/conf_board.h +++ b/DSTAT/src/config/conf_board.h @@ -14,7 +14,7 @@ // Default Settings (only used if EEPROM is empty) #define SETTINGS_MAX5443_OFFSET 0 -#define SETTINGS_TCS_ENABLED 0 +#define SETTINGS_TCS_ENABLED 1 #define SETTINGS_TCS_CLEAR_THRESHOLD 10000U #define SETTINGS_R100_TRIM 0 #define SETTINGS_R3k_TRIM 0 diff --git a/DSTAT/src/experiment.c b/DSTAT/src/experiment.c index e2dde88..3da1d45 100644 --- a/DSTAT/src/experiment.c +++ b/DSTAT/src/experiment.c @@ -140,16 +140,18 @@ void experiment_handler(char command){ if (settings.settings.tcs_enabled > 0){ tcs_readvalues(tcs_data); delay_ms(25); - tcs_readvalues(tcs_data1); // If sensor disconnected, second measurement should be exactly the same + tcs_readvalues(tcs_data1); // If sensor disconnected, second measurement should be exactly the same (unless 0 or saturated) + if (tcs_data[3] == tcs_data1[3]){ + if (!(tcs_data[3] == 0 || tcs_data[3] == 65535)) { + printf("#ERR: Ambient light sensor seems to be disconnected \n\r"); + return; + } + } if (tcs_data[0] > settings.settings.tcs_clear_threshold){ printf("#ERR: Ambient light exceeds threshold %u\n\r", tcs_data[0]); printf("#INFO: TCS—%u %u %u %u\n\r", tcs_data[0], tcs_data[1], tcs_data[2], tcs_data[3]); return; } - else if (tcs_data[3] == tcs_data1[3]){ - printf("#ERR: Ambient light sensor seems to be disconnected \n\r"); - return; - } } else { printf("#ERR: Ambient light sensor disabled.\n\r"); diff --git a/DSTAT/src/settings.c b/DSTAT/src/settings.c index b68b37c..ac6e6ad 100644 --- a/DSTAT/src/settings.c +++ b/DSTAT/src/settings.c @@ -51,8 +51,8 @@ void settings_read_eeprom(void){ settings_restore_defaults(); } printf("#INFO: max5443_offset = %u\n\r", settings.settings.max5443_offset); - printf("#INFO: tls_enabled = %u\n\r", settings.settings.tcs_enabled); - printf("#INFO: tls_clear_threshold = %u\n\r", settings.settings.tcs_clear_threshold); + printf("#INFO: tcs_enabled = %u\n\r", settings.settings.tcs_enabled); + printf("#INFO: tcs_clear_threshold = %u\n\r", settings.settings.tcs_clear_threshold); printf("#INFO: r100_trim = %i\n\r", settings.settings.r100_trim); printf("#INFO: r3k_trim = %i\n\r", settings.settings.r3k_trim); printf("#INFO: r30k_trim = %i\n\r", settings.settings.r30k_trim); -- GitLab