|
|
@ -95,29 +95,29 @@ static inline void handle_interrupts(timer16_Sequence_t timer, volatile uint16_t
|
|
|
|
#ifndef WIRING // Wiring pre-defines signal handlers so don't define any if compiling for the Wiring platform
|
|
|
|
#ifndef WIRING // Wiring pre-defines signal handlers so don't define any if compiling for the Wiring platform
|
|
|
|
|
|
|
|
|
|
|
|
// Interrupt handlers for Arduino
|
|
|
|
// Interrupt handlers for Arduino
|
|
|
|
#if ENABLED(_useTimer1)
|
|
|
|
#ifdef _useTimer1
|
|
|
|
SIGNAL(TIMER1_COMPA_vect) { handle_interrupts(_timer1, &TCNT1, &OCR1A); }
|
|
|
|
SIGNAL(TIMER1_COMPA_vect) { handle_interrupts(_timer1, &TCNT1, &OCR1A); }
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(_useTimer3)
|
|
|
|
#ifdef _useTimer3
|
|
|
|
SIGNAL(TIMER3_COMPA_vect) { handle_interrupts(_timer3, &TCNT3, &OCR3A); }
|
|
|
|
SIGNAL(TIMER3_COMPA_vect) { handle_interrupts(_timer3, &TCNT3, &OCR3A); }
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(_useTimer4)
|
|
|
|
#ifdef _useTimer4
|
|
|
|
SIGNAL(TIMER4_COMPA_vect) { handle_interrupts(_timer4, &TCNT4, &OCR4A); }
|
|
|
|
SIGNAL(TIMER4_COMPA_vect) { handle_interrupts(_timer4, &TCNT4, &OCR4A); }
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(_useTimer5)
|
|
|
|
#ifdef _useTimer5
|
|
|
|
SIGNAL(TIMER5_COMPA_vect) { handle_interrupts(_timer5, &TCNT5, &OCR5A); }
|
|
|
|
SIGNAL(TIMER5_COMPA_vect) { handle_interrupts(_timer5, &TCNT5, &OCR5A); }
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#else // WIRING
|
|
|
|
#else // WIRING
|
|
|
|
|
|
|
|
|
|
|
|
// Interrupt handlers for Wiring
|
|
|
|
// Interrupt handlers for Wiring
|
|
|
|
#if ENABLED(_useTimer1)
|
|
|
|
#ifdef _useTimer1
|
|
|
|
void Timer1Service() { handle_interrupts(_timer1, &TCNT1, &OCR1A); }
|
|
|
|
void Timer1Service() { handle_interrupts(_timer1, &TCNT1, &OCR1A); }
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if ENABLED(_useTimer3)
|
|
|
|
#ifdef _useTimer3
|
|
|
|
void Timer3Service() { handle_interrupts(_timer3, &TCNT3, &OCR3A); }
|
|
|
|
void Timer3Service() { handle_interrupts(_timer3, &TCNT3, &OCR3A); }
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
@ -126,7 +126,7 @@ static inline void handle_interrupts(timer16_Sequence_t timer, volatile uint16_t
|
|
|
|
/****************** end of static functions ******************************/
|
|
|
|
/****************** end of static functions ******************************/
|
|
|
|
|
|
|
|
|
|
|
|
void initISR(timer16_Sequence_t timer) {
|
|
|
|
void initISR(timer16_Sequence_t timer) {
|
|
|
|
#if ENABLED(_useTimer1)
|
|
|
|
#ifdef _useTimer1
|
|
|
|
if (timer == _timer1) {
|
|
|
|
if (timer == _timer1) {
|
|
|
|
TCCR1A = 0; // normal counting mode
|
|
|
|
TCCR1A = 0; // normal counting mode
|
|
|
|
TCCR1B = _BV(CS11); // set prescaler of 8
|
|
|
|
TCCR1B = _BV(CS11); // set prescaler of 8
|
|
|
@ -145,7 +145,7 @@ void initISR(timer16_Sequence_t timer) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(_useTimer3)
|
|
|
|
#ifdef _useTimer3
|
|
|
|
if (timer == _timer3) {
|
|
|
|
if (timer == _timer3) {
|
|
|
|
TCCR3A = 0; // normal counting mode
|
|
|
|
TCCR3A = 0; // normal counting mode
|
|
|
|
TCCR3B = _BV(CS31); // set prescaler of 8
|
|
|
|
TCCR3B = _BV(CS31); // set prescaler of 8
|
|
|
@ -163,7 +163,7 @@ void initISR(timer16_Sequence_t timer) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(_useTimer4)
|
|
|
|
#ifdef _useTimer4
|
|
|
|
if (timer == _timer4) {
|
|
|
|
if (timer == _timer4) {
|
|
|
|
TCCR4A = 0; // normal counting mode
|
|
|
|
TCCR4A = 0; // normal counting mode
|
|
|
|
TCCR4B = _BV(CS41); // set prescaler of 8
|
|
|
|
TCCR4B = _BV(CS41); // set prescaler of 8
|
|
|
@ -173,7 +173,7 @@ void initISR(timer16_Sequence_t timer) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(_useTimer5)
|
|
|
|
#ifdef _useTimer5
|
|
|
|
if (timer == _timer5) {
|
|
|
|
if (timer == _timer5) {
|
|
|
|
TCCR5A = 0; // normal counting mode
|
|
|
|
TCCR5A = 0; // normal counting mode
|
|
|
|
TCCR5B = _BV(CS51); // set prescaler of 8
|
|
|
|
TCCR5B = _BV(CS51); // set prescaler of 8
|
|
|
|