Fixes to build on atmega32u4
authorandre Ebersold <andre.ebersold@free.fr>
Sun, 12 May 2024 13:56:28 +0000 (15:56 +0200)
committerandre Ebersold <andre.ebersold@free.fr>
Sun, 12 May 2024 13:56:28 +0000 (15:56 +0200)
CMakeLists.txt
HAL/AVR/AvrI2C.cpp
rules/target-atmega32u4.cmake [new file with mode: 0644]

index c533ab2847ceafa48e05e25a2ecf253157b3d742..46fba18c336590704ca1b7ab59abf050e30f8540 100644 (file)
@@ -6,7 +6,7 @@ SET(BUILD_TARGET "stm32g030" CACHE STRING "Target [stm32g030, stm32F103, atmega3
 if("${BUILD_TARGET}" STREQUAL "atmega328p")
   include(${CMAKE_CURRENT_SOURCE_DIR}/rules/target-atmega328p.cmake)
 elseif ("${BUILD_TARGET}" STREQUAL "atmega32u4")
-  include(${CMAKE_CURRENT_SOURCE_DIR}/rules/target-atmega328p.cmake)
+  include(${CMAKE_CURRENT_SOURCE_DIR}/rules/target-atmega32u4.cmake)
 elseif ("${BUILD_TARGET}" STREQUAL "stm32g030")
   include(${CMAKE_CURRENT_SOURCE_DIR}/rules/target-stm32g030.cmake)
 else()
index 734bcd8f9bcae8c5674a720779bff7893701748d..c896b097fa9341debb79ebb52e9a0429e36ebff5 100644 (file)
 
 #define START
 #define MT_SLA_ACK
+#if defined (__AVR_ATmega32U4__)
+#define TW_SDA_PIN PORTD1
+#define TW_SCL_PIN PORTD0
+#else
 #define TW_SDA_PIN PORTC4
 #define TW_SCL_PIN PORTC5
-
+#endif
 #define I2C_ERROR   0
 #define I2C_SUCCESS 1
 
@@ -29,7 +33,11 @@ void AvrI2C::init()
     //TWBR = ((F_CPU/SCL_CLOCK)-16)/2; 
     // 16Mhz / (16 + 2*12*1) = 400Khz
     TWBR = 12; 
+#if defined (__AVR_ATmega32U4__)
+    PRR0  &= ~(1<<PRTWI);
+#else
     PRR   &= ~(1<<PRTWI);
+#endif
     DDRC  |= (1<<TW_SDA_PIN) | (1 <<TW_SCL_PIN);
     // Enable Pull UP
     PORTC |= (1<<TW_SDA_PIN) | (1 <<TW_SCL_PIN);
diff --git a/rules/target-atmega32u4.cmake b/rules/target-atmega32u4.cmake
new file mode 100644 (file)
index 0000000..7d9ce3a
--- /dev/null
@@ -0,0 +1,23 @@
+##########################################################################
+# tools to beused for programming the AVR
+##########################################################################
+set(AVR_UPLOADTOOL avrdude CACHE STRING "AVR MCU Programmer ")
+set(AVR_PROGRAMMER arduino)
+set(AVR_UPLOADTOOL_PORT CACHE STRING "AVRdude upload port")
+set(AVR_UPLOADTOOL_BAUDRATE 57600)
+
+##########################################################################
+# AVR and fuses needs to be set
+##########################################################################
+set(AVR_MCU atmega32u4 CACHE STRING "AVR MCU type choose between atmega32_p or atmega32u4 atmega328p")
+set(AVR_H_FUSE 0xd9)
+set(AVR_L_FUSE 0xc3)
+
+### END TOOLCHAIN SETUP AREA #############################################
+
+include(${CMAKE_CURRENT_SOURCE_DIR}/rules/gcc-avr-generic.cmake)
+
+PROJECT(tinyapp)
+
+include(${CMAKE_CURRENT_SOURCE_DIR}/rules/gcc-avr-common.cmake)
+