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.  | ||||
| #     Older one's are atmega8 based, newer ones like Arduino Mini, Bluetooth | ||||
| #     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. | ||||
| # | ||||
| @@ -42,6 +44,8 @@ MCU = atmega1280 | ||||
| #Arduino install directory | ||||
| 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 | ||||
|  | ||||
| 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) | ||||
|   TCCR1A &= ~(3<<COM1A0);  | ||||
|   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; | ||||
|   TCNT1 = 0; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user