From e24e67ffe274cbce2ffae506c4f12de73606dd7b Mon Sep 17 00:00:00 2001 From: Sonny Jeon Date: Mon, 19 Aug 2013 15:07:47 -0600 Subject: [PATCH] Processor-independent pin mapping feature. - Cleaned up and organized pin mapping concept by @elmom. - pin_map.h allows for user-supplied pin mapping and port vector definitions in a centralized file. With more processor types, more definitions could be added. --- config.h | 25 +++--- config_default_2560.h | 70 ---------------- config_default_328p.h | 66 --------------- nuts_bolts.h | 1 + pin_map.h | 181 ++++++++++++++++++++++++++++++++++++++++++ serial.h | 14 ---- 6 files changed, 192 insertions(+), 165 deletions(-) delete mode 100644 config_default_2560.h delete mode 100644 config_default_328p.h create mode 100644 pin_map.h diff --git a/config.h b/config.h index 9c768cf..4dec02b 100644 --- a/config.h +++ b/config.h @@ -2,8 +2,8 @@ config.h - compile time configuration Part of Grbl + Copyright (c) 2011-2013 Sungeun K. Jeon Copyright (c) 2009-2011 Simen Svale Skogsrud - Copyright (c) 2011-2012 Sungeun K. Jeon Grbl is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,29 +19,24 @@ along with Grbl. If not, see . */ -#ifndef config_h -#define config_h +// This file contains compile-time configurations for Grbl's internal system. For the most part, +// users will not need to directly modify these, but they are here for specific needs, i.e. +// performance tuning or adjusting to non-typical machines. // IMPORTANT: Any changes here requires a full re-compiling of the source code to propagate them. +#ifndef config_h +#define config_h + // Default settings. Used when resetting EEPROM. Change to desired name in defaults.h #define DEFAULTS_GENERIC // Serial baud rate #define BAUD_RATE 9600 -// Pin mappings, pick one and comment others -#define DEFAULT_328P -//#define DEFAULT_2560 -//#define CUSTOM_PINS - -if defined(DEFAULT_328P) - #include config_default_328p.h -elif defined(DEFAULT_2560) - #include config_default_2560.h -elif defined(CUSTOM_PINS) - #include config_custom.h // Create from the closest pre-existing config_default_*.h -#endif +// Default pin mappings. Grbl officially supports the Arduino Uno only. Other processor types +// may exist from user-supplied templates or directly user-defined in pin_map.h +#define ARDUINO_UNO // Define runtime command special characters. These characters are 'picked-off' directly from the // serial read data stream and are not passed to the grbl line execution parser. Select characters diff --git a/config_default_2560.h b/config_default_2560.h deleted file mode 100644 index 5ddb52e..0000000 --- a/config_default_2560.h +++ /dev/null @@ -1,70 +0,0 @@ -#ifndef config_default_2560_h -#define config_default_2560_h - -// Define pin-assignments -// NOTE: All step bit and direction pins must be on the same port. -#define STEPPING_DDR DDRA -#define STEPPING_PORT PORTA -#define STEPPING_PIN PINA -#define X_STEP_BIT 0 // MEGA2560 Digital Pin 22 -#define Y_STEP_BIT 2 // MEGA2560 Digital Pin 24 -#define Z_STEP_BIT 4 // MEGA2560 Digital Pin 26 -#define C_STEP_BIT 6 // MEGA2560 Digital Pin 28 -#define X_DIRECTION_BIT 1 // MEGA2560 Digital Pin 23 -#define Y_DIRECTION_BIT 3 // MEGA2560 Digital Pin 25 -#define Z_DIRECTION_BIT 5 // MEGA2560 Digital Pin 27 -#define C_DIRECTION_BIT 7 // MEGA2560 Digital Pin 29 -#define STEP_MASK ((1< #include "config.h" #include "defaults.h" +#include "pin_map.h" #define false 0 #define true 1 diff --git a/pin_map.h b/pin_map.h new file mode 100644 index 0000000..0b7b5d1 --- /dev/null +++ b/pin_map.h @@ -0,0 +1,181 @@ +/* + pin_map.h - Pin mapping configuration file + Part of Grbl + + Copyright (c) 2013 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +/* The pin_map.h file serves as a central pin mapping settings file for different processor + types, i.e. AVR 328p or AVR Mega 2560. Grbl officially supports the Arduino Uno, but the + other supplied pin mappings are supplied by users, so your results may vary. */ + +#ifndef pin_map_h +#define pin_map_h + +#ifdef ARDUINO_UNO // AVR 328p, Officially supported by Grbl. + + // Serial port pins + #define Serial_RX_vect USART_RX_vect + #define Serial_UDRE_vect USART_UDRE_vect + + // NOTE: All step bit and direction pins must be on the same port. + #define STEPPING_DDR DDRD + #define STEPPING_PORT PORTD + #define X_STEP_BIT 2 // Uno Digital Pin 2 + #define Y_STEP_BIT 3 // Uno Digital Pin 3 + #define Z_STEP_BIT 4 // Uno Digital Pin 4 + #define X_DIRECTION_BIT 5 // Uno Digital Pin 5 + #define Y_DIRECTION_BIT 6 // Uno Digital Pin 6 + #define Z_DIRECTION_BIT 7 // Uno Digital Pin 7 + #define STEP_MASK ((1<