From b097ec8fe3b2ebc9ae254701794e6317316d4ded Mon Sep 17 00:00:00 2001 From: Hans Date: Sun, 26 Jun 2016 11:10:26 +0200 Subject: [PATCH 1/7] Added support for more ATmegas! Support for ATmega8535, ATmega16, ATmega32, ATmega64, ATmega128, ATmega164, ATmega324, ATmega644 and ATmega1284 --- IRremoteInt.h | 51 ++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/IRremoteInt.h b/IRremoteInt.h index 125eb72..b6f5452 100644 --- a/IRremoteInt.h +++ b/IRremoteInt.h @@ -184,13 +184,31 @@ EXTERN volatile irparams_t irparams; #define IR_USE_TIMER2 // tx = pin 1 //#define IR_USE_TIMER3 // tx = pin 16 -// Sanguino -#elif defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644__) +// MightyCore - ATmega1284 +#elif defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) //#define IR_USE_TIMER1 // tx = pin 13 #define IR_USE_TIMER2 // tx = pin 14 + //#define IR_USE_TIMER3 // tx = pin 6 + +// MightyCore - ATmega164, ATmega324, ATmega644 +#elif defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) \ +|| defined(__AVR_ATmega324P__) || defined(__AVR_ATmega324A__) \ +|| defined(__AVR_ATmega324PA__) || defined(__AVR_ATmega164A__) \ +|| defined(__AVR_ATmega164P__) + //#define IR_USE_TIMER1 // tx = pin 13 + #define IR_USE_TIMER2 // tx = pin 14 + +//MegaCore - ATmega64, ATmega128 +#elif defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__) + #define IR_USE_TIMER1 // tx = pin 13 + +// MightyCore - ATmega8535, ATmega16, ATmega32 +#elif defined(__AVR_ATmega8535__) || defined(__AVR_ATmega16__) || defined(__AVR_ATmega32__) + #define IR_USE_TIMER1 // tx = pin 13 + // Atmega8 -#elif defined(__AVR_ATmega8P__) || defined(__AVR_ATmega8__) +#elif defined(__AVR_ATmega8__) #define IR_USE_TIMER1 // tx = pin 9 // ATtiny84 @@ -255,8 +273,12 @@ EXTERN volatile irparams_t irparams; # define TIMER_PWM_PIN CORE_OC2B_PIN // Teensy #elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) # define TIMER_PWM_PIN 9 // Arduino Mega -#elif defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644__) -# define TIMER_PWM_PIN 14 // Sanguino +#elif defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) \ +|| defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) \ +|| defined(__AVR_ATmega324P__) || defined(__AVR_ATmega324A__) \ +|| defined(__AVR_ATmega324PA__) || defined(__AVR_ATmega164A__) \ +|| defined(__AVR_ATmega164P__) +# define TIMER_PWM_PIN 14 // MightyCore #else # define TIMER_PWM_PIN 3 // Arduino Duemilanove, Diecimila, LilyPad, etc #endif @@ -271,7 +293,9 @@ EXTERN volatile irparams_t irparams; #define TIMER_DISABLE_PWM (TCCR1A &= ~(_BV(COM1A1))) //----------------- -#if defined(__AVR_ATmega8P__) || defined(__AVR_ATmega8__) +#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega8535__) \ +|| defined(__AVR_ATmega16__) || defined(__AVR_ATmega32__) \ +|| defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__) # define TIMER_ENABLE_INTR (TIMSK |= _BV(OCIE1A)) # define TIMER_DISABLE_INTR (TIMSK &= ~_BV(OCIE1A)) #else @@ -302,10 +326,17 @@ EXTERN volatile irparams_t irparams; # define TIMER_PWM_PIN CORE_OC1A_PIN // Teensy #elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) # define TIMER_PWM_PIN 11 // Arduino Mega -#elif defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644__) -# define TIMER_PWM_PIN 13 // Sanguino +#elif defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__) +# define TIMER_PWM_PIN 13 // MegaCore +#elif defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) \ +|| defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) \ +|| defined(__AVR_ATmega324P__) || defined(__AVR_ATmega324A__) \ +|| defined(__AVR_ATmega324PA__) || defined(__AVR_ATmega164A__) \ +|| defined(__AVR_ATmega164P__) || defined(__AVR_ATmega32__) \ +|| defined(__AVR_ATmega16__) || defined(__AVR_ATmega8535__) +# define TIMER_PWM_PIN 13 // MightyCore #elif defined(__AVR_ATtiny84__) -# define TIMER_PWM_PIN 6 +# define TIMER_PWM_PIN 6 #else # define TIMER_PWM_PIN 9 // Arduino Duemilanove, Diecimila, LilyPad, etc #endif @@ -342,6 +373,8 @@ EXTERN volatile irparams_t irparams; # define TIMER_PWM_PIN CORE_OC3A_PIN // Teensy #elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) # define TIMER_PWM_PIN 5 // Arduino Mega +#elif defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) +# define TIMER_PWM_PIN 6 // MightyCore #else # error "Please add OC3A pin number here\n" #endif From 13498eb7c9bbe7df2d655307a9b60ad8d848f2fe Mon Sep 17 00:00:00 2001 From: Hans Date: Sun, 26 Jun 2016 11:33:46 +0200 Subject: [PATCH 2/7] Update IRremoteInt.h --- IRremoteInt.h | 1 - 1 file changed, 1 deletion(-) diff --git a/IRremoteInt.h b/IRremoteInt.h index b6f5452..ca18bcd 100644 --- a/IRremoteInt.h +++ b/IRremoteInt.h @@ -205,7 +205,6 @@ EXTERN volatile irparams_t irparams; // MightyCore - ATmega8535, ATmega16, ATmega32 #elif defined(__AVR_ATmega8535__) || defined(__AVR_ATmega16__) || defined(__AVR_ATmega32__) #define IR_USE_TIMER1 // tx = pin 13 - // Atmega8 #elif defined(__AVR_ATmega8__) From d5a46041beeb575b24c0758bc73371b3b1109016 Mon Sep 17 00:00:00 2001 From: Hans Date: Sun, 26 Jun 2016 11:43:22 +0200 Subject: [PATCH 3/7] Added more microcontrollers --- README.md | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 33c1d11..929757a 100644 --- a/README.md +++ b/README.md @@ -28,19 +28,22 @@ We are open to suggestions for adding support to new boards, however we highly r ### Hardware specifications -| Board/CPU | Send Pin | Timers | -|------------------------------------------|---------------------|-------------------| -| Arduino Mega / ATmega 1280 / ATmega 2560 | 5, 6, **9**, 11, 46 | 1, **2**, 3, 4, 5 | -| Teensy 1.0 | **17** | **1** | -| Teensy 2.0 | 9, **10**, 14 | 1, 3, **4_HS** | -| Teensy++ 1.0 / 2.0 | **1**, 16, 25 | 1, **2**, 3 | -| Teensy 3.0 / 3.1 | **5** | **CMT** | -| Teensy-LC | **16** | **TPM1** | -| Sanguino | 13, **14** | 1, **2** | -| Atmega8 | **9** | **1** | -| ATtiny84 | **6** | **1** | -| ATtiny85 | **1** | **TINY0** | -| Arduino Duemilanove, UNO etc. | **3**, 9 | 1, **2** | +| Board/CPU | Send Pin | Timers | +|--------------------------------------------------------------------------|---------------------|-------------------| +| [ATtiny84](https://github.com/SpenceKonde/ATTinyCore) | **6** | **1** | +| [ATtiny85](https://github.com/SpenceKonde/ATTinyCore) | **1** | **TINY0** | +| ATmega8 | **9** | **1** | +| ATmega168, ATmega328 | **3**, 9 | 1, **2** | +| [ATmega1284](https://github.com/MCUdude/MightyCore) | 13, 14, 6 | 1, **2**, 3 | +| [ATmega164, ATmega324, ATmega644](https://github.com/MCUdude/MightyCore) | 13, **14** | 1, **2** | +| [ATmega8535 ATmega16, ATmega32](https://github.com/MCUdude/MightyCore) | **13** | **1** | +| [ATmega64, ATmega128](https://github.com/MCUdude/MegaCore) | **13** | **1** | +| ATmega1280, ATmega2560 | 5, 6, **9**, 11, 46 | 1, **2**, 3, 4, 5 | +| [Teensy 1.0](https://www.pjrc.com/teensy/) | **17** | **1** | +| [Teensy 2.0](https://www.pjrc.com/teensy/) | 9, **10**, 14 | 1, 3, **4_HS** | +| [Teensy++ 1.0 / 2.0](https://www.pjrc.com/teensy/) | **1**, 16, 25 | 1, **2**, 3 | +| [Teensy 3.0 / 3.1](https://www.pjrc.com/teensy/) | **5** | **CMT** | +| [Teensy-LC](https://www.pjrc.com/teensy/) | **16** | **TPM1** | The table above lists the currently supported timers and corresponding send pins, many of these can have additional pins opened up and we are open to requests if a need arises for other pins. From 1e2c5460642cc887e30678fae2d55b74a92244da Mon Sep 17 00:00:00 2001 From: Hans Date: Sun, 26 Jun 2016 12:02:25 +0200 Subject: [PATCH 4/7] Added more microcontrollers to the list --- examples/IRremoteInfo/IRremoteInfo.ino | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/examples/IRremoteInfo/IRremoteInfo.ino b/examples/IRremoteInfo/IRremoteInfo.ino index bc13c5d..55db660 100644 --- a/examples/IRremoteInfo/IRremoteInfo.ino +++ b/examples/IRremoteInfo/IRremoteInfo.ino @@ -107,8 +107,24 @@ void dumpPlatform() { Serial.println(F("Teensy++ 1.0 / AT90USB646")); #elif defined(__AVR_AT90USB1286__) Serial.println(F("Teensy++ 2.0 / AT90USB1286")); -#elif defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644__) - Serial.println(F("Sanguino / ATmega644(P)")); +#elif defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) + Serial.println(F("ATmega1284")); +#elif defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) + Serial.println(F("ATmega644")); +#elif defined(__AVR_ATmega324P__) || defined(__AVR_ATmega324A__) || defined(__AVR_ATmega324PA__) + Serial.println(F("ATmega324")); +#elif defined(__AVR_ATmega164A__) || defined(__AVR_ATmega164P__) + Serial.println(F("ATmega164")); +#elif defined(__AVR_ATmega128__) + Serial.println(F("ATmega128")); +#elif defined(__AVR_ATmega64__) + Serial.println(F("ATmega64")); +#elif defined(__AVR_ATmega32__) + Serial.println(F("ATmega32")); +#elif defined(__AVR_ATmega16__) + Serial.println(F("ATmega16")); +#elif defined(__AVR_ATmega8535__) + Serial.println(F("ATmega8535")); #elif defined(__AVR_ATmega8P__) || defined(__AVR_ATmega8__) Serial.println(F("Atmega8 / ATmega8(P)")); #elif defined(__AVR_ATtiny84__) From d70289787aa8d7fc5fb2045ebb28f84902d42e31 Mon Sep 17 00:00:00 2001 From: Hans Date: Sun, 26 Jun 2016 12:04:52 +0200 Subject: [PATCH 5/7] There's no such thing as an ATmega8P --- examples/IRremoteInfo/IRremoteInfo.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/IRremoteInfo/IRremoteInfo.ino b/examples/IRremoteInfo/IRremoteInfo.ino index 55db660..b440977 100644 --- a/examples/IRremoteInfo/IRremoteInfo.ino +++ b/examples/IRremoteInfo/IRremoteInfo.ino @@ -125,8 +125,8 @@ void dumpPlatform() { Serial.println(F("ATmega16")); #elif defined(__AVR_ATmega8535__) Serial.println(F("ATmega8535")); -#elif defined(__AVR_ATmega8P__) || defined(__AVR_ATmega8__) - Serial.println(F("Atmega8 / ATmega8(P)")); +#elif defined(__AVR_ATmega8__) + Serial.println(F("Atmega8")); #elif defined(__AVR_ATtiny84__) Serial.println(F("ATtiny84")); #elif defined(__AVR_ATtiny85__) From ac6a37779b671ccf11bc460cf6da84cfc4a7847c Mon Sep 17 00:00:00 2001 From: Rafi Khan Date: Tue, 28 Jun 2016 00:59:20 -0600 Subject: [PATCH 6/7] added changelog --- README.md | 4 ++-- changelog.md | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 929757a..1312ef2 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ This library enables you to send and receive using infra-red signals on an Ardui Check [here](http://z3t0.github.io/Arduino-IRremote/) for tutorials and more information. -## Version - 2.1.0 +## Version - 2.2.0 ## Installation 1. Navigate to the [Releases](https://github.com/z3t0/Arduino-IRremote/releases) page. @@ -21,7 +21,7 @@ Check [here](http://z3t0.github.io/Arduino-IRremote/) for tutorials and more inf - Arduino Uno / Mega / Leonardo / Duemilanove / Diecimila / LilyPad / Mini / Fio / Nano etc. - Teensy 1.0 / 1.0++ / 2.0 / 2++ / 3.0 / 3.1 / Teensy-LC; Credits: @PaulStoffregen (Teensy Team) - Sanguino -- Atmega8 +- Atmega8535, 8, 16, 32, 164, 324, 644, 1284, 64, 128 - ATtiny 84 / 85 We are open to suggestions for adding support to new boards, however we highly recommend you contact your supplier first and ask them to provide support from their side. diff --git a/changelog.md b/changelog.md index 41a214f..297ffd4 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,16 @@ +## 2.2.0 - 2016/06/28 +- Added support for ATmega8535 +- Added support for ATmega16 +- Added support for ATmega32 +- Added support for ATmega164 +- Added support for ATmega324 +- Added support for ATmega644 +- Added support for ATmega1284 +- Added support for ATmega64 +- Added support for ATmega128 + +[PR](https://github.com/z3t0/Arduino-IRremote/pull/324) + ## 2.1.1 - 2016/05/04 - Added Lego Power Functions Protocol [PR #309](https://github.com/z3t0/Arduino-IRremote/pull/309) From 59cf4a8d6c4af10aa7cb649a26e50ce96fcbb8be Mon Sep 17 00:00:00 2001 From: Rafi Khan Date: Tue, 28 Jun 2016 01:10:24 -0600 Subject: [PATCH 7/7] slightly modified travis - TODO support more boards --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d62004f..ce01e80 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,4 +26,4 @@ install: - pip install -U platformio script: - - platformio ci --lib="." --board=uno --board=leonardo --board=pro16MHzatmega168 + - platformio ci --lib="." --board=uno --board=leonardo --board=pro16MHzatmega168 --board=btatmega328