1 |
ron |
1 |
#!/usr/bin/env python
|
|
|
2 |
|
|
|
3 |
""" Generate the stepper delay lookup table for Marlin firmware. """
|
|
|
4 |
|
|
|
5 |
import argparse
|
|
|
6 |
|
|
|
7 |
__author__ = "Ben Gamari <bgamari@gmail.com>"
|
|
|
8 |
__copyright__ = "Copyright 2012, Ben Gamari"
|
|
|
9 |
__license__ = "GPL"
|
|
|
10 |
|
|
|
11 |
parser = argparse.ArgumentParser(description=__doc__)
|
|
|
12 |
parser.add_argument('-f', '--cpu-freq', type=int, default=16, help='CPU clockrate in MHz (default=16)')
|
|
|
13 |
parser.add_argument('-d', '--divider', type=int, default=8, help='Timer/counter pre-scale divider (default=8)')
|
|
|
14 |
args = parser.parse_args()
|
|
|
15 |
|
|
|
16 |
cpu_freq = args.cpu_freq * 1000000
|
|
|
17 |
timer_freq = cpu_freq / args.divider
|
|
|
18 |
|
|
|
19 |
print "#ifndef SPEED_LOOKUPTABLE_H"
|
|
|
20 |
print "#define SPEED_LOOKUPTABLE_H"
|
|
|
21 |
print
|
|
|
22 |
print '#include "Marlin.h"'
|
|
|
23 |
print
|
|
|
24 |
|
|
|
25 |
print "const uint16_t speed_lookuptable_fast[256][2] PROGMEM = {"
|
|
|
26 |
a = [ timer_freq / ((i*256)+(args.cpu_freq*2)) for i in range(256) ]
|
|
|
27 |
b = [ a[i] - a[i+1] for i in range(255) ]
|
|
|
28 |
b.append(b[-1])
|
|
|
29 |
for i in range(32):
|
|
|
30 |
print " ",
|
|
|
31 |
for j in range(8):
|
|
|
32 |
print "{%d, %d}," % (a[8*i+j], b[8*i+j]),
|
|
|
33 |
print
|
|
|
34 |
print "};"
|
|
|
35 |
print
|
|
|
36 |
|
|
|
37 |
print "const uint16_t speed_lookuptable_slow[256][2] PROGMEM = {"
|
|
|
38 |
a = [ timer_freq / ((i*8)+(args.cpu_freq*2)) for i in range(256) ]
|
|
|
39 |
b = [ a[i] - a[i+1] for i in range(255) ]
|
|
|
40 |
b.append(b[-1])
|
|
|
41 |
for i in range(32):
|
|
|
42 |
print " ",
|
|
|
43 |
for j in range(8):
|
|
|
44 |
print "{%d, %d}," % (a[8*i+j], b[8*i+j]),
|
|
|
45 |
print
|
|
|
46 |
print "};"
|
|
|
47 |
print
|
|
|
48 |
|
|
|
49 |
print "#endif"
|
|
|
50 |
|