Merge pull request #106 from bgamari/Marlin_v1
Make F_CPU dependence of stepper.cpp more explicit
This commit is contained in:
		| @@ -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 New Issue
	
	Block a user