Subversion Repositories HomeAutomation

Rev

Rev 1695 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 1695 Rev 2289
Line 27... Line 27...
27
 
27
 
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
 
-
 
33
#if defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__)
32
#if defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__)
34
#if defined(TIMER2)
33
#if defined(TIMER2)
35
ISR(TIMER2_COMPA_vect) {
34
ISR(TIMER2_COMPA_vect) {
36
#else //!defined(TIMER2)
35
#else //!defined(TIMER2)
37
ISR(TIMER0_COMPA_vect) {
36
ISR(TIMER0_COMPA_vect) {
38
#endif //defined(TIMER2)
37
#endif //defined(TIMER2)
39
#else //!defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__)
38
#else //!defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__)
40
ISR(TIMER2_COMP_vect) {
39
ISR(TIMER2_COMP_vect) {
41
#endif //defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__)
40
#endif //defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__)
42
    gMilliSecTick++;
41
    gMilliSecTick++;
43
}
42
}
44
 
43
 
45
#else //!defined(TIMEBASE_NEW_IMPLEMENTATION)
44
#else //!defined(TIMEBASE_NEW_IMPLEMENTATION)
46
 
45
 
47
#if defined(TIMER2)
46
#if defined(TIMER2)
48
ISR(TIMER2_OVF_vect) {
47
ISR(TIMER2_OVF_vect) {
49
    TCNT2 = TIMEBASE_RELOAD;
48
    TCNT2 = TIMEBASE_RELOAD;
50
    gMilliSecTick++;
49
    gMilliSecTick++;
51
}
50
}
52
#else
51
#else
Line 71... Line 70...
71
#if defined(TIMEBASE_NEW_IMPLEMENTATION)
70
#if defined(TIMEBASE_NEW_IMPLEMENTATION)
72
 
71
 
73
#if defined(TIMER2)
72
#if defined(TIMER2)
74
    #if defined(__AVR_ATmega8__)
73
    #if defined(__AVR_ATmega8__)
75
    TCCR2 = (1<<WGM21); // CTC mode
74
    TCCR2 = (1<<WGM21); // CTC mode
76
    #if TIMEBASE_PRESCALE == 64
75
    #if TIMEBASE_PRESCALE == 64
77
    TCCR2 = (1<<CS22);  // prescaler: 64
76
    TCCR2 = (1<<CS22);  // prescaler: 64
78
    #elif TIMEBASE_PRESCALE == 256
77
    #elif TIMEBASE_PRESCALE == 256
79
    TCCR2 = (1<<CS22) | (1<<CS21); // prescaler: 256
78
    TCCR2 = (1<<CS22) | (1<<CS21); // prescaler: 256
80
    #endif
79
    #endif
81
    OCR2 = TIMEBASE_HITS_PER_1MS; // set timer period
80
    OCR2 = TIMEBASE_HITS_PER_1MS; // set timer period
82
    TIFR  |= (1<<OCF2);  // clear ouput compare match flag
81
    TIFR  |= (1<<OCF2);  // clear ouput compare match flag
83
    TIMSK |= (1<<OCIE2); // enable output compare match interrupt
82
    TIMSK |= (1<<OCIE2); // enable output compare match interrupt
84
    #endif
83
    #endif
85
   
84
   
86
    #if defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__)
85
    #if defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__)
87
    TCCR2A = (1<<WGM21); // CTC mode
86
    TCCR2A = (1<<WGM21); // CTC mode
88
    #if TIMEBASE_PRESCALE == 64
87
    #if TIMEBASE_PRESCALE == 64
89
    TCCR2B = (1<<CS22); // prescaler: 64
88
    TCCR2B = (1<<CS22); // prescaler: 64
90
    #elif TIMEBASE_PRESCALE == 256
89
    #elif TIMEBASE_PRESCALE == 256
91
    TCCR2B = (1<<CS22)|(1<<CS21);               // prescaler: 256
90
    TCCR2B = (1<<CS22)|(1<<CS21);               // prescaler: 256
92
    #endif
91
    #endif
93
    OCR2A = TIMEBASE_HITS_PER_1MS; // set timer period
92
    OCR2A = TIMEBASE_HITS_PER_1MS; // set timer period
94
    TIFR2  |= (1<<OCF2A);  // clear ouput compare match flag
93
    TIFR2  |= (1<<OCF2A);  // clear ouput compare match flag
95
    TIMSK2 |= (1<<OCIE2A); // enable output compare match interrupt
94
    TIMSK2 |= (1<<OCIE2A); // enable output compare match interrupt
96
    #endif
95
    #endif
97
#else /* Use timer0 */
96
#else /* Use timer0 */
Line 117... Line 116...
117
 
116
 
118
#if defined(TIMER2)
117
#if defined(TIMER2)
119
    #if defined(__AVR_ATmega8__)
118
    #if defined(__AVR_ATmega8__)
120
    #if TIMEBASE_PRESCALE == 64
119
    #if TIMEBASE_PRESCALE == 64
121
    TCCR2 = (1<<CS22);  // prescaler: 64
120
    TCCR2 = (1<<CS22);  // prescaler: 64
122
    #elif TIMEBASE_PRESCALE == 256
121
    #elif TIMEBASE_PRESCALE == 256
123
    TCCR2 = (1<<CS22) | (1<<CS21); // prescaler: 256
122
    TCCR2 = (1<<CS22) | (1<<CS21); // prescaler: 256
124
    #endif
123
    #endif
125
    TCNT2 = TIMEBASE_RELOAD; // set initial reload-value
124
    TCNT2 = TIMEBASE_RELOAD; // set initial reload-value
126
    TIFR  |= (1<<TOV2);  // clear overflow int.
125
    TIFR  |= (1<<TOV2);  // clear overflow int.
127
    TIMSK |= (1<<TOIE2); // enable overflow-interrupt
126
    TIMSK |= (1<<TOIE2); // enable overflow-interrupt
Line 147... Line 146...
147
    TCNT0 = TIMEBASE_RELOAD; // set initial reload-value
146
    TCNT0 = TIMEBASE_RELOAD; // set initial reload-value
148
    TIFR  |= (1<<TOV0);  // clear overflow int.
147
    TIFR  |= (1<<TOV0);  // clear overflow int.
149
    TIMSK |= (1<<TOIE0); // enable overflow-interrupt
148
    TIMSK |= (1<<TOIE0); // enable overflow-interrupt
150
    #endif
149
    #endif
151
   
150
   
152
    #if defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__)
151
    #if defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega64C1__)
153
    #if TIMEBASE_PRESCALE == 64
152
    #if TIMEBASE_PRESCALE == 64
154
    TCCR0B = (1<<CS01) | (1<<CS00); // prescaler: 64
153
    TCCR0B = (1<<CS01) | (1<<CS00); // prescaler: 64
155
    #elif TIMEBASE_PRESCALE == 256
154
    #elif TIMEBASE_PRESCALE == 256
156
    TCCR0B = (1<<CS02);             // prescaler: 256
155
    TCCR0B = (1<<CS02);             // prescaler: 256
157
    #endif
156
    #endif