From 8ba0f3fe46cbdaab06c1cb4966f54d9e1cdd67ff Mon Sep 17 00:00:00 2001 From: "Jan \"Yenya\" Kasprzak" Date: Sat, 23 May 2015 17:26:02 +0200 Subject: [PATCH] Maximum distances as modbus registers --- firmware/firmware.c | 4 ++++ firmware/modbus.h | 2 +- openparking.otl | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/firmware/firmware.c b/firmware/firmware.c index fb095f5..f890c15 100644 --- a/firmware/firmware.c +++ b/firmware/firmware.c @@ -24,6 +24,7 @@ #define distances (hold_regs+MB_N_HOLD_REGS_EEPROM+1) #define free_bitmap (hold_regs[MB_N_HOLD_REGS_EEPROM+13]) #define err_bitmap (hold_regs[MB_N_HOLD_REGS_EEPROM+14]) +#define max_distances (hold_regs+MB_N_HOLD_REGS_EEPROM+21) static void pull_trigger(uint8_t trig) { @@ -78,6 +79,9 @@ static void do_measurement(unsigned char trig) new_d = now - starttimes[i]; old_d = distances[idx]; + if (new_d > max_distances[idx]) + max_distances[idx] = new_d; + if (old_d == 0 || old_d == -1) { distances[idx] = new_d; diff --git a/firmware/modbus.h b/firmware/modbus.h index 937b8e8..9f5afa6 100644 --- a/firmware/modbus.h +++ b/firmware/modbus.h @@ -19,7 +19,7 @@ typedef enum { } mb_exception; #define MB_HOLD_REGS_BASE 1000 -#define MB_N_HOLD_REGS 40 +#define MB_N_HOLD_REGS 60 #define MB_N_HOLD_REGS_EEPROM 20 extern uint16_t hold_regs[MB_N_HOLD_REGS]; #define mb_unit_id (hold_regs[0]) diff --git a/openparking.otl b/openparking.otl index 0cc4eeb..5d40d70 100644 --- a/openparking.otl +++ b/openparking.otl @@ -131,6 +131,7 @@ Software kontroleru: 1021-1032 measured distances 1033 free_bitmap (1=free) 1034 err_bitmap (1=err) + 1041-1052 maximum measured distances Hlavni smycka, cca 5 vterin: ? zmerit teplotu z ATmegy -- 2.43.0