Subversion Repositories HomeAutomation

Rev

Rev 492 | Rev 1468 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 492 Rev 1415
Line 28... Line 28...
28
/*-----------------------------------------------------------------------------
28
/*-----------------------------------------------------------------------------
29
 * Interrupt Service Routines
29
 * Interrupt Service Routines
30
 *---------------------------------------------------------------------------*/
30
 *---------------------------------------------------------------------------*/
31
#if defined(TIMEBASE_NEW_IMPLEMENTATION)
31
#if defined(TIMEBASE_NEW_IMPLEMENTATION)
32
 
32
 
33
#if defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__)
33
#if defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__)
34
#if defined(TIMER2)
34
#if defined(TIMER2)
35
ISR(TIMER2_COMPA_vect) {
35
ISR(TIMER2_COMPA_vect) {
36
#else //!defined(TIMER2)
36
#else //!defined(TIMER2)
37
ISR(TIMER0_COMPA_vect) {
37
ISR(TIMER0_COMPA_vect) {
38
#endif //defined(TIMER2)
38
#endif //defined(TIMER2)
39
#else //!defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__)
39
#else //!defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__)
40
ISR(TIMER2_COMP_vect) {
40
ISR(TIMER2_COMP_vect) {
41
#endif //defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__)
41
#endif //defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__)
42
    gMilliSecTick++;
42
    gMilliSecTick++;
43
}
43
}
44
 
44
 
45
#else //!defined(TIMEBASE_NEW_IMPLEMENTATION)
45
#else //!defined(TIMEBASE_NEW_IMPLEMENTATION)
46
 
46
 
Line 81... Line 81...
81
    OCR2 = TIMEBASE_HITS_PER_1MS; // set timer period
81
    OCR2 = TIMEBASE_HITS_PER_1MS; // set timer period
82
    TIFR  |= (1<<OCF2);  // clear ouput compare match flag
82
    TIFR  |= (1<<OCF2);  // clear ouput compare match flag
83
    TIMSK |= (1<<OCIE2); // enable output compare match interrupt
83
    TIMSK |= (1<<OCIE2); // enable output compare match interrupt
84
    #endif
84
    #endif
85
   
85
   
86
    #if defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__)
86
    #if defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__)
87
    TCCR2A = (1<<WGM21); // CTC mode
87
    TCCR2A = (1<<WGM21); // CTC mode
88
    #if TIMEBASE_PRESCALE == 64
88
    #if TIMEBASE_PRESCALE == 64
89
    TCCR2B = (1<<CS22); // prescaler: 64
89
    TCCR2B = (1<<CS22); // prescaler: 64
90
    #elif TIMEBASE_PRESCALE == 256
90
    #elif TIMEBASE_PRESCALE == 256
91
    TCCR2B = (1<<CS22)|(1<<CS21);               // prescaler: 256
91
    TCCR2B = (1<<CS22)|(1<<CS21);               // prescaler: 256
Line 97... Line 97...
97
#else /* Use timer0 */
97
#else /* Use timer0 */
98
    #if defined(__AVR_ATmega8__)
98
    #if defined(__AVR_ATmega8__)
99
    #error TIMER0 not supported in ATmega8 with TIMEBASE_NEW_IMPLEMENTATION set!
99
    #error TIMER0 not supported in ATmega8 with TIMEBASE_NEW_IMPLEMENTATION set!
100
    #endif
100
    #endif
101
   
101
   
102
    #if defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__)
102
    #if defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__)
103
    TCCR0A = (1<<WGM01); // CTC mode
103
    TCCR0A = (1<<WGM01); // CTC mode
104
    #if TIMEBASE_PRESCALE == 64
104
    #if TIMEBASE_PRESCALE == 64
105
    TCCR0B = (1<<CS01) | (1<<CS00); // prescaler: 64
105
    TCCR0B = (1<<CS01) | (1<<CS00); // prescaler: 64
106
    #elif TIMEBASE_PRESCALE == 256
106
    #elif TIMEBASE_PRESCALE == 256
107
    TCCR0B = (1<<CS02);             // prescaler: 256
107
    TCCR0B = (1<<CS02);             // prescaler: 256
Line 125... Line 125...
125
    TCNT2 = TIMEBASE_RELOAD; // set initial reload-value
125
    TCNT2 = TIMEBASE_RELOAD; // set initial reload-value
126
    TIFR  |= (1<<TOV2);  // clear overflow int.
126
    TIFR  |= (1<<TOV2);  // clear overflow int.
127
    TIMSK |= (1<<TOIE2); // enable overflow-interrupt
127
    TIMSK |= (1<<TOIE2); // enable overflow-interrupt
128
    #endif
128
    #endif
129
   
129
   
130
    #if defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__)
130
    #if defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__)
131
    #if TIMEBASE_PRESCALE == 64
131
    #if TIMEBASE_PRESCALE == 64
132
    TCCR2B = (1<<CS22); // prescaler: 64
132
    TCCR2B = (1<<CS22); // prescaler: 64
133
    #elif TIMEBASE_PRESCALE == 256
133
    #elif TIMEBASE_PRESCALE == 256
134
    TCCR2B = (1<<CS22)|(1<<CS21);               // prescaler: 256
134
    TCCR2B = (1<<CS22)|(1<<CS21);               // prescaler: 256
135
    #endif
135
    #endif
Line 147... Line 147...
147
    TCNT0 = TIMEBASE_RELOAD; // set initial reload-value
147
    TCNT0 = TIMEBASE_RELOAD; // set initial reload-value
148
    TIFR  |= (1<<TOV0);  // clear overflow int.
148
    TIFR  |= (1<<TOV0);  // clear overflow int.
149
    TIMSK |= (1<<TOIE0); // enable overflow-interrupt
149
    TIMSK |= (1<<TOIE0); // enable overflow-interrupt
150
    #endif
150
    #endif
151
   
151
   
152
    #if defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__)
152
    #if defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__)
153
    #if TIMEBASE_PRESCALE == 64
153
    #if TIMEBASE_PRESCALE == 64
154
    TCCR0B = (1<<CS01) | (1<<CS00); // prescaler: 64
154
    TCCR0B = (1<<CS01) | (1<<CS00); // prescaler: 64
155
    #elif TIMEBASE_PRESCALE == 256
155
    #elif TIMEBASE_PRESCALE == 256
156
    TCCR0B = (1<<CS02);             // prescaler: 256
156
    TCCR0B = (1<<CS02);             // prescaler: 256
157
    #endif
157
    #endif