From: Jan "Yenya" Kasprzak Date: Sat, 23 May 2015 15:26:02 +0000 (+0200) Subject: Maximum distances as modbus registers X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?p=openparking.git;a=commitdiff_plain;h=8ba0f3fe46cbdaab06c1cb4966f54d9e1cdd67ff Maximum distances as modbus registers --- 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