+/*---------------------------------------------------------------------------------------------------------------------------------------------------\r
+ * ATtiny pin definition of OC0A / OC0B\r
+ * ATmega pin definition of OC2 / OC2A / OC2B / OC0 / OC0A / OC0B\r
+ *---------------------------------------------------------------------------------------------------------------------------------------------------\r
+ */\r
+#if defined (__AVR_ATtiny44__) || defined (__AVR_ATtiny84__) // ATtiny44/84 uses OC0A = PB2 or OC0B = PA7\r
+# if IRSND_OCx == IRSND_OC0A // OC0A\r
+# define IRSND_PORT_LETTER B\r
+# define IRSND_BIT_NUMBER 2\r
+# elif IRSND_OCx == IRSND_OC0B // OC0B\r
+# define IRSND_PORT_LETTER A\r
+# define IRSND_BIT_NUMBER 7\r
+# else\r
+# error Wrong value for IRSND_OCx, choose IRSND_OC0A or IRSND_OC0B in irsndconfig.h\r
+# endif // IRSND_OCx\r
+\r
+#elif defined (__AVR_ATtiny45__) || defined (__AVR_ATtiny85__) // ATtiny45/85 uses OC0A = PB0 or OC0B = PB1\r
+# if IRSND_OCx == IRSND_OC0A // OC0A\r
+# define IRSND_PORT_LETTER B\r
+# define IRSND_BIT_NUMBER 0\r
+# elif IRSND_OCx == IRSND_OC0B // OC0B\r
+# define IRSND_PORT_LETTER B\r
+# define IRSND_BIT_NUMBER 1\r
+# else\r
+# error Wrong value for IRSND_OCx, choose IRSND_OC0A or IRSND_OC0B in irsndconfig.h\r
+# endif // IRSND_OCx\r
+\r
+#elif defined (__AVR_ATtiny2313__) || defined (__AVR_ATtiny4313__) // ATtiny2313/4313 uses OC0A = PB2 or OC0B = PD5\r
+# if IRSND_OCx == IRSND_OC0A // OC0A\r
+# define IRSND_PORT_LETTER B\r
+# define IRSND_BIT_NUMBER 2\r
+# elif IRSND_OCx == IRSND_OC0B // OC0B\r
+# define IRSND_PORT_LETTER D\r
+# define IRSND_BIT_NUMBER 5\r
+# else\r
+# error Wrong value for IRSND_OCx, choose IRSND_OC0A or IRSND_OC0B in irsndconfig.h\r
+# endif // IRSND_OCx\r
+\r
+#elif defined (__AVR_ATtiny87__) || defined (__AVR_ATtiny167__) // ATtiny87/167 uses OC0A = PA2\r
+# if IRSND_OCx == IRSND_OC0A // OC0A\r
+# define IRSND_PORT_LETTER A\r
+# define IRSND_BIT_NUMBER 2\r
+# else\r
+# error Wrong value for IRSND_OCx, choose IRSND_OC0A in irsndconfig.h\r
+# endif // IRSND_OCx\r
+\r
+#elif defined (__AVR_ATmega8__) // ATmega8 uses only OC2 = PB3\r
+# if IRSND_OCx == IRSND_OC2 // OC2\r
+# define IRSND_PORT_LETTER B\r
+# define IRSND_BIT_NUMBER 3\r
+# else\r
+# error Wrong value for IRSND_OCx, choose IRSND_OC2 in irsndconfig.h\r
+# endif // IRSND_OCx\r
+#elif defined (__AVR_ATmega16__) || defined (__AVR_ATmega32__) // ATmega16|32 uses OC0 = PB3 or OC2 = PD7\r
+# if IRSND_OCx == IRSND_OC2 // OC2\r
+# define IRSND_PORT_LETTER D\r
+# define IRSND_BIT_NUMBER 7\r
+# elif IRSND_OCx == IRSND_OC0 // OC0\r
+# define IRSND_PORT_LETTER B\r
+# define IRSND_BIT_NUMBER 3\r
+# else\r
+# error Wrong value for IRSND_OCx, choose IRSND_OC2 or IRSND_OC0 in irsndconfig.h\r
+# endif // IRSND_OCx\r
+\r
+#elif defined (__AVR_ATmega162__) // ATmega162 uses OC2 = PB1 or OC0 = PB0\r
+# if IRSND_OCx == IRSND_OC2 // OC2\r
+# define IRSND_PORT_LETTER B\r
+# define IRSND_BIT_NUMBER 1\r
+# elif IRSND_OCx == IRSND_OC0 // OC0\r
+# define IRSND_PORT_LETTER B\r
+# define IRSND_BIT_NUMBER 0\r
+# else\r
+# error Wrong value for IRSND_OCx, choose IRSND_OC2 or IRSND_OC0 in irsndconfig.h\r
+# endif // IRSND_OCx\r
+\r
+#elif defined (__AVR_ATmega164__) \\r
+ || defined (__AVR_ATmega324__) \\r
+ || defined (__AVR_ATmega644__) \\r
+ || defined (__AVR_ATmega644P__) \\r
+ || defined (__AVR_ATmega1284__) \\r
+ || defined (__AVR_ATmega1284P__) // ATmega164|324|644|644P|1284 uses OC2A = PD7 or OC2B = PD6 or OC0A = PB3 or OC0B = PB4\r
+# if IRSND_OCx == IRSND_OC2A // OC2A\r
+# define IRSND_PORT_LETTER D\r
+# define IRSND_BIT_NUMBER 7\r
+# elif IRSND_OCx == IRSND_OC2B // OC2B\r
+# define IRSND_PORT_LETTER D\r
+# define IRSND_BIT_NUMBER 6\r
+# elif IRSND_OCx == IRSND_OC0A // OC0A\r
+# define IRSND_PORT_LETTER B\r
+# define IRSND_BIT_NUMBER 3\r
+# elif IRSND_OCx == IRSND_OC0B // OC0B\r
+# define IRSND_PORT_LETTER B\r
+# define IRSND_BIT_NUMBER 4\r
+# else\r
+# error Wrong value for IRSND_OCx, choose IRSND_OC2A, IRSND_OC2B, IRSND_OC0A, or IRSND_OC0B in irsndconfig.h\r
+# endif // IRSND_OCx\r
+\r
+#elif defined (__AVR_ATmega48__) \\r
+ || defined (__AVR_ATmega88__) \\r
+ || defined (__AVR_ATmega88P__) \\r
+ || defined (__AVR_ATmega168__) \\r
+ || defined (__AVR_ATmega168P__) \\r
+ || defined (__AVR_ATmega328P__) // ATmega48|88|168|168|328 uses OC2A = PB3 or OC2B = PD3 or OC0A = PD6 or OC0B = PD5\r
+# if IRSND_OCx == IRSND_OC2A // OC2A\r
+# define IRSND_PORT_LETTER B\r
+# define IRSND_BIT_NUMBER 3\r
+# elif IRSND_OCx == IRSND_OC2B // OC2B\r
+# define IRSND_PORT_LETTER D\r
+# define IRSND_BIT_NUMBER 3\r
+# elif IRSND_OCx == IRSND_OC0A // OC0A\r
+# define IRSND_PORT_LETTER D\r
+# define IRSND_BIT_NUMBER 6\r
+# elif IRSND_OCx == IRSND_OC0B // OC0B\r
+# define IRSND_PORT_LETTER D\r
+# define IRSND_BIT_NUMBER 5\r
+# else\r
+# error Wrong value for IRSND_OCx, choose IRSND_OC2A, IRSND_OC2B, IRSND_OC0A, or IRSND_OC0B in irsndconfig.h\r
+# endif // IRSND_OCx\r
+\r
+#elif defined (__AVR_ATmega8515__) // ATmega8515 uses OC0 = PB0 or OC1A = PD5 or OC1B = PE2\r
+# if IRSND_OCx == IRSND_OC0\r
+# define IRSND_PORT_LETTER B\r
+# define IRSND_BIT_NUMBER 0\r
+# elif IRSND_OCx == IRSND_OC1A\r
+# define IRSND_PORT_LETTER D\r
+# define IRSND_BIT_NUMBER 5\r
+# elif IRSND_OCx == IRSND_OC1B\r
+# define IRSND_PORT_LETTER E\r
+# define IRSND_BIT_NUMBER 2\r
+# endif // IRSND_OCx\r
+\r
+#elif defined (__AVR_XMEGA__) // ATxmega\r
+# if IRSND_OCx == IRSND_XMEGA_OC0A\r
+# define IRSND_BIT_NUMBER 0\r
+# elif IRSND_OCx == IRSND_XMEGA_OC0B\r
+# define IRSND_BIT_NUMBER 1\r
+# elif IRSND_OCx == IRSND_XMEGA_OC0C\r
+# define IRSND_BIT_NUMBER 2\r
+# elif IRSND_OCx == IRSND_XMEGA_OC0D\r
+# define IRSND_BIT_NUMBER 3\r
+# elif IRSND_OCx == IRSND_XMEGA_OC1A\r
+# define IRSND_BIT_NUMBER 4\r
+# elif IRSND_OCx == IRSND_XMEGA_OC1B\r
+# define IRSND_BIT_NUMBER 5\r
+# else\r
+# error Wrong value for IRSND_OCx, choose IRSND_XMEGA_OC0A, IRSND_XMEGA_OC0B, IRSND_XMEGA_OC0C, IRSND_XMEGA_OC0D, IRSND_XMEGA_OC1A, or IRSND_XMEGA_OC1B in irsndconfig.h\r
+# endif // IRSND_OCx\r
+\r
+#elif defined (PIC_C18) // Microchip C18 compiler\r
+ //Nothing here to do here -> See irsndconfig.h\r
+#elif defined (ARM_STM32) // STM32\r
+ //Nothing here to do here -> See irsndconfig.h\r
+#elif defined (__xtensa__) // ESP8266\r
+ //Nothing here to do here -> See irsndconfig.h\r