Loading bin/msp430-etv +26 −2 Original line number Original line Diff line number Diff line Loading @@ -26,7 +26,7 @@ def show_help(): USAGE USAGE msp430-etv [--load <file> | <measurement duration>] [--save <file>] msp430-etv [--load <file> | <measurement duration>] [--save <file>] [--skip <count>] [--plot] [--stat] [--skip <count>] [--threshold <power>] [--plot] [--stat] DESCRIPTION DESCRIPTION Loading @@ -52,7 +52,7 @@ OPTIONS if __name__ == '__main__': if __name__ == '__main__': try: try: optspec = ('help load= save= skip= plot stat') optspec = ('help load= save= skip= threshold= plot stat') raw_opts, args = getopt.getopt(sys.argv[1:], "", optspec.split(' ')) raw_opts, args = getopt.getopt(sys.argv[1:], "", optspec.split(' ')) for option, parameter in raw_opts: for option, parameter in raw_opts: Loading @@ -71,6 +71,9 @@ if __name__ == '__main__': else: else: opt['skip'] = 0 opt['skip'] = 0 if 'threshold' in opt: opt['threshold'] = float(opt['threshold']) except getopt.GetoptError as err: except getopt.GetoptError as err: print(err) print(err) sys.exit(2) sys.exit(2) Loading Loading @@ -110,6 +113,27 @@ if __name__ == '__main__': print('Calculated energy: U*I*t = {:f} J'.format(m_calc_energy)) print('Calculated energy: U*I*t = {:f} J'.format(m_calc_energy)) print('Energy deviation: {:.1f}%'.format(m_energy_deviation * 100)) print('Energy deviation: {:.1f}%'.format(m_energy_deviation * 100)) if 'threshold' in opt: power = data[:, 1] * data[:, 2] peaks = [] peak_start = -1 for i, dp in enumerate(power): if dp >= opt['threshold'] and peak_start == -1: peak_start = i elif dp < opt['threshold'] and peak_start != -1: peaks.append((peak_start, i)) peak_start = -1 for peak in peaks: duration = data[peak[1]-1, 0] - data[peak[0], 0] print('{:.2f}ms peak ({:f} -> {:f})'.format(duration * 1000, data[peak[0], 0], data[peak[1]-1, 0])) print(' {:f} µJ / mean {:f} µW'.format( np.mean(power[peak[0] : peak[1]]) * duration * 1e6, np.mean(power[peak[0] : peak[1]]) * 1e6 )) if 'save' in opt: if 'save' in opt: with open(opt['save'], 'w') as f: with open(opt['save'], 'w') as f: f.write(log_data) f.write(log_data) Loading Loading
bin/msp430-etv +26 −2 Original line number Original line Diff line number Diff line Loading @@ -26,7 +26,7 @@ def show_help(): USAGE USAGE msp430-etv [--load <file> | <measurement duration>] [--save <file>] msp430-etv [--load <file> | <measurement duration>] [--save <file>] [--skip <count>] [--plot] [--stat] [--skip <count>] [--threshold <power>] [--plot] [--stat] DESCRIPTION DESCRIPTION Loading @@ -52,7 +52,7 @@ OPTIONS if __name__ == '__main__': if __name__ == '__main__': try: try: optspec = ('help load= save= skip= plot stat') optspec = ('help load= save= skip= threshold= plot stat') raw_opts, args = getopt.getopt(sys.argv[1:], "", optspec.split(' ')) raw_opts, args = getopt.getopt(sys.argv[1:], "", optspec.split(' ')) for option, parameter in raw_opts: for option, parameter in raw_opts: Loading @@ -71,6 +71,9 @@ if __name__ == '__main__': else: else: opt['skip'] = 0 opt['skip'] = 0 if 'threshold' in opt: opt['threshold'] = float(opt['threshold']) except getopt.GetoptError as err: except getopt.GetoptError as err: print(err) print(err) sys.exit(2) sys.exit(2) Loading Loading @@ -110,6 +113,27 @@ if __name__ == '__main__': print('Calculated energy: U*I*t = {:f} J'.format(m_calc_energy)) print('Calculated energy: U*I*t = {:f} J'.format(m_calc_energy)) print('Energy deviation: {:.1f}%'.format(m_energy_deviation * 100)) print('Energy deviation: {:.1f}%'.format(m_energy_deviation * 100)) if 'threshold' in opt: power = data[:, 1] * data[:, 2] peaks = [] peak_start = -1 for i, dp in enumerate(power): if dp >= opt['threshold'] and peak_start == -1: peak_start = i elif dp < opt['threshold'] and peak_start != -1: peaks.append((peak_start, i)) peak_start = -1 for peak in peaks: duration = data[peak[1]-1, 0] - data[peak[0], 0] print('{:.2f}ms peak ({:f} -> {:f})'.format(duration * 1000, data[peak[0], 0], data[peak[1]-1, 0])) print(' {:f} µJ / mean {:f} µW'.format( np.mean(power[peak[0] : peak[1]]) * duration * 1e6, np.mean(power[peak[0] : peak[1]]) * 1e6 )) if 'save' in opt: if 'save' in opt: with open(opt['save'], 'w') as f: with open(opt['save'], 'w') as f: f.write(log_data) f.write(log_data) Loading