aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2017-05-28 10:45:32 -0400
committerKevin O'Connor <kevin@koconnor.net>2017-05-28 10:45:32 -0400
commitd2547ce6b08965ea940e1690807e812841a38b8f (patch)
tree65ee94397e2f57472dabf2b335e8653ff16248e3
parent7e3d7e071f3819894e6a56272a95df0cd9324548 (diff)
downloadkutter-d2547ce6b08965ea940e1690807e812841a38b8f.tar.gz
kutter-d2547ce6b08965ea940e1690807e812841a38b8f.tar.xz
kutter-d2547ce6b08965ea940e1690807e812841a38b8f.zip
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 <kevin@koconnor.net>
-rw-r--r--klippy/pins.py4
-rw-r--r--src/avr/Kconfig3
-rw-r--r--src/avr/gpio.c6
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);