38 lines
1,013 B
Python
38 lines
1,013 B
Python
#!/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))
|