From d2547ce6b08965ea940e1690807e812841a38b8f Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Sun, 28 May 2017 10:45:32 -0400 Subject: [PATCH] avr: Add support for atmega328 chip The atmega328 is basically the same as the atmega168 - it just adds some additional memory. Allow the chip to be selected during the build. Signed-off-by: Kevin O'Connor --- klippy/pins.py | 4 ++-- src/avr/Kconfig | 3 +++ src/avr/gpio.c | 6 +++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/klippy/pins.py b/klippy/pins.py index c4d5d2a2..df2c7514 100644 --- a/klippy/pins.py +++ b/klippy/pins.py @@ -27,8 +27,8 @@ def beaglebone_pins(): return gpios MCU_PINS = { - "atmega168": port_pins(4), "atmega644p": port_pins(4), - "at90usb1286": port_pins(5), + "atmega168": port_pins(4), "atmega328": port_pins(4), + "atmega644p": port_pins(4), "at90usb1286": port_pins(5), "atmega1280": port_pins(12), "atmega2560": port_pins(12), "sam3x8e": port_pins(4, 32), "pru": beaglebone_pins(), diff --git a/src/avr/Kconfig b/src/avr/Kconfig index 46dc08bb..766d6823 100644 --- a/src/avr/Kconfig +++ b/src/avr/Kconfig @@ -24,6 +24,8 @@ choice bool "at90usb1286" config MACH_atmega644p bool "atmega644p" + config MACH_atmega328 + bool "atmega328" config MACH_atmega168 bool "atmega168" endchoice @@ -31,6 +33,7 @@ endchoice config MCU string default "atmega168" if MACH_atmega168 + default "atmega328" if MACH_atmega328 default "atmega644p" if MACH_atmega644p default "at90usb1286" if MACH_at90usb1286 default "atmega1280" if MACH_atmega1280 diff --git a/src/avr/gpio.c b/src/avr/gpio.c index 9d7e5148..53a57f95 100644 --- a/src/avr/gpio.c +++ b/src/avr/gpio.c @@ -139,7 +139,7 @@ static const struct gpio_pwm_info pwm_regs[] PROGMEM = { }; static const uint8_t pwm_pins[ARRAY_SIZE(pwm_regs)] PROGMEM = { -#if CONFIG_MACH_atmega168 +#if CONFIG_MACH_atmega168 || CONFIG_MACH_atmega328 GPIO('D', 6), GPIO('D', 5), GPIO('B', 1), GPIO('B', 2), GPIO('B', 3), GPIO('D', 3), @@ -241,7 +241,7 @@ gpio_pwm_write(struct gpio_pwm g, uint8_t val) ****************************************************************/ static const uint8_t adc_pins[] PROGMEM = { -#if CONFIG_MACH_atmega168 +#if CONFIG_MACH_atmega168 || CONFIG_MACH_atmega328 GPIO('C', 0), GPIO('C', 1), GPIO('C', 2), GPIO('C', 3), GPIO('C', 4), GPIO('C', 5), GPIO('E', 0), GPIO('E', 1), #elif CONFIG_MACH_atmega644p @@ -343,7 +343,7 @@ gpio_adc_cancel_sample(struct gpio_adc g) * Serial Peripheral Interface (SPI) hardware ****************************************************************/ -#if CONFIG_MACH_atmega168 +#if CONFIG_MACH_atmega168 || CONFIG_MACH_atmega328 static const uint8_t SS = GPIO('B', 2), SCK = GPIO('B', 5), MOSI = GPIO('B', 3); #elif CONFIG_MACH_atmega644p static const uint8_t SS = GPIO('B', 4), SCK = GPIO('B', 7), MOSI = GPIO('B', 5);