Skip to content

Commit 4fb8562

Browse files
committed
Squashed 'avr/cores/MCUdude_corefiles/' changes from 278334f4..b1703a37
b1703a37 Initial support for AVR ATmega 5 and 9-series ATmega165/325/645, ATmega3250/6450, ATmega169/239/649, ATmega3290/6490 6b36d8f1 Fix typo More detals here: arduino/ArduinoCore-avr#466 ecb12fa4 Add GCC printf formatting checks git-subtree-dir: avr/cores/MCUdude_corefiles git-subtree-split: b1703a37e880b4f0b5fc42c09acfc35f04f4a91d
1 parent 9bc4038 commit 4fb8562

File tree

5 files changed

+81
-42
lines changed

5 files changed

+81
-42
lines changed

Arduino.h

+42-19
Original file line numberDiff line numberDiff line change
@@ -75,43 +75,66 @@ void yield(void);
7575

7676
/* Analog reference definitions */
7777

78-
// ATmega8535, ATmega8, ATmega16, ATmega32, ATmega64, ATmega128
79-
#if defined(__AVR_ATmega8535__) || defined(__AVR_ATmega8__) || defined(__AVR_ATmega16__) \
80-
|| defined(__AVR_ATmega32__) || defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__)
78+
// "Classic" series
79+
#if defined(__AVR_ATmega8535__) || defined(__AVR_ATmega8__) || defined(__AVR_ATmega16__) \
80+
|| defined(__AVR_ATmega32__) || defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__)
8181
#define EXTERNAL 0
8282
#define DEFAULT 1 // Default -> AVCC with external capacitor at AREF pin
8383
#define INTERNAL2V56 3
8484
#define INTERNAL 3
8585

86-
// ATmega48/P/PB, ATmega88/P/PB, ATmega168/P/PB, ATmega328/P/PB
87-
#elif defined(__AVR_ATmega48__) || defined(__AVR_ATmega48P__) || defined(__AVR_ATmega48PB__) \
88-
|| defined(__AVR_ATmega88__) || defined(__AVR_ATmega88P__) || defined(__AVR_ATmega88PB__) \
89-
|| defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega168PB__) \
90-
|| defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328PB__)
86+
// 0/1 series
87+
#elif defined(__AVR_ATmega640__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) \
88+
|| defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)
9189
#define EXTERNAL 0
9290
#define DEFAULT 1 // Default -> AVCC with external capacitor at AREF pin
93-
#define INTERNAL1V1 3
91+
#define INTERNAL1V1 2
92+
#define INTERNAL2V56 3
9493
#define INTERNAL 3
9594

96-
// ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
97-
#elif defined(__AVR_ATmega640__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) \
98-
|| defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)
95+
// 4 series
96+
#elif defined(__AVR_ATmega164A__) || defined(__AVR_ATmega164P__) || defined(__AVR_ATmega324A__) \
97+
|| defined(__AVR_ATmega324P__) || defined(__AVR_ATmega324PA__) || defined(__AVR_ATmega324PB__) \
98+
|| defined(__AVR_ATmega644A__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284__) \
99+
|| defined(__AVR_ATmega1284P__)
99100
#define EXTERNAL 0
100101
#define DEFAULT 1 // Default -> AVCC with external capacitor at AREF pin
101102
#define INTERNAL1V1 2
102103
#define INTERNAL2V56 3
103104
#define INTERNAL 3
104105

106+
// 5 series
107+
#elif defined(__AVR_ATmega165__) || defined(__AVR_ATmega165A__) || defined(__AVR_ATmega165P__) \
108+
|| defined(__AVR_ATmega165PA__) || defined(__AVR_ATmega325__) || defined(__AVR_ATmega325A__) \
109+
|| defined(__AVR_ATmega325P__) || defined(__AVR_ATmega325PA__) || defined(__AVR_ATmega3250__) \
110+
|| defined(__AVR_ATmega3250A__) || defined(__AVR_ATmega3250P__) || defined(__AVR_ATmega3250PA__) \
111+
|| defined(__AVR_ATmega645__) || defined(__AVR_ATmega645A__) || defined(__AVR_ATmega645P__) \
112+
|| defined(__AVR_ATmega6450__) || defined(__AVR_ATmega6450A__) || defined(__AVR_ATmega6450P__)
113+
#define EXTERNAL 0
114+
#define DEFAULT 1 // Default -> AVCC with external capacitor at AREF pin
115+
#define INTERNAL1V1 3
116+
#define INTERNAL 3
105117

106-
// ATmega164A/P, ATmega324A/P/PA/PB, ATmega644/P, ATmega1284/P
107-
#elif defined(__AVR_ATmega164A__) || defined(__AVR_ATmega164P__) || defined(__AVR_ATmega324A__) \
108-
|| defined(__AVR_ATmega324P__) || defined(__AVR_ATmega324PA__) || defined(__AVR_ATmega324PB__) \
109-
|| defined(__AVR_ATmega644A__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284__) \
110-
|| defined(__AVR_ATmega1284P__)
118+
// 8 series
119+
#elif defined(__AVR_ATmega48__) || defined(__AVR_ATmega48P__) || defined(__AVR_ATmega48PB__) \
120+
|| defined(__AVR_ATmega88__) || defined(__AVR_ATmega88P__) || defined(__AVR_ATmega88PB__) \
121+
|| defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega168PB__) \
122+
|| defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328PB__)
111123
#define EXTERNAL 0
112124
#define DEFAULT 1 // Default -> AVCC with external capacitor at AREF pin
113-
#define INTERNAL1V1 2
114-
#define INTERNAL2V56 3
125+
#define INTERNAL1V1 3
126+
#define INTERNAL 3
127+
128+
// 9 series
129+
#elif defined(__AVR_ATmega169__) || defined(__AVR_ATmega169A__) || defined(__AVR_ATmega169P__) \
130+
|| defined(__AVR_ATmega169PA__) || defined(__AVR_ATmega329__) || defined(__AVR_ATmega329A__) \
131+
|| defined(__AVR_ATmega329P__) || defined(__AVR_ATmega329PA__) || defined(__AVR_ATmega3290__) \
132+
|| defined(__AVR_ATmega3290A__) || defined(__AVR_ATmega3290P__) || defined(__AVR_ATmega3290PA__) \
133+
|| defined(__AVR_ATmega649__) || defined(__AVR_ATmega649A__) || defined(__AVR_ATmega649P__) \
134+
|| defined(__AVR_ATmega6490__) || defined(__AVR_ATmega6490A__) || defined(__AVR_ATmega6490P__)
135+
#define EXTERNAL 0
136+
#define DEFAULT 1 // Default -> AVCC with external capacitor at AREF pin
137+
#define INTERNAL1V1 3
115138
#define INTERNAL 3
116139

117140
#endif

HardwareSerial_private.h

+3-6
Original file line numberDiff line numberDiff line change
@@ -67,18 +67,15 @@
6767
// UART0 for the other UARTs as well, in case these values ever get
6868
// changed for future hardware.
6969
#if defined(TXC1) && (TXC1 != TXC0 || RXEN1 != RXEN0 || RXCIE1 != RXCIE0 || \
70-
UDRIE1 != UDRIE0 || U2X1 != U2X0 || UPE1 != UPE0 || \
71-
UDRE1 != UDRE0)
70+
UDRIE1 != UDRIE0 || U2X1 != U2X0 || UPE1 != UPE0 || UDRE1 != UDRE0)
7271
#error "Not all bit positions for UART1 are the same as for UART0"
7372
#endif
7473
#if defined(TXC2) && (TXC2 != TXC0 || RXEN2 != RXEN0 || RXCIE2 != RXCIE0 || \
75-
UDRIE2 != UDRIE0 || U2X2 != U2X0 || UPE2 != UPE0 || \
76-
UDRE2 != UDRE0)
74+
UDRIE2 != UDRIE0 || U2X2 != U2X0 || UPE2 != UPE0 || UDRE2 != UDRE0)
7775
#error "Not all bit positions for UART2 are the same as for UART0"
7876
#endif
7977
#if defined(TXC3) && (TXC3 != TXC0 || RXEN3 != RXEN0 || RXCIE3 != RXCIE0 || \
80-
UDRIE3 != UDRIE0 || U3X3 != U3X0 || UPE3 != UPE0 || \
81-
UDRE3 != UDRE0)
78+
UDRIE3 != UDRIE0 || U2X3 != U2X0 || UPE3 != UPE0 || UDRE3 != UDRE0)
8279
#error "Not all bit positions for UART3 are the same as for UART0"
8380
#endif
8481

Print.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ class Print
4444
void setWriteError(int err = 1) { write_error = err; }
4545
public:
4646
Print() : write_error(0) {}
47-
47+
4848
int getWriteError() { return write_error; }
4949
void clearWriteError() { setWriteError(0); }
50-
50+
5151
virtual size_t write(uint8_t) = 0;
5252
size_t write(const char *str) {
5353
if (str == NULL) return 0;
@@ -88,8 +88,8 @@ class Print
8888
size_t println(double, int = 2);
8989
size_t println(const Printable&);
9090
size_t println(void);
91-
92-
int16_t printf(const char *format, ...);
91+
92+
int16_t printf(const char *format, ...) __attribute__ ((format (printf, 2, 3)));
9393
int16_t printf(const __FlashStringHelper *format, ...);
9494
};
9595

README.md

+4
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ This repo contains the Arduino corefiles used with [MightyCore](https://github.c
1212
* ATmega8535, ATmega16, ATmega32, ATmega164A/P, ATmega324A/P/PA/PB, ATmega644/P, ATmega1284/P
1313
* ATmega8515, ATmega162
1414
* ATmega8, ATmega48/P/PA/PB, ATmega88/P/PA/PB, ATmega168/P/PA/PB, ATmega328/P/PA/PB
15+
* ATmega165/A/P/PA, ATmega325/A/P/PA, ATmega645/A/P
16+
* ATmega3250/A/P, ATmega6450/A/P
17+
* ATmega169/A/P/PA, ATmega329/A/P/PA, ATmega649/A/P
18+
* ATmega3290/A/P, ATmega6490/A/P
1519

1620

1721
## Supported clock frequencies

WInterrupts.c

+28-13
Original file line numberDiff line numberDiff line change
@@ -416,31 +416,46 @@ void detachInterrupt(uint8_t interruptNum)
416416
IMPLEMENT_ISR(INT7_vect, EXTERNAL_INT_7)
417417

418418
// ATmega8, ATmega8515, ATmega8535, ATmega16, ATmega32, ATmega162
419-
#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega8515__) || defined(__AVR_ATmega8535__) || defined(__AVR_ATmega16__) \
420-
|| defined(__AVR_ATmega32__) || defined(__AVR_ATmega162__)
419+
#elif defined(__AVR_ATmega8515__) || defined(__AVR_ATmega8535__) || defined(__AVR_ATmega16__) \
420+
|| defined(__AVR_ATmega32__) || defined(__AVR_ATmega162__)
421421
IMPLEMENT_ISR(INT0_vect, EXTERNAL_INT_0)
422422
IMPLEMENT_ISR(INT1_vect, EXTERNAL_INT_1)
423-
#if defined(INT2) // Will exclude ATmega8, since it doesn't have INT2
424-
IMPLEMENT_ISR(INT2_vect, EXTERNAL_INT_2)
425-
#endif
426423

427424
// ATmega164A/P, ATmega324A/P/PA/PB, ATmega644/P, ATmega1284/P
428-
#elif defined(__AVR_ATmega164A__) || defined(__AVR_ATmega164P__) || defined(__AVR_ATmega324A__) \
429-
|| defined(__AVR_ATmega324P__) || defined(__AVR_ATmega324PA__) || defined(__AVR_ATmega324PB__) \
430-
|| defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284__) \
425+
#elif defined(__AVR_ATmega164A__) || defined(__AVR_ATmega164P__) || defined(__AVR_ATmega324A__) \
426+
|| defined(__AVR_ATmega324P__) || defined(__AVR_ATmega324PA__) || defined(__AVR_ATmega324PB__) \
427+
|| defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284__) \
431428
|| defined(__AVR_ATmega1284P__)
432429
IMPLEMENT_ISR(INT0_vect, EXTERNAL_INT_0)
433430
IMPLEMENT_ISR(INT1_vect, EXTERNAL_INT_1)
434431
IMPLEMENT_ISR(INT2_vect, EXTERNAL_INT_2)
435432

436-
// ATmega48/P/PB, ATmega88/P/PB, ATmega168/P/PB, ATmega328/P/PB
437-
#elif defined(__AVR_ATmega48__) || defined(__AVR_ATmega48P__) || defined(__AVR_ATmega48PB__) \
438-
|| defined(__AVR_ATmega88__) || defined(__AVR_ATmega88P__) || defined(__AVR_ATmega88PB__) \
439-
|| defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega168PB__) \
440-
|| defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328PB__)
433+
// ATmega164/A/P/PA, ATmega325/A/P/PA, ATmega3250/A/P/PA, ATmega645/A/P, ATmega6450/A/P
434+
#elif defined(__AVR_ATmega165__) || defined(__AVR_ATmega165A__) || defined(__AVR_ATmega165P__) \
435+
|| defined(__AVR_ATmega165PA__) || defined(__AVR_ATmega325__) || defined(__AVR_ATmega325A__) \
436+
|| defined(__AVR_ATmega325P__) || defined(__AVR_ATmega325PA__) || defined(__AVR_ATmega3250__) \
437+
|| defined(__AVR_ATmega3250A__) || defined(__AVR_ATmega3250P__) || defined(__AVR_ATmega3250PA__) \
438+
|| defined(__AVR_ATmega645__) || defined(__AVR_ATmega645A__) || defined(__AVR_ATmega645P__) \
439+
|| defined(__AVR_ATmega6450__) || defined(__AVR_ATmega6450A__) || defined(__AVR_ATmega6450P__)
440+
IMPLEMENT_ISR(INT0_vect, EXTERNAL_INT_0)
441+
442+
// ATmega8, ATmega48/P/PB, ATmega88/P/PB, ATmega168/P/PB, ATmega328/P/PB
443+
#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega48__) || defined(__AVR_ATmega48P__) \
444+
|| defined(__AVR_ATmega48PB__) || defined(__AVR_ATmega88__) || defined(__AVR_ATmega88P__) \
445+
|| defined(__AVR_ATmega88PB__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) \
446+
|| defined(__AVR_ATmega168PB__) || defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__) \
447+
|| defined(__AVR_ATmega328PB__)
441448
IMPLEMENT_ISR(INT0_vect, EXTERNAL_INT_0)
442449
IMPLEMENT_ISR(INT1_vect, EXTERNAL_INT_1)
443450

451+
// ATmega169/A/P/PA, ATmega329/A/P/PA, ATmega3290/A/P/PA, ATmega649/A/P, ATmega649/A/P
452+
#elif defined(__AVR_ATmega169__) || defined(__AVR_ATmega169A__) || defined(__AVR_ATmega169P__) \
453+
|| defined(__AVR_ATmega169PA__) || defined(__AVR_ATmega329__) || defined(__AVR_ATmega329A__) \
454+
|| defined(__AVR_ATmega329P__) || defined(__AVR_ATmega329PA__) || defined(__AVR_ATmega3290__) \
455+
|| defined(__AVR_ATmega3290A__) || defined(__AVR_ATmega3290P__) || defined(__AVR_ATmega3290PA__) \
456+
|| defined(__AVR_ATmega649__) || defined(__AVR_ATmega649A__) || defined(__AVR_ATmega649P__) \
457+
|| defined(__AVR_ATmega6490__) || defined(__AVR_ATmega6490A__) || defined(__AVR_ATmega6490P__)
458+
444459
#endif
445460

446461

0 commit comments

Comments
 (0)