You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.5 KiB
53 lines
1.5 KiB
#!/usr/bin/env python |
|
|
|
from __future__ import print_function |
|
from __future__ import division |
|
|
|
""" Generate the stepper delay lookup table for Marlin firmware. """ |
|
|
|
import argparse |
|
|
|
__author__ = "Ben Gamari <bgamari@gmail.com>" |
|
__copyright__ = "Copyright 2012, Ben Gamari" |
|
__license__ = "GPL" |
|
|
|
parser = argparse.ArgumentParser(description=__doc__) |
|
parser.add_argument('-f', '--cpu-freq', type=int, default=16, help='CPU clockrate in MHz (default=16)') |
|
parser.add_argument('-d', '--divider', type=int, default=8, help='Timer/counter pre-scale divider (default=8)') |
|
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() |
|
print('#include "MarlinCore.h"') |
|
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) ] |
|
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("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("#endif") |
|
|
|
|