6161#elif defined(__AVR_ATmega8P__ ) || defined(__AVR_ATmega8__ )
6262 #define IR_USE_TIMER1 // tx = pin 9
6363
64+ #elif defined( __AVR_ATtinyX4__ )
65+ #define IR_USE_TIMER1 // tx = pin 6
66+
6467// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, etc
6568#else
6669 //#define IR_USE_TIMER1 // tx = pin 9
9093// Pulse parms are *50-100 for the Mark and *50+100 for the space
9194// First MARK is the one after the long gap
9295// pulse parameters in usec
93- #define NEC_HDR_MARK 9000
94- #define NEC_HDR_SPACE 4500
95- #define NEC_BIT_MARK 560
96- #define NEC_ONE_SPACE 1600
97- #define NEC_ZERO_SPACE 560
98- #define NEC_RPT_SPACE 2250
99-
100- #define SONY_HDR_MARK 2400
101- #define SONY_HDR_SPACE 600
102- #define SONY_ONE_MARK 1200
103- #define SONY_ZERO_MARK 600
96+ #define NEC_HDR_MARK 9000
97+ #define NEC_HDR_SPACE 4500
98+ #define NEC_BIT_MARK 560
99+ #define NEC_ONE_SPACE 1600
100+ #define NEC_ZERO_SPACE 560
101+ #define NEC_RPT_SPACE 2250
102+
103+ #define SONY_HDR_MARK 2400
104+ #define SONY_HDR_SPACE 600
105+ #define SONY_ONE_MARK 1200
106+ #define SONY_ZERO_MARK 600
104107#define SONY_RPT_LENGTH 45000
105108#define SONY_DOUBLE_SPACE_USECS 500 // usually ssee 713 - not using ticks as get number wrapround
106109
107110// SA 8650B
108- #define SANYO_HDR_MARK 3500 // seen range 3500
109- #define SANYO_HDR_SPACE 950 // seen 950
110- #define SANYO_ONE_MARK 2400 // seen 2400
111+ #define SANYO_HDR_MARK 3500 // seen range 3500
112+ #define SANYO_HDR_SPACE 950 // seen 950
113+ #define SANYO_ONE_MARK 2400 // seen 2400
111114#define SANYO_ZERO_MARK 700 // seen 700
112115#define SANYO_DOUBLE_SPACE_USECS 800 // usually ssee 713 - not using ticks as get number wrapround
113116#define SANYO_RPT_LENGTH 45000
114117
115118// Mitsubishi RM 75501
116119// 14200 7 41 7 42 7 42 7 17 7 17 7 18 7 41 7 18 7 17 7 17 7 18 7 41 8 17 7 17 7 18 7 17 7
117120
118- // #define MITSUBISHI_HDR_MARK 250 // seen range 3500
119- #define MITSUBISHI_HDR_SPACE 350 // 7*50+100
120- #define MITSUBISHI_ONE_MARK 1950 // 41*50-100
121+ // #define MITSUBISHI_HDR_MARK 250 // seen range 3500
122+ #define MITSUBISHI_HDR_SPACE 350 // 7*50+100
123+ #define MITSUBISHI_ONE_MARK 1950 // 41*50-100
121124#define MITSUBISHI_ZERO_MARK 750 // 17*50-100
122125// #define MITSUBISHI_DOUBLE_SPACE_USECS 800 // usually ssee 713 - not using ticks as get number wrapround
123126// #define MITSUBISHI_RPT_LENGTH 45000
124127
125128
126- #define RC5_T1 889
127- #define RC5_RPT_LENGTH 46000
129+ #define RC5_T1 889
130+ #define RC5_RPT_LENGTH 46000
128131
129- #define RC6_HDR_MARK 2666
130- #define RC6_HDR_SPACE 889
131- #define RC6_T1 444
132- #define RC6_RPT_LENGTH 46000
132+ #define RC6_HDR_MARK 2666
133+ #define RC6_HDR_SPACE 889
134+ #define RC6_T1 444
135+ #define RC6_RPT_LENGTH 46000
133136
134137#define SHARP_BIT_MARK 245
135138#define SHARP_ONE_SPACE 1805
@@ -271,7 +274,13 @@ extern volatile irparams_t irparams;
271274 #define TIMER_ENABLE_INTR (TIMSK1 = _BV(OCIE1A))
272275 #define TIMER_DISABLE_INTR (TIMSK1 = 0)
273276#endif
274- #define TIMER_INTR_NAME TIMER1_COMPA_vect
277+
278+ #if defined(__AVR_ATtinyX4__ )
279+ #define TIMER_INTR_NAME TIM1_COMPA_vect
280+ #else
281+ #define TIMER_INTR_NAME TIMER1_COMPA_vect
282+ #endif
283+
275284#define TIMER_CONFIG_KHZ (val ) ({ \
276285 const uint16_t pwmval = SYSCLOCK / 2000 / (val); \
277286 TCCR1A = _BV(WGM11); \
@@ -291,6 +300,8 @@ extern volatile irparams_t irparams;
291300#define TIMER_PWM_PIN 11 /* Arduino Mega */
292301#elif defined(__AVR_ATmega644P__ ) || defined(__AVR_ATmega644__ )
293302#define TIMER_PWM_PIN 13 /* Sanguino */
303+ #elif defined(__AVR_ATtinyX4__ )
304+ #define TIMER_PWM_PIN 6 /* ATTiny84 */
294305#else
295306#define TIMER_PWM_PIN 9 /* Arduino Duemilanove, Diecimila, LilyPad, etc */
296307#endif
0 commit comments