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