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 diff --git a/IRremoteInt.h b/IRremoteInt.h index 125eb72..ca18bcd 100644 --- a/IRremoteInt.h +++ b/IRremoteInt.h @@ -184,13 +184,30 @@ 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 +272,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 +292,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 +325,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 +372,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 diff --git a/README.md b/README.md index 33c1d11..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,26 +21,29 @@ 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. ### 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. 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) diff --git a/examples/IRremoteInfo/IRremoteInfo.ino b/examples/IRremoteInfo/IRremoteInfo.ino index bc13c5d..b440977 100644 --- a/examples/IRremoteInfo/IRremoteInfo.ino +++ b/examples/IRremoteInfo/IRremoteInfo.ino @@ -107,10 +107,26 @@ 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_ATmega8P__) || defined(__AVR_ATmega8__) - Serial.println(F("Atmega8 / ATmega8(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_ATmega8__) + Serial.println(F("Atmega8")); #elif defined(__AVR_ATtiny84__) Serial.println(F("ATtiny84")); #elif defined(__AVR_ATtiny85__)