Skip to content

Commit

Permalink
build support and limited GPIO mappings for atmega640/1280/2560
Browse files Browse the repository at this point in the history
  • Loading branch information
John Slee committed Jan 7, 2014
1 parent 97af05c commit 5167f8e
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 8 deletions.
34 changes: 34 additions & 0 deletions gpio.h
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,40 @@ typedef Gpio<PortD, 2> UartSpi1RX;
#define HAS_TIMER3
#endif

#elif defined (ATMEGA640) || defined(ATMEGA1280) || defined(ATMEGA2560)

SetupGpio(0, PortB, NoPwmChannel, 0);
SetupGpio(1, PortB, NoPwmChannel, 1);
SetupGpio(2, PortB, NoPwmChannel, 2);
SetupGpio(3, PortB, NoPwmChannel, 3);
SetupGpio(4, PortB, PwmChannel2A, 4);
SetupGpio(5, PortB, PwmChannel1A, 5);
SetupGpio(6, PortB, PwmChannel1B, 6);
SetupGpio(7, PortB, PwmChannel0A, 7);

SetupGpio(8, PortD, NoPwmChannel, 0);
SetupGpio(9, PortD, NoPwmChannel, 1);
SetupGpio(10, PortD, NoPwmChannel, 2);
SetupGpio(11, PortD, NoPwmChannel, 3);
SetupGpio(12, PortD, NoPwmChannel, 4);
SetupGpio(13, PortD, NoPwmChannel, 5);
SetupGpio(14, PortD, NoPwmChannel, 6);
SetupGpio(15, PortD, NoPwmChannel, 7);

SetupGpio(16, PortC, NoPwmChannel, 0);
SetupGpio(17, PortC, NoPwmChannel, 1);
SetupGpio(18, PortC, NoPwmChannel, 2);
SetupGpio(19, PortC, NoPwmChannel, 3);
SetupGpio(20, PortC, NoPwmChannel, 4);
SetupGpio(21, PortC, NoPwmChannel, 5);
SetupGpio(22, PortC, NoPwmChannel, 6);
SetupGpio(23, PortC, NoPwmChannel, 7);

typedef Gpio<PortB, 0> SpiSS;
typedef Gpio<PortB, 1> SpiSCK;
typedef Gpio<PortB, 2> SpiMOSI;
typedef Gpio<PortB, 3> SpiMISO;

#else

#error Unsupported MCU type
Expand Down
37 changes: 29 additions & 8 deletions makefile.mk
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,31 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

AVRLIB_TOOLS_PATH = /usr/local/CrossPack-AVR/bin/
AVRLIB_TOOLS_PATH ?= /usr/local/CrossPack-AVR/bin/
BUILD_ROOT = build/
BUILD_DIR = $(BUILD_ROOT)$(TARGET)/
PROGRAMMER = avrispmkII
PROGRAMMER ?= avrispmkII
PROGRAMMER_PORT ?= usb
AVRDUDE_ERASE ?= no
AVRDUDE_LOCK ?= yes

ifeq ($(FAMILY),tiny)
MCU = attiny$(MCU_NAME)
DMCU = t$(MCU_NAME)
MCU_DEFINE = ATTINY$(MCU_NAME)
else
ifeq ($(FAMILY),mega)
MCU = atmega$(MCU_NAME)
DMCU = atmega$(MCU_NAME)
MCU_DEFINE = ATMEGA$(MCU_NAME)
else
MCU = atmega$(MCU_NAME)p
DMCU = m$(MCU_NAME)p
MCU_DEFINE = ATMEGA$(MCU_NAME)P
endif
endif

F_CPU = 20000000
F_CPU ?= 20000000

VPATH = $(PACKAGES)
CC_FILES = $(notdir $(wildcard $(patsubst %,%/*.cc,$(PACKAGES))))
Expand Down Expand Up @@ -120,8 +129,19 @@ $(BUILD_DIR)%.sym: $(BUILD_DIR)%.elf
# ------------------------------------------------------------------------------

AVRDUDE_COM_OPTS = -V -p $(DMCU)
AVRDUDE_ISP_OPTS = -c $(PROGRAMMER) -P usb
AVRDUDE_ISP_OPTS = -c $(PROGRAMMER) -P $(PROGRAMMER_PORT)

ifeq ($(AVRDUDE_LOCK),no)
AVRDUDE_LOCK_OPTS =
else
AVRDUDE_LOCK_OPTS ?= -U lock:w:0x$(LOCK):m
endif

ifeq ($(AVRDUDE_ERASE),no)
AVRDUDE_ERASE_OPTS =
else
AVRDUDE_ERASE_OPTS ?= -D
endif
# ------------------------------------------------------------------------------
# Main targets
# ------------------------------------------------------------------------------
Expand All @@ -139,13 +159,14 @@ $(DEP_FILE): $(BUILD_DIR) $(DEPS)

bin: $(TARGET_BIN)


upload: $(TARGET_HEX)
$(AVRDUDE) $(AVRDUDE_COM_OPTS) $(AVRDUDE_ISP_OPTS) \
-B 1 -U flash:w:$(TARGET_HEX):i -U lock:w:0x$(LOCK):m
$(AVRDUDE) $(AVRDUDE_ERASE_OPTS) $(AVRDUDE_COM_OPTS) $(AVRDUDE_ISP_OPTS) \
-B 1 -U flash:w:$(TARGET_HEX):i $(AVRDUDE_LOCK_OPTS)

slow_upload: $(TARGET_HEX)
$(AVRDUDE) $(AVRDUDE_COM_OPTS) $(AVRDUDE_ISP_OPTS) \
-B 4 -U flash:w:$(TARGET_HEX):i -U lock:w:0x$(LOCK):m
$(AVRDUDE) $(AVRDUDE_ERASE_OPTS) $(AVRDUDE_COM_OPTS) $(AVRDUDE_ISP_OPTS) \
-B 4 -U flash:w:$(TARGET_HEX):i $(AVRDUDE_LOCK_OPTS)

clean:
$(REMOVE) $(OBJS) $(TARGETS) $(DEP_FILE) $(DEPS)
Expand Down

0 comments on commit 5167f8e

Please sign in to comment.