📄 qtimer.h
字号:
/*******************************************************************************
*
* Motorola Inc.
* (c) Copyright 2000 Motorola Inc.
* ALL RIGHTS RESERVED.
*
********************************************************************************
*
*
* File Name: qtimer.h
*
* Description: Header file for Quad Timer (QT) driver.
*
*
* Modules Included:
*
* Notes:
*
*
*******************************************************************************/
#ifndef __QTIMER_H
#define __QTIMER_H
/*******************************************************************************
Quad Timer base addresses used in ioctl()
*******************************************************************************/
#define QTIMER_A0 (&ArchIO.TimerA.Channel0)
#define QTIMER_A1 (&ArchIO.TimerA.Channel1)
#define QTIMER_A2 (&ArchIO.TimerA.Channel2)
#define QTIMER_A3 (&ArchIO.TimerA.Channel3)
#define QTIMER_B0 (&ArchIO.TimerB.Channel0)
#define QTIMER_B1 (&ArchIO.TimerB.Channel1)
#define QTIMER_B2 (&ArchIO.TimerB.Channel2)
#define QTIMER_B3 (&ArchIO.TimerB.Channel3)
#define QTIMER_C0 (&ArchIO.TimerC.Channel0)
#define QTIMER_C1 (&ArchIO.TimerC.Channel1)
#define QTIMER_C2 (&ArchIO.TimerC.Channel2)
#define QTIMER_C3 (&ArchIO.TimerC.Channel3)
#define QTIMER_D0 (&ArchIO.TimerD.Channel0)
#define QTIMER_D1 (&ArchIO.TimerD.Channel1)
#define QTIMER_D2 (&ArchIO.TimerD.Channel2)
#define QTIMER_D3 (&ArchIO.TimerD.Channel3)
/*******************************************************************************
Defines for appconfig.h for each timer/counter
********************************************************************************
void qtxxISR(void);
#define INT_VECTOR_ADDR_yy qtxxISR
#define ITCN_INT_PRIORITY_yy value 0 to 7 (0 means interrupt is disabled)
#define QT_xx_CONTROL_REG 0x0000
#define QT_xx_STATUS_CONTROL_REG 0x0000
#define QT_xx_COMPARE_REG1 0x0000
#define QT_xx_COMPARE_REG2 0x0000
#define QT_xx_LOAD_REG 0x0000
#define QT_xx_COUNTER_REG 0x0000
where:
xx is timer/counter:
D0,D1,D2,D3,C0,C1,C2,C3,B0,B1,B2,B3,A0,A1,A2,A3
yy is corresponding interrupt vector:
30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45
*/
/*******************************************************************************
ioctl() commands
*******************************************************************************/
/* command parameters and commentary */
#define QT_INIT /* NULL */
#define QT_SET_COUNT_MODE /* see below */
#define QT_SET_PRIMARY_SOURCE /* see below */
#define QT_SET_SECONDARY_SOURCE /* QT_COUNTER0_INPUT / QT_COUNTER1_INPUT /
QT_COUNTER2_INPUT / QT_COUNTER3_INPUT */
#define QT_SET_COUNT_ONCE /* QT_COUNT_REPEATEDLY / QT_UNTIL_COMPARE_AND_STOP */
#define QT_SET_COUNT_LENGTH /* QT_ROLL_OVER / QT_UNTIL_COMPARE_AND_REINIT */
#define QT_SET_COUNT_DIRECTION /* QT_COUNT_UP / QT_COUNT_DOWN */
#define QT_CO_CHANNEL_INIT /* QT_ENABLE / QT_DISABLE */
#define QT_SET_OUTPUT_MODE /* see below */
#define QT_SET_FLAG /* QT_COMPARE_FLAG | QT_OVERFLOW_FLAG | QT_INPUT_EDGE_FLAG | QT_VAL_FLAG */
#define QT_CLEAR_FLAG /* QT_COMPARE_FLAG | QT_OVERFLOW_FLAG | QT_INPUT_EDGE_FLAG | QT_VAL_FLAG */
#define QT_READ_FLAG /* QT_COMPARE_FLAG | QT_OVERFLOW_FLAG | QT_INPUT_EDGE_FLAG | QT_VAL_FLAG, returns 0x0000 - bits are cleared, or returns 0x8000 (Timer Compare Flag is set) | 0x2000 (Timer Overflow Flag is set) | 0x0800 (Input Edge Flag is set) | 0x0008 (VAL Flag is set) */
#define QT_ENABLE_INT /* QT_COMPARE_INT | QT_OVERFLOW_INT | QT_INPUT_EDGE_INT */
#define QT_DISABLE_INT /* QT_COMPARE_INT | QT_OVERFLOW_INT | QT_INPUT_EDGE_INT */
#define QT_SET_INPUT_POLARITY /* QT_NORMAL_POLARITY / QT_INVERTED_POLARITY */
#define QT_READ_EXT_INPUT_PIN /* NULL, returns 0x0000 (input pin is 0) or 0x0100 (input pin is 1) */
#define QT_SET_CAPTURE_MODE /* QT_CAPTURE_DISABLED / QT_RISING_EDGE / QT_FALLING_EDGE / QT_BOTH_EDGES */
#define QT_MASTER_MODE /* QT_ENABLE / QT_DISABLE */
#define QT_EXT_OFLAG_FORCE /* QT_ENABLE / QT_DISABLE */
#define QT_FORCE_OFLAG /* 0 (force OFLAG to 0) / 1 (force OFLAG to 1), use this command only if timer is disabled */
#define QT_SET_OUTPUT_POLARITY /* QT_NORMAL_POLARITY / QT_INVERTED_POLARITY */
#define QT_OUTPUT_ON_EXT_PIN /* QT_ENABLE / QT_DISABLE */
#define QT_WRITE_CONTROL_REG /* 16 bit value */
#define QT_WRITE_STATUS_CONTROL_REG /* 16 bit value */
#define QT_WRITE_COMPARE_REG1 /* 16 bit value */
#define QT_WRITE_COMPARE_REG2 /* 16 bit value */
#define QT_WRITE_LOAD_REG /* 16 bit value */
#define QT_WRITE_COUNTER_REG /* 16 bit value */
#define QT_READ_CONTROL_REG /* NULL, returns UWord16 */
#define QT_READ_STATUS_CONTROL_REG /* NULL, returns UWord16 */
#define QT_READ_COMPARE_REG1 /* NULL, returns UWord16 */
#define QT_READ_COMPARE_REG2 /* NULL, returns UWord16 */
#define QT_READ_LOAD_REG /* NULL, returns UWord16 */
#define QT_READ_COUNTER_REG /* NULL, returns UWord16 */
#define QT_READ_CAPTURE_REG /* NULL, returns UWord16 */
#define QT_READ_HOLD_REG /* NULL, returns UWord16 */
/*******************************************************************************
QT constants used in the ioctl() as parameters
*******************************************************************************/
/* Modes (used in QT_SET_COUNT_MODE command) */
#define QT_NO_OPERATION 0 /*0x0000*/
#define QT_COUNT_RISING_EDGES_MODE 1 /*0x2000*/
#define QT_COUNT_BOTH_EDGES_MODE 2 /*0x4000*/
#define QT_GATED_COUNT_MODE 3 /*0x6000*/
#define QT_QUADRATURE_COUNT_MODE 4 /*0x8000*/
#define QT_SIGNED_COUNT_MODE 5 /*0xA000*/
#define QT_TRIGGERED_COUNT_MODE 6 /*0xC000*/
#define QT_CASCADE_COUNT_MODE 7 /*0xE000*/
/* special modes */
#define QT_ONE_SHOT_MODE 6 /*0xC000*/
#define QT_PULSE_OUTPUT_MODE 1 /*0x2000*/
#define QT_FIXED_FREQ_PWM_MODE 1 /*0x2000*/
#define QT_VARIABLE_FREQ_PWM_MODE 1 /*0x2000*/
/* Primary Count Sources (used in QT_SET_PRIMARY_SOURCE command).
Secondary Count Sources (used in QT_SET_SECONDARY_SOURCE command). */
#define QT_COUNTER0_INPUT 0 /*0x0000*/
#define QT_COUNTER1_INPUT 1 /*0x0200*/
#define QT_COUNTER2_INPUT 2 /*0x0400*/
#define QT_COUNTER3_INPUT 3 /*0x0600*/
#define QT_COUNTER0_OUTPUT 4 /*0x0800*/
#define QT_COUNTER1_OUTPUT 5 /*0x0A00*/
#define QT_COUNTER2_OUTPUT 6 /*0x0C00*/
#define QT_COUNTER3_OUTPUT 7 /*0x0E00*/
#define QT_PRESCALER_DIV_1 8 /*0x1000*/
#define QT_PRESCALER_DIV_2 9 /*0x1200*/
#define QT_PRESCALER_DIV_4 10 /*0x1400*/
#define QT_PRESCALER_DIV_8 11 /*0x1600*/
#define QT_PRESCALER_DIV_16 12 /*0x1800*/
#define QT_PRESCALER_DIV_32 13 /*0x1A00*/
#define QT_PRESCALER_DIV_64 14 /*0x1C00*/
#define QT_PRESCALER_DIV_128 15 /*0x1E00*/
/* Continuous or one shot counting mode (used in QT_SET_COUNT_ONCE command) */
#define QT_COUNT_REPEATEDLY false
#define QT_UNTIL_COMPARE_AND_STOP true
/* Length (used in QT_SET_COUNT_LENGTH command) */
#define QT_ROLL_OVER false
#define QT_UNTIL_COMPARE_AND_REINIT true
/* Count Direction (used in QT_SET_COUNT_DIRECTION command) */
#define QT_COUNT_UP false
#define QT_COUNT_DOWN true
/* Output Mode (used in QT_SET_OUTPUT_MODE command) */
#define QT_SET_WHILE_ACTIVE 0
#define QT_CLEAR_ON_COMPARE 1
#define QT_SET_ON_COMPARE 2
#define QT_TOGGLE_ON_COMPARE 3
#define QT_TOGGLE_USING_ALT_COMPARE 4
#define QT_CLEAR_ON_SECONDARY 5
#define QT_CLEAR_ON_COUNTER_ROLLOVER 6
#define QT_ASSERT_ON_GATED_CLOCK 7
/* Quad Timer Interrupts Flags and Interrupt Enable bits */
#define QT_COMPARE_FLAG 0x8000
#define QT_OVERFLOW_FLAG 0x2000
#define QT_INPUT_EDGE_FLAG 0x0800
#define QT_VAL_FLAG 0x0008
#define QT_COMPARE_INT 0x4000
#define QT_OVERFLOW_INT 0x1000
#define QT_INPUT_EDGE_INT 0x0400
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -