|
15 | 15 | // |
16 | 16 | // JVC and Panasonic protocol added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post) |
17 | 17 | // Whynter A/C ARC-110WD added by Francesco Meschia |
| 18 | + |
| 19 | +// Sparkfun Pro Micro support by Alastair McCormack |
18 | 20 | //****************************************************************************** |
19 | 21 |
|
20 | 22 | #ifndef boarddefs_h |
|
70 | 72 | // switch IRremote to use a different timer. |
71 | 73 | // |
72 | 74 |
|
| 75 | +// Sparkfun Pro Micro |
| 76 | +#if defined(ARDUINO_AVR_PROMICRO) |
| 77 | + //#define IR_USE_TIMER1 // tx = pin 9 |
| 78 | + #define IR_USE_TIMER3 // tx = pin 5 |
| 79 | + //#define IR_USE_TIMER4_HS // tx = pin 5 |
| 80 | + |
73 | 81 | // Arduino Mega |
74 | | -#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) |
| 82 | +#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) |
75 | 83 | //#define IR_USE_TIMER1 // tx = pin 11 |
76 | 84 | #define IR_USE_TIMER2 // tx = pin 9 |
77 | 85 | //#define IR_USE_TIMER3 // tx = pin 5 |
|
246 | 254 | # define TIMER_PWM_PIN CORE_OC1A_PIN // Teensy |
247 | 255 | #elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) |
248 | 256 | # define TIMER_PWM_PIN 11 // Arduino Mega |
249 | | -#elif defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__) |
250 | | -# define TIMER_PWM_PIN 13 // MegaCore |
251 | 257 | #elif defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) \ |
252 | 258 | || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) \ |
253 | 259 | || defined(__AVR_ATmega324P__) || defined(__AVR_ATmega324A__) \ |
254 | 260 | || defined(__AVR_ATmega324PA__) || defined(__AVR_ATmega164A__) \ |
255 | 261 | || defined(__AVR_ATmega164P__) || defined(__AVR_ATmega32__) \ |
256 | | -|| defined(__AVR_ATmega16__) || defined(__AVR_ATmega8535__) |
257 | | -# define TIMER_PWM_PIN 13 // MightyCore |
| 262 | +|| defined(__AVR_ATmega16__) || defined(__AVR_ATmega8535__) \ |
| 263 | +|| defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__) |
| 264 | +# define TIMER_PWM_PIN 13 // MightyCore, MegaCore |
258 | 265 | #elif defined(__AVR_ATtiny84__) |
259 | 266 | # define TIMER_PWM_PIN 6 |
260 | 267 | #else |
261 | | -# define TIMER_PWM_PIN 9 // Arduino Duemilanove, Diecimila, LilyPad, etc |
| 268 | +# define TIMER_PWM_PIN 9 // Arduino Duemilanove, Diecimila, LilyPad, Sparkfun Pro Micro etc |
262 | 269 | #endif // ATmega48, ATmega88, ATmega168, ATmega328 |
263 | 270 |
|
264 | 271 | //--------------------------------------------------------- |
|
291 | 298 | //----------------- |
292 | 299 | #if defined(CORE_OC3A_PIN) |
293 | 300 | # define TIMER_PWM_PIN CORE_OC3A_PIN // Teensy |
294 | | -#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) |
295 | | -# define TIMER_PWM_PIN 5 // Arduino Mega |
| 301 | +#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(ARDUINO_AVR_PROMICRO) |
| 302 | +# define TIMER_PWM_PIN 5 // Arduino Mega, Sparkfun Pro Micro |
296 | 303 | #elif defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) |
297 | 304 | # define TIMER_PWM_PIN 6 // MightyCore |
298 | 305 | #else |
|
305 | 312 | #elif defined(IR_USE_TIMER4_HS) |
306 | 313 |
|
307 | 314 | #define TIMER_RESET |
308 | | -#define TIMER_ENABLE_PWM (TCCR4A |= _BV(COM4A1)) |
309 | | -#define TIMER_DISABLE_PWM (TCCR4A &= ~(_BV(COM4A1))) |
| 315 | + |
| 316 | +#if defined(ARDUINO_AVR_PROMICRO) // Sparkfun Pro Micro |
| 317 | + #define TIMER_ENABLE_PWM (TCCR4A |= _BV(COM4A0)) // Use complimentary O̅C̅4̅A̅ output on pin 5 |
| 318 | + #define TIMER_DISABLE_PWM (TCCR4A &= ~(_BV(COM4A0))) // (Pro Micro does not map PC7 (32/ICP3/CLK0/OC4A) |
| 319 | + // of ATmega32U4 ) |
| 320 | +#else |
| 321 | + #define TIMER_ENABLE_PWM (TCCR4A |= _BV(COM4A1)) |
| 322 | + #define TIMER_DISABLE_PWM (TCCR4A &= ~(_BV(COM4A1))) |
| 323 | +#endif |
| 324 | + |
310 | 325 | #define TIMER_ENABLE_INTR (TIMSK4 = _BV(TOIE4)) |
311 | 326 | #define TIMER_DISABLE_INTR (TIMSK4 = 0) |
312 | 327 | #define TIMER_INTR_NAME TIMER4_OVF_vect |
313 | 328 |
|
| 329 | + |
314 | 330 | #define TIMER_CONFIG_KHZ(val) ({ \ |
315 | 331 | const uint16_t pwmval = SYSCLOCK / 2000 / (val); \ |
316 | 332 | TCCR4A = (1<<PWM4A); \ |
|
339 | 355 | //----------------- |
340 | 356 | #if defined(CORE_OC4A_PIN) |
341 | 357 | # define TIMER_PWM_PIN CORE_OC4A_PIN // Teensy |
| 358 | +#elif defined(ARDUINO_AVR_PROMICRO) |
| 359 | +# define TIMER_PWM_PIN 5 // Sparkfun Pro Micro |
342 | 360 | #elif defined(__AVR_ATmega32U4__) |
343 | 361 | # define TIMER_PWM_PIN 13 // Leonardo |
344 | 362 | #else |
|
0 commit comments