mca-pendel/sketches/pendulum/timer_macros.h

123 lines
4.4 KiB
C

#ifndef _AVR_MACROS_H_
#define _AVR_MACROS_H_
//// Compare Output Mode for Channel A
#define TCCRnA_COMnA_disconnected 0x00
#define TCCRnA_COMnA_toggle 0x40
#define TCCRnA_COMnA_low 0x80
#define TCCRnA_COMnA_high 0xf0
#define TCCRnA_COMnA_CLEAR ~ ( TCCRnA_COMnA_disconnected \
| TCCRnA_COMnA_toggle \
| TCCRnA_COMnA_low \
| TCCRnA_COMnA_high )
// Compare Output Mode for Channel B
#define TCCRnA_COMnB_disconnected 0x00
#define TCCRnA_COMnB_toggle 0x10
#define TCCRnA_COMnB_low 0x20
#define TCCRnA_COMnB_high 0x30
#define TCCRnA_COMnB_CLEAR ~ ( TCCRnA_COMnB_disconnected \
| TCCRnA_COMnB_toggle \
| TCCRnA_COMnB_low \
| TCCRnA_COMnB_high )
// Timer/CounterN Interrupt Mask Register
#define TIMSKn_ENABLE_INTERRUPT_on_nothing 0x00
#define TIMSKn_ENABLE_INTERRUPT_on_overflow 0x01
#define TIMSKn_ENABLE_INTERRUPT_on_compare_match_A 0x02
#define TIMSKn_ENABLE_INTERRUPT_on_compare_match_B 0x04
#define TIMSKn_ENABLE_INTERRUPT_CLEAR ~ ( TIMSKn_ENABLE_INTERRUPT_on_nothing \
| TIMSKn_ENABLE_INTERRUPT_on_overflow \
| TIMSKn_ENABLE_INTERRUPT_on_compare_match_A \
| TIMSKn_ENABLE_INTERRUPT_on_compare_match_B )
/**********************************************************/
// Timer/Counter0 Control Register A
// Compare Output Mode for Channel A
#define TCCR0A_COM0A_disconnected 0x00
#define TCCR0A_COM0A_toggle 0x40
#define TCCR0A_COM0A_low 0x80
#define TCCR0A_COM0A_high 0xf0
// Compare Output Mode for Channel B
#define TCCR0A_COM0B_disconnected 0x00
#define TCCR0A_COM0B_toggle 0x10
#define TCCR0A_COM0B_low 0x20
#define TCCR0A_COM0B_high 0x30
// Timer/Counter0 Control Register B
// Clock Select 0 (prescaler)
#define TCCR0B_CS0_stopped 0x00
#define TCCR0B_CS0_prescale1 0x01
#define TCCR0B_CS0_prescale8 0x02
#define TCCR0B_CS0_prescale64 0x03
#define TCCR0B_CS0_prescale256 0x04
#define TCCR0B_CS0_prescale1024 0x05
#define TCCR0B_CS0_falling_on_T0 0x06
#define TCCR0B_CS0_rising_on_T0 0x07
// Timer/Counter0 Interrupt Mask Register
#define TIMSK0_ENABLE_INTERRUPT_on_nothing 0x00
#define TIMSK0_ENABLE_INTERRUPT_on_overflow 0x01
#define TIMSK0_ENABLE_INTERRUPT_on_compare_match_A 0x02
#define TIMSK0_ENABLE_INTERRUPT_on_compare_match_B 0x04
// Timer/Counter1 Control Register A
// Compare Output Mode for Channel A
#define TCCR1A_COM1A_disconnected 0x00
#define TCCR1A_COM1A_toggle 0x40
#define TCCR1A_COM1A_low 0x80
#define TCCR1A_COM1A_high 0xf0
// Compare Output Mode for Channel B
#define TCCR1A_COM1B_disconnected 0x00
#define TCCR1A_COM1B_toggle 0x10
#define TCCR1A_COM1B_low 0x20
#define TCCR1A_COM1B_high 0x30
// Timer/Counter1 Control Register B
// Clock Select 1 (prescaler)
#define TCCR1B_CS1_stopped 0x00
#define TCCR1B_CS1_prescale1 0x01
#define TCCR1B_CS1_prescale8 0x02
#define TCCR1B_CS1_prescale64 0x03
#define TCCR1B_CS1_prescale256 0x04
#define TCCR1B_CS1_prescale1024 0x05
#define TCCR1B_CS1_falling_on_T1 0x06
#define TCCR1B_CS1_rising_on_T1 0x07
// Timer/Counter1 Interrupt Mask Register
#define TIMSK1_ENABLE_INTERRUPT_on_nothing 0x00
#define TIMSK1_ENABLE_INTERRUPT_on_overflow 0x01
#define TIMSK1_ENABLE_INTERRUPT_on_compare_match_A 0x02
#define TIMSK1_ENABLE_INTERRUPT_on_compare_match_B 0x04
// Timer/Counter2 Control Register A
// Compare Output Mode for Channel A
#define TCCR2A_COM2A_disconnected 0x00
#define TCCR2A_COM2A_toggle 0x40
#define TCCR2A_COM2A_low 0x80
#define TCCR2A_COM2A_high 0xf0
// Compare Output Mode for Channel B
#define TCCR2A_COM2B_disconnected 0x00
#define TCCR2A_COM2B_toggle 0x10
#define TCCR2A_COM2B_low 0x20
#define TCCR2A_COM2B_high 0x30
// Timer/Counter1 Control Register B
// Clock Select 1 (prescaler)
#define TCCR2B_CS2_stopped 0x00
#define TCCR2B_CS2_prescale1 0x01
#define TCCR2B_CS2_prescale8 0x02
#define TCCR2B_CS2_prescale32 0x03
#define TCCR2B_CS2_prescale64 0x04
#define TCCR2B_CS2_prescale128 0x05
#define TCCR2B_CS2_prescale256 0x06
#define TCCR2B_CS2_prescale1024 0x07
// Timer/Counter1 Interrupt Mask Register
#define TIMSK2_ENABLE_INTERRUPT_on_nothing 0x00
#define TIMSK2_ENABLE_INTERRUPT_on_overflow 0x01
#define TIMSK2_ENABLE_INTERRUPT_on_compare_match_A 0x02
#define TIMSK2_ENABLE_INTERRUPT_on_compare_match_B 0x04
#endif