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-
6764// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, etc
6865#else
6966 //#define IR_USE_TIMER1 // tx = pin 9
9390// Pulse parms are *50-100 for the Mark and *50+100 for the space
9491// First MARK is the one after the long gap
9592// pulse parameters in usec
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
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
107104#define SONY_RPT_LENGTH 45000
108105#define SONY_DOUBLE_SPACE_USECS 500 // usually ssee 713 - not using ticks as get number wrapround
109106
110107// SA 8650B
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
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
114111#define SANYO_ZERO_MARK 700 // seen 700
115112#define SANYO_DOUBLE_SPACE_USECS 800 // usually ssee 713 - not using ticks as get number wrapround
116113#define SANYO_RPT_LENGTH 45000
117114
118115// Mitsubishi RM 75501
119116// 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
120117
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
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
124121#define MITSUBISHI_ZERO_MARK 750 // 17*50-100
125122// #define MITSUBISHI_DOUBLE_SPACE_USECS 800 // usually ssee 713 - not using ticks as get number wrapround
126123// #define MITSUBISHI_RPT_LENGTH 45000
127124
128125
129- #define RC5_T1 889
130- #define RC5_RPT_LENGTH 46000
126+ #define RC5_T1 889
127+ #define RC5_RPT_LENGTH 46000
131128
132- #define RC6_HDR_MARK 2666
133- #define RC6_HDR_SPACE 889
134- #define RC6_T1 444
135- #define RC6_RPT_LENGTH 46000
129+ #define RC6_HDR_MARK 2666
130+ #define RC6_HDR_SPACE 889
131+ #define RC6_T1 444
132+ #define RC6_RPT_LENGTH 46000
136133
137134#define SHARP_BIT_MARK 245
138135#define SHARP_ONE_SPACE 1805
162159#define JVC_ZERO_SPACE 550
163160#define JVC_RPT_LENGTH 60000
164161
162+ #define SAMSUNG_HDR_MARK 5000
163+ #define SAMSUNG_HDR_SPACE 5000
164+ #define SAMSUNG_BIT_MARK 560
165+ #define SAMSUNG_ONE_SPACE 1600
166+ #define SAMSUNG_ZERO_SPACE 560
167+ #define SAMSUNG_RPT_SPACE 2250
168+
169+
165170#define SHARP_BITS 15
166171#define DISH_BITS 16
167172
175180#define TICKS_LOW (us ) (int) (((us)*LTOL/USECPERTICK))
176181#define TICKS_HIGH (us ) (int) (((us)*UTOL/USECPERTICK + 1))
177182
178- #ifndef DEBUG
179- int MATCH (int measured , int desired ) {return measured >= TICKS_LOW (desired ) && measured <= TICKS_HIGH (desired );}
180- int MATCH_MARK (int measured_ticks , int desired_us ) {return MATCH (measured_ticks , (desired_us + MARK_EXCESS ));}
181- int MATCH_SPACE (int measured_ticks , int desired_us ) {return MATCH (measured_ticks , (desired_us - MARK_EXCESS ));}
182- // Debugging versions are in IRremote.cpp
183- #endif
184-
185183// receiver states
186184#define STATE_IDLE 2
187185#define STATE_MARK 3
@@ -216,6 +214,7 @@ extern volatile irparams_t irparams;
216214#define MIN_RC6_SAMPLES 1
217215#define PANASONIC_BITS 48
218216#define JVC_BITS 16
217+ #define SAMSUNG_BITS 32
219218
220219
221220
@@ -274,13 +273,7 @@ extern volatile irparams_t irparams;
274273 #define TIMER_ENABLE_INTR (TIMSK1 = _BV(OCIE1A))
275274 #define TIMER_DISABLE_INTR (TIMSK1 = 0)
276275#endif
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-
276+ #define TIMER_INTR_NAME TIMER1_COMPA_vect
284277#define TIMER_CONFIG_KHZ (val ) ({ \
285278 const uint16_t pwmval = SYSCLOCK / 2000 / (val); \
286279 TCCR1A = _BV(WGM11); \
@@ -300,8 +293,6 @@ extern volatile irparams_t irparams;
300293#define TIMER_PWM_PIN 11 /* Arduino Mega */
301294#elif defined(__AVR_ATmega644P__ ) || defined(__AVR_ATmega644__ )
302295#define TIMER_PWM_PIN 13 /* Sanguino */
303- #elif defined(__AVR_ATtinyX4__ )
304- #define TIMER_PWM_PIN 6 /* ATTiny84 */
305296#else
306297#define TIMER_PWM_PIN 9 /* Arduino Duemilanove, Diecimila, LilyPad, etc */
307298#endif
0 commit comments