mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2025-07-13 17:57:53 -06:00
⚡️ Optimize speed lookup for AVR
Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com>
This commit is contained in:
parent
3365172e7c
commit
143a8701d5
4 changed files with 176 additions and 181 deletions
|
@ -19,34 +19,36 @@ args = parser.parse_args()
|
|||
cpu_freq = args.cpu_freq * 1000000
|
||||
timer_freq = cpu_freq / args.divider
|
||||
|
||||
print("#ifndef SPEED_LOOKUPTABLE_H")
|
||||
print("#define SPEED_LOOKUPTABLE_H")
|
||||
print("#pragma once")
|
||||
print()
|
||||
print('#include "MarlinCore.h"')
|
||||
print("#if F_CPU == %d" % cpu_freq)
|
||||
print()
|
||||
|
||||
print("const uint16_t speed_lookuptable_fast[256][2] PROGMEM = {")
|
||||
a = [ timer_freq / ((i*256)+(args.cpu_freq*2)) for i in range(256) ]
|
||||
print(" const struct { uint16_t base; uint8_t gain; } speed_lookuptable_fast[256] PROGMEM = {")
|
||||
a = [0 for i in range(8)] + [ int(0.5 + float(timer_freq) / (i*256)) for i in range(8, 256) ]
|
||||
b = [0 for i in range(8)] + [ a[i] - a[i+1] for i in range(8, 255) ]
|
||||
b.append(b[-1])
|
||||
for i in range(32):
|
||||
print(" ", end='')
|
||||
for j in range(8):
|
||||
print("{ %5d, %5d }," % (a[8*i+j], b[8*i+j]), end='')
|
||||
if j < 7: print(" ", end='')
|
||||
if i == 0: print(" // dummy first row")
|
||||
else: print()
|
||||
print(" };")
|
||||
print()
|
||||
|
||||
print(" const uint16_t speed_lookuptable_slow[256][2] PROGMEM = {")
|
||||
a = [ int(0.5 + float(timer_freq) / ((i*8)+(args.cpu_freq*2))) for i in range(256) ]
|
||||
b = [ a[i] - a[i+1] for i in range(255) ]
|
||||
b.append(b[-1])
|
||||
for i in range(32):
|
||||
print(" ", end=' ')
|
||||
print(" ", end='')
|
||||
for j in range(8):
|
||||
print("{%d, %d}," % (a[8*i+j], b[8*i+j]), end=' ')
|
||||
print("{ %5d, %5d }," % (a[8*i+j], b[8*i+j]), end='')
|
||||
if j < 7: print(" ", end='')
|
||||
print()
|
||||
print("};")
|
||||
print()
|
||||
|
||||
print("const uint16_t speed_lookuptable_slow[256][2] PROGMEM = {")
|
||||
a = [ timer_freq / ((i*8)+(args.cpu_freq*2)) for i in range(256) ]
|
||||
b = [ a[i] - a[i+1] for i in range(255) ]
|
||||
b.append(b[-1])
|
||||
for i in range(32):
|
||||
print(" ", end=' ')
|
||||
for j in range(8):
|
||||
print("{%d, %d}," % (a[8*i+j], b[8*i+j]), end=' ')
|
||||
print()
|
||||
print("};")
|
||||
print(" };")
|
||||
print()
|
||||
|
||||
print("#endif")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue