...
- The ATmega328P provides support for 25 different interrupt sources. These interrupts and the separate Reset Vector each have a separate program vector located at the lowest addresses in the Flash program memory space.
VECTOR NO | PROGRAM ADDRESS | SOURCE | INTERRUPT DEFINITION | ARDUINO/C++ ISR() MACRO VECTOR NAME | ASSEMBLY NAME |
---|---|---|---|---|---|
Code Block |
---|
static uint8_t saveTCCR1A, saveTCCR1B; static inline void capture_init(void) { saveTCCR1A = TCCR1A; saveTCCR1B = TCCR1B; //reset TimerCounter 1 TCCR1B = 0; TCCR1A = 0; TCNT1 = 0; TIFR1 = (1<<ICF1) | (1<<TOV1); TIMSK1 = (1<<ICIE1) | (1<<TOIE1); } static inline void capture_start(void) { TCCR1B = (1<<ICNC1) | (1<<ICES1) | (1<<CS10); } static inline uint16_t capture_read(void) { return ICR1; } static inline uint8_t capture_overflow(void) { return TIFR1 & (1<<TOV1); } static inline void capture_overflow_reset(void) { TIFR1 = (1<<TOV1); } static inline void capture_shutdown(void) { TCCR1B = 0; TIMSK1 = 0; TCCR1A = saveTCCR1A; TCCR1B = saveTCCR1B; } #define TIMER_OVERFLOW_VECTOR TIMER1_OVF_vect #define TIMER_CAPTURE_VECTOR TIMER1_CAPT_vect |
...