Merge pull request #106 from bgamari/Marlin_v1
Make F_CPU dependence of stepper.cpp more explicit
This commit is contained in:
commit
7cefad3744
3 changed files with 65 additions and 2 deletions
|
@ -23,7 +23,9 @@
|
||||||
# 3. Set the line containing "MCU" to match your board's processor.
|
# 3. Set the line containing "MCU" to match your board's processor.
|
||||||
# Older one's are atmega8 based, newer ones like Arduino Mini, Bluetooth
|
# Older one's are atmega8 based, newer ones like Arduino Mini, Bluetooth
|
||||||
# or Diecimila have the atmega168. If you're using a LilyPad Arduino,
|
# or Diecimila have the atmega168. If you're using a LilyPad Arduino,
|
||||||
# change F_CPU to 8000000.
|
# change F_CPU to 8000000. If you are using Gen7 electronics, you
|
||||||
|
# probably need to use 20000000. Either way, you must regenerate
|
||||||
|
# the speed lookup table with create_speed_lookuptable.py.
|
||||||
#
|
#
|
||||||
# 4. Type "make" and press enter to compile/verify your program.
|
# 4. Type "make" and press enter to compile/verify your program.
|
||||||
#
|
#
|
||||||
|
@ -42,6 +44,8 @@ MCU = atmega1280
|
||||||
#Arduino install directory
|
#Arduino install directory
|
||||||
INSTALL_DIR = ../../arduino-0022/
|
INSTALL_DIR = ../../arduino-0022/
|
||||||
|
|
||||||
|
# Be sure to regenerate speed_lookuptable.h with create_speed_lookuptable.py
|
||||||
|
# if you are setting this to something other than 16MHz
|
||||||
F_CPU = 16000000
|
F_CPU = 16000000
|
||||||
|
|
||||||
UPLOAD_RATE = 115200
|
UPLOAD_RATE = 115200
|
||||||
|
|
53
Marlin/create_speed_lookuptable.py
Executable file
53
Marlin/create_speed_lookuptable.py
Executable file
|
@ -0,0 +1,53 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
""" 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 "Marlin.h"'
|
||||||
|
print
|
||||||
|
|
||||||
|
# Based on timer calculations of 'RepRap cartesian firmware' by Zack
|
||||||
|
# Smith and Philip Tiefenbacher.
|
||||||
|
|
||||||
|
print "const uint16_t speed_lookuptable_fast[256][2] PROGMEM = {"
|
||||||
|
a = [ timer_freq / ((i*256)+32) 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 " ",
|
||||||
|
for j in range(8):
|
||||||
|
print "{%d, %d}," % (a[8*i+j], b[8*i+j]),
|
||||||
|
print
|
||||||
|
print "};"
|
||||||
|
print
|
||||||
|
|
||||||
|
print "const uint16_t speed_lookuptable_slow[256][2] PROGMEM = {"
|
||||||
|
a = [ timer_freq / ((i*8)+32) 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 " ",
|
||||||
|
for j in range(8):
|
||||||
|
print "{%d, %d}," % (a[8*i+j], b[8*i+j]),
|
||||||
|
print
|
||||||
|
print "};"
|
||||||
|
print
|
||||||
|
|
||||||
|
print "#endif"
|
||||||
|
|
|
@ -750,7 +750,13 @@ void st_init()
|
||||||
// output mode = 00 (disconnected)
|
// output mode = 00 (disconnected)
|
||||||
TCCR1A &= ~(3<<COM1A0);
|
TCCR1A &= ~(3<<COM1A0);
|
||||||
TCCR1A &= ~(3<<COM1B0);
|
TCCR1A &= ~(3<<COM1B0);
|
||||||
TCCR1B = (TCCR1B & ~(0x07<<CS10)) | (2<<CS10); // 2MHz timer
|
|
||||||
|
// Set the timer pre-scaler
|
||||||
|
// Generally we use a divider of 8, resulting in a 2MHz timer
|
||||||
|
// frequency on a 16MHz MCU. If you are going to change this, be
|
||||||
|
// sure to regenerate speed_lookuptable.h with
|
||||||
|
// create_speed_lookuptable.py
|
||||||
|
TCCR1B = (TCCR1B & ~(0x07<<CS10)) | (2<<CS10);
|
||||||
|
|
||||||
OCR1A = 0x4000;
|
OCR1A = 0x4000;
|
||||||
TCNT1 = 0;
|
TCNT1 = 0;
|
||||||
|
|
Reference in a new issue