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 |