From 6d05ba3f8a214bd5a1da340e600734b062c0756b Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Wed, 26 Aug 2020 13:32:26 +0200 Subject: msp430-etv: Handle overflows in reported total energy --- bin/msp430-etv | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/bin/msp430-etv b/bin/msp430-etv index 9ed7c97..504f4f1 100755 --- a/bin/msp430-etv +++ b/bin/msp430-etv @@ -212,6 +212,8 @@ if __name__ == "__main__": data = np.empty((data_count - opt["skip"], 4)) + energy_overflow_count = 0 + prev_total_energy = 0 for i, line in enumerate(data_lines): if i >= opt["skip"]: fields = line.split(" ") @@ -222,11 +224,14 @@ if __name__ == "__main__": timestamp, current, voltage, total_energy = map(int, fields[1:]) else: raise RuntimeError('cannot parse line "{}"'.format(line)) + if total_energy < 0 and prev_total_energy > 0: + energy_overflow_count += 1 + prev_total_energy = total_energy + total_energy += energy_overflow_count * (2 ** 32) data[i - opt["skip"]] = [timestamp, current, voltage, total_energy] m_duration_us = data[-1, 0] - data[0, 0] m_energy_nj = data[-1, 3] - data[0, 3] - # mV * nA * us = aJ (1e-18 J) -> use factor 1e-6 to get pJ (1e-12 J) print( "{:d} measurements in {:.2f} s = {:.0f} Hz sample rate".format( -- cgit v1.2.3