diff options
Diffstat (limited to 'doc/calc_framerate.py')
-rw-r--r-- | doc/calc_framerate.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/doc/calc_framerate.py b/doc/calc_framerate.py new file mode 100644 index 0000000..aaedc4d --- /dev/null +++ b/doc/calc_framerate.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 + +TIMER_FREQ = 30e6 # MHz + + +with open('main.c') as f: + lines = f.readlines() + +defs = {} +for line in lines: + if line.startswith('#define'): + _pragma, name, val, *_comment = line.split() + val = defs.get(val, val) + defs[name] = val + +print('Bit cycle timings:') +timings_total = 0 +in_array = False +for line in lines: + if not in_array: + if line.startswith('static uint16_t timer_period_lookup'): + in_array = True + else: + if '}' in line: + break + if ',' not in line: + continue + val, *_comment = line.split(',') + for name, defval in defs.items(): + val = val.replace(name, defval) + duration = eval(val) + print(duration) + timings_total += duration + int(defs['RESET_PERIOD_LENGTH']) + +total_len = timings_total/TIMER_FREQ +print('Total cycles:', timings_total) +print('Total cycle length: {:.3f}ms'.format(total_len*1e3)) +print('Frame rate: {:.3f}Hz'.format(1/total_len)) |