]>
cloudbase.mooo.com Git - irmp.git/blob - irmp-main-avr.c
1 /*---------------------------------------------------------------------------------------------------------------------------------------------------
2 * irmp-main-avr.c - demo main module to test IRMP decoder on AVR
4 * Copyright (c) 2009-2017 Frank Meyer - frank(at)fli4l.de
6 * $Id: irmp-main-avr.c,v 1.1 2016/01/12 11:55:05 fm Exp $
8 * This demo module is runnable on AVRs
10 * ATMEGA88 @ 8 MHz internal RC Osc with BODLEVEL 4.3V: lfuse: 0xE2 hfuse: 0xDC efuse: 0xF9
11 * ATMEGA88 @ 8 MHz external Crystal Osc with BODLEVEL 4.3V: lfuse: 0xFF hfuse: 0xDC efuse: 0xF9
13 * This program is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License as published by
15 * the Free Software Foundation; either version 2 of the License, or
16 * (at your option) any later version.
17 *---------------------------------------------------------------------------------------------------------------------------------------------------
29 #if defined (__AVR_ATtiny45__) || defined (__AVR_ATtiny85__) // ATtiny45 / ATtiny85:
31 #if F_CPU >= 16000000L
32 OCR1C
= (F_CPU
/ F_INTERRUPTS
/ 8) - 1; // compare value: 1/15000 of CPU frequency, presc = 8
33 TCCR1
= (1 << CTC1
) | (1 << CS12
); // switch CTC Mode on, set prescaler to 8
35 OCR1C
= (F_CPU
/ F_INTERRUPTS
/ 4) - 1; // compare value: 1/15000 of CPU frequency, presc = 4
36 TCCR1
= (1 << CTC1
) | (1 << CS11
) | (1 << CS10
); // switch CTC Mode on, set prescaler to 4
40 OCR1A
= (F_CPU
/ F_INTERRUPTS
) - 1; // compare value: 1/15000 of CPU frequency
41 TCCR1B
= (1 << WGM12
) | (1 << CS10
); // switch CTC Mode on, set prescaler to 1
45 TIMSK1
= 1 << OCIE1A
; // OCIE1A: Interrupt by timer compare
47 TIMSK
= 1 << OCIE1A
; // OCIE1A: Interrupt by timer compare
51 #ifdef TIM1_COMPA_vect // ATtiny84
52 #define COMPA_VECT TIM1_COMPA_vect
54 #define COMPA_VECT TIMER1_COMPA_vect // ATmega
57 ISR(COMPA_VECT
) // Timer1 output compare A interrupt service routine, called every 1/15000 sec
59 (void) irmp_ISR(); // call irmp ISR
60 // call other timer interrupt routines...
68 irmp_init(); // initialize IRMP
69 timer1_init(); // initialize timer1
71 sei (); // enable interrupts
75 if (irmp_get_data (&irmp_data
))
77 ; // got an IR message, do something