Programmable Interval Timer
include/pit.h View source View on GitHubFunctions
Section titled “Functions”pit_init
Section titled “pit_init”void pit_init(void); pit_set_divisor
Section titled “pit_set_divisor”void pit_set_divisor(uint16_t divisor); pit_set_frequency
Section titled “pit_set_frequency”void pit_set_frequency(freq_hz_t freq_hz); pit_set_interval_ns
Section titled “pit_set_interval_ns”void pit_set_interval_ns(time_ns_t interval_ns); pit_set_periodic_mode
Section titled “pit_set_periodic_mode”void pit_set_periodic_mode(uint16_t divisor); pit_set_oneshot_mode
Section titled “pit_set_oneshot_mode”void pit_set_oneshot_mode(uint16_t divisor); pit_wire_periodic_nmi
Section titled “pit_wire_periodic_nmi”void pit_wire_periodic_nmi(time_ns_t interval_ns); pit_measure_tsc_freq
Section titled “pit_measure_tsc_freq”freq_hz_t pit_measure_tsc_freq(void); Macros
Section titled “Macros”PIT_PORT_CHANNEL0
Section titled “PIT_PORT_CHANNEL0”#define PIT_PORT_CHANNEL0 0x40 PIT_PORT_CHANNEL1
Section titled “PIT_PORT_CHANNEL1”#define PIT_PORT_CHANNEL1 0x41 PIT_PORT_CHANNEL2
Section titled “PIT_PORT_CHANNEL2”#define PIT_PORT_CHANNEL2 0x42 PIT_PORT_COMMAND
Section titled “PIT_PORT_COMMAND”#define PIT_PORT_COMMAND 0x43 PIT_PORT_CHANNEL
Section titled “PIT_PORT_CHANNEL”#define PIT_PORT_CHANNEL(ch) ((uint16_t) (PIT_PORT_CHANNEL0 + (ch))) PIT_BASE_FREQUENCY_HZ
Section titled “PIT_BASE_FREQUENCY_HZ”#define PIT_BASE_FREQUENCY_HZ 1193182ULL PIT_FREQUENCY
Section titled “PIT_FREQUENCY”#define PIT_FREQUENCY 1193182ULL PIT_CMD_CHANNEL
Section titled “PIT_CMD_CHANNEL”#define PIT_CMD_CHANNEL(ch) ((uint8_t) (((ch) & 0x3) << 6)) PIT_CMD_CHANNEL0
Section titled “PIT_CMD_CHANNEL0”#define PIT_CMD_CHANNEL0 0x00 PIT_CMD_CHANNEL1
Section titled “PIT_CMD_CHANNEL1”#define PIT_CMD_CHANNEL1 0x40 PIT_CMD_CHANNEL2
Section titled “PIT_CMD_CHANNEL2”#define PIT_CMD_CHANNEL2 0x80 PIT_CMD_READBACK
Section titled “PIT_CMD_READBACK”#define PIT_CMD_READBACK 0xC0 PIT_CMD_ACCESS_LATCH
Section titled “PIT_CMD_ACCESS_LATCH”#define PIT_CMD_ACCESS_LATCH 0x00 /* Latch count value command */ PIT_CMD_ACCESS_LO
Section titled “PIT_CMD_ACCESS_LO”#define PIT_CMD_ACCESS_LO 0x10 /* Low byte only */ PIT_CMD_ACCESS_HI
Section titled “PIT_CMD_ACCESS_HI”#define PIT_CMD_ACCESS_HI 0x20 /* High byte only */ PIT_CMD_ACCESS_LOHI
Section titled “PIT_CMD_ACCESS_LOHI”#define PIT_CMD_ACCESS_LOHI 0x30 /* Low byte then high byte (16 bit) */ PIT_CMD_MODE_ONESHOT
Section titled “PIT_CMD_MODE_ONESHOT”#define PIT_CMD_MODE_ONESHOT 0x00 PIT_CMD_MODE_HW_ONESHOT
Section titled “PIT_CMD_MODE_HW_ONESHOT”#define PIT_CMD_MODE_HW_ONESHOT 0x02 PIT_CMD_MODE_RATE_GEN
Section titled “PIT_CMD_MODE_RATE_GEN”#define PIT_CMD_MODE_RATE_GEN 0x04 PIT_CMD_MODE_SQUARE_WAVE
Section titled “PIT_CMD_MODE_SQUARE_WAVE”#define PIT_CMD_MODE_SQUARE_WAVE 0x06 PIT_CMD_MODE_SW_STROBE
Section titled “PIT_CMD_MODE_SW_STROBE”#define PIT_CMD_MODE_SW_STROBE 0x08 PIT_CMD_MODE_HW_STROBE
Section titled “PIT_CMD_MODE_HW_STROBE”#define PIT_CMD_MODE_HW_STROBE 0x0A PIT_CMD_BINARY
Section titled “PIT_CMD_BINARY”#define PIT_CMD_BINARY 0x00 PIT_CMD_BCD
Section titled “PIT_CMD_BCD”#define PIT_CMD_BCD 0x01 PIT_DEFAULT_MODE
Section titled “PIT_DEFAULT_MODE”#define PIT_DEFAULT_MODE 0x34 PIT_DEFAULT_COUNT
Section titled “PIT_DEFAULT_COUNT”#define PIT_DEFAULT_COUNT 0x4AF2 PIT_CALIBRATION_MODE
Section titled “PIT_CALIBRATION_MODE”#define PIT_CALIBRATION_MODE 0x30 PIT_CALIBRATION_COUNT
Section titled “PIT_CALIBRATION_COUNT”#define PIT_CALIBRATION_COUNT UINT16_MAX PIT_DIVISOR_MIN
Section titled “PIT_DIVISOR_MIN”#define PIT_DIVISOR_MIN 1 PIT_DIVISOR_MAX_COUNT
Section titled “PIT_DIVISOR_MAX_COUNT”#define PIT_DIVISOR_MAX_COUNT UINT16_MAX PIT_DIVISOR_ROLLOVER_VAL
Section titled “PIT_DIVISOR_ROLLOVER_VAL”#define PIT_DIVISOR_ROLLOVER_VAL 0 /* 0 is 65536 in binary mode */