📄 itcn.h
字号:
/*******************************************************************************
*
* Motorola Inc.
* (c) Copyright 2000 Motorola Inc.
* ALL RIGHTS RESERVED.
*
********************************************************************************
*
*
* File Name: itcn.h
*
* Description: Header file for Interrupt Controller (ITCN) driver
*
*
* Modules Included:
*
* Notes:
*
*
*******************************************************************************/
#ifndef __ITCN_H
#define __ITCN_H
/* appconfig.h must be included above this header file. */
#ifndef __APPCONFIG_H
#error appconfig.h must be included above itcn.h or ITCN commands will not work correctly!
#endif
/*******************************************************************************
ITCN module identifier, correspond to module base address
*******************************************************************************/
#define ITCN (&ArchIO.IntController)
/*******************************************************************************
Configurable items, i.e. defines, for appconfig.h
********************************************************************************
For peripherals:
#define ITCN_INT_PRIORITY_xx 0-7 (0 means interrupt is disabled)
(xx is number of interrupt vector and can be 10,11......62,63)
For external interrupts:
IRQA:
void IRQAisr(void);
#define INT_VECTOR_ADDR_8 IRQAisr
#define IRQA_ENABLED 0 (disabled) or 1 (enabled)
#define IRQA_TRIGGER 0 (low level sensitive), 1 (high level sensitive),
4 (falling edge sensitive), 5 (rising edge sensitive)
IRQB:
void IRQBisr(void);
#define INT_VECTOR_ADDR_9 IRQBisr
#define IRQB_ENABLED 0 (disabled) or 1 (enabled)
#define IRQB_TRIGGER 0 (low level sensitive), 1 (high level sensitive),
4 (falling edge sensitive), 5 (rising edge sensitive)
*/
/*******************************************************************************
ioctl() commands
********************************************************************************
command parameters and commentary */
#define ITCN_INIT_GPRS /* NULL, set all group priority registers (GPRyy) according to ITCN_INT_PRIORITY_xx defined in appconfig.h */
#define ITCN_INIT_IPR /* NULL, enable interrupt channels and configure external interrupts
(all in IPR) according to ITCN_INT_PRIORITY_xx and
IRQA_TRIGGER, IRQB_TRIGGER, IRQA_ENABLED, IRQB_ENABLED defined in appconfig.h */
#define ITCN_WRITE_IPR /* 16 bit value, write value to Interrupt Priority Register (IPR) */
#define ITCN_READ_IPR /* NULL, returns UWord16 */
#define ITCN_ENABLE_INT_CHANNEL /* ITCN_CHANNEL0 | ITCN_CHANNEL1 | ITCN_CHANNEL2 | ITCN_CHANNEL3 | ITCN_CHANNEL4 | ITCN_CHANNEL5 | ITCN_CHANNEL6 */
#define ITCN_DISABLE_INT_CHANNEL /* ITCN_CHANNEL0 | ITCN_CHANNEL1 | ITCN_CHANNEL2 | ITCN_CHANNEL3 | ITCN_CHANNEL4 | ITCN_CHANNEL5 | ITCN_CHANNEL6 */
#define ITCN_ENABLE_IRQ /* ITCN_IRQA | ITCN_IRQB */
#define ITCN_DISABLE_IRQ /* ITCN_IRQA | ITCN_IRQB */
#define ITCN_IRQA_TRIGGER_MODE /* ITCN_LOW_LEVEL_SENSITIVE, ITCN_HIGH_LEVEL_SENSITIVE, ITCN_FALLING_EDGE_SENSITIVE, ITCN_RISING_EDGE_SENSITIVE */
#define ITCN_IRQB_TRIGGER_MODE /* ITCN_LOW_LEVEL_SENSITIVE, ITCN_HIGH_LEVEL_SENSITIVE, ITCN_FALLING_EDGE_SENSITIVE, ITCN_RISING_EDGE_SENSITIVE */
#define ITCN_SET_INT_PRIORITY_xx /* value 0 to 7, where xx is number of interrupt vector and can be 10,11......62,63 */
/*******************************************************************************
IPR bits
*******************************************************************************/
#define ITCN_IPR_IAINV 0x0001
#define ITCN_IPR_IAL0 0x0002
#define ITCN_IPR_IAL1 0x0004
#define ITCN_IPR_IBINV 0x0008
#define ITCN_IPR_IBL0 0x0010
#define ITCN_IPR_IBL1 0x0020
/*******************************************************************************
ITCN constants used in ioctl()
*******************************************************************************/
/* Interrupt Channels (used in ITCN_ENABLE_INT_CHANNEL and
ITCN_DISABLE_INT_CHANNEL commands) */
#define ITCN_CHANNEL0 0x8000
#define ITCN_CHANNEL1 0x4000
#define ITCN_CHANNEL2 0x2000
#define ITCN_CHANNEL3 0x1000
#define ITCN_CHANNEL4 0x0800
#define ITCN_CHANNEL5 0x0400
#define ITCN_CHANNEL6 0x0200
/* External interrupts (used in ITCN_ENABLE_IRQ and ITCN_DISABLE_IRQ commands) */
#define ITCN_IRQA ITCN_IPR_IAL0
#define ITCN_IRQB ITCN_IPR_IBL0
/* IRQ Trigger Mode (used in ITCN_IRQx_TRIGGER_MODE commands) */
#define ITCN_LOW_LEVEL_SENSITIVE 0x0000
#define ITCN_HIGH_LEVEL_SENSITIVE ITCN_IPR_IAINV
#define ITCN_FALLING_EDGE_SENSITIVE ITCN_IPR_IAL1
#define ITCN_RISING_EDGE_SENSITIVE (ITCN_IPR_IAL1 | ITCN_IPR_IAINV)
/*******************************************************************************
Implementation
*******************************************************************************/
#define PLR_TO_IPR_MASK(x) ((x)==0 ? 0 : 0x8000>>((x)-1))
#define PLR_TO_GPR(x0,x1,x2,x3) ((x0) + 0x10*(x1) + 0x100*(x2) + 0x1000*(x3))
/* If no definition was done define reset values */
#ifndef IRQB_TRIGGER /* ITCN_LOW_LEVEL_SENSITIVE, ITCN_HIGH_LEVEL_SENSITIVE, ITCN_FALLING_EDGE_SENSITIVE, ITCN_RISING_EDGE_SENSITIVE */
#define IRQB_TRIGGER ITCN_LOW_LEVEL_SENSITIVE
#endif
#ifndef IRQB_ENABLED /* 0 - disabled, 1 - enabled */
#define IRQB_ENABLED 0
#endif
#ifndef IRQA_TRIGGER /* ITCN_LOW_LEVEL_SENSITIVE, ITCN_HIGH_LEVEL_SENSITIVE, ITCN_FALLING_EDGE_SENSITIVE, ITCN_RISING_EDGE_SENSITIVE */
#define IRQA_TRIGGER ITCN_LOW_LEVEL_SENSITIVE
#endif
#ifndef IRQA_ENABLED /* 0 - disabled, 1 - enabled */
#define IRQA_ENABLED 0
#endif
#ifndef ITCN_INT_PRIORITY_10
#define ITCN_INT_PRIORITY_10 0
#endif
#ifndef ITCN_INT_PRIORITY_11
#define ITCN_INT_PRIORITY_11 0
#endif
#ifndef ITCN_INT_PRIORITY_12
#define ITCN_INT_PRIORITY_12 0
#endif
#ifndef ITCN_INT_PRIORITY_13
#define ITCN_INT_PRIORITY_13 0
#endif
#ifndef ITCN_INT_PRIORITY_14
#define ITCN_INT_PRIORITY_14 0
#endif
#ifndef ITCN_INT_PRIORITY_15
#define ITCN_INT_PRIORITY_15 0
#endif
#ifndef ITCN_INT_PRIORITY_16
#define ITCN_INT_PRIORITY_16 0
#endif
#ifndef ITCN_INT_PRIORITY_17
#define ITCN_INT_PRIORITY_17 0
#endif
#ifndef ITCN_INT_PRIORITY_18
#define ITCN_INT_PRIORITY_18 0
#endif
#ifndef ITCN_INT_PRIORITY_19
#define ITCN_INT_PRIORITY_19 0
#endif
#ifndef ITCN_INT_PRIORITY_20
#define ITCN_INT_PRIORITY_20 0
#endif
#ifndef ITCN_INT_PRIORITY_21
#define ITCN_INT_PRIORITY_21 0
#endif
#ifndef ITCN_INT_PRIORITY_22
#define ITCN_INT_PRIORITY_22 0
#endif
#ifndef ITCN_INT_PRIORITY_23
#define ITCN_INT_PRIORITY_23 0
#endif
#ifndef ITCN_INT_PRIORITY_24
#define ITCN_INT_PRIORITY_24 0
#endif
#ifndef ITCN_INT_PRIORITY_25
#define ITCN_INT_PRIORITY_25 0
#endif
#ifndef ITCN_INT_PRIORITY_26
#define ITCN_INT_PRIORITY_26 0
#endif
#ifndef ITCN_INT_PRIORITY_27
#define ITCN_INT_PRIORITY_27 0
#endif
#ifndef ITCN_INT_PRIORITY_28
#define ITCN_INT_PRIORITY_28 0
#endif
#ifndef ITCN_INT_PRIORITY_29
#define ITCN_INT_PRIORITY_29 0
#endif
#ifndef ITCN_INT_PRIORITY_30
#define ITCN_INT_PRIORITY_30 0
#endif
#ifndef ITCN_INT_PRIORITY_31
#define ITCN_INT_PRIORITY_31 0
#endif
#ifndef ITCN_INT_PRIORITY_32
#define ITCN_INT_PRIORITY_32 0
#endif
#ifndef ITCN_INT_PRIORITY_33
#define ITCN_INT_PRIORITY_33 0
#endif
#ifndef ITCN_INT_PRIORITY_34
#define ITCN_INT_PRIORITY_34 0
#endif
#ifndef ITCN_INT_PRIORITY_35
#define ITCN_INT_PRIORITY_35 0
#endif
#ifndef ITCN_INT_PRIORITY_36
#define ITCN_INT_PRIORITY_36 0
#endif
#ifndef ITCN_INT_PRIORITY_37
#define ITCN_INT_PRIORITY_37 0
#endif
#ifndef ITCN_INT_PRIORITY_38
#define ITCN_INT_PRIORITY_38 0
#endif
#ifndef ITCN_INT_PRIORITY_39
#define ITCN_INT_PRIORITY_39 0
#endif
#ifndef ITCN_INT_PRIORITY_40
#define ITCN_INT_PRIORITY_40 0
#endif
#ifndef ITCN_INT_PRIORITY_41
#define ITCN_INT_PRIORITY_41 0
#endif
#ifndef ITCN_INT_PRIORITY_42
#define ITCN_INT_PRIORITY_42 0
#endif
#ifndef ITCN_INT_PRIORITY_43
#define ITCN_INT_PRIORITY_43 0
#endif
#ifndef ITCN_INT_PRIORITY_44
#define ITCN_INT_PRIORITY_44 0
#endif
#ifndef ITCN_INT_PRIORITY_45
#define ITCN_INT_PRIORITY_45 0
#endif
#ifndef ITCN_INT_PRIORITY_46
#define ITCN_INT_PRIORITY_46 0
#endif
#ifndef ITCN_INT_PRIORITY_47
#define ITCN_INT_PRIORITY_47 0
#endif
#ifndef ITCN_INT_PRIORITY_48
#define ITCN_INT_PRIORITY_48 0
#endif
#ifndef ITCN_INT_PRIORITY_49
#define ITCN_INT_PRIORITY_49 0
#endif
#ifndef ITCN_INT_PRIORITY_50
#define ITCN_INT_PRIORITY_50 0
#endif
#ifndef ITCN_INT_PRIORITY_51
#define ITCN_INT_PRIORITY_51 0
#endif
#ifndef ITCN_INT_PRIORITY_52
#define ITCN_INT_PRIORITY_52 0
#endif
#ifndef ITCN_INT_PRIORITY_53
#define ITCN_INT_PRIORITY_53 0
#endif
#ifndef ITCN_INT_PRIORITY_54
#define ITCN_INT_PRIORITY_54 0
#endif
#ifndef ITCN_INT_PRIORITY_55
#define ITCN_INT_PRIORITY_55 0
#endif
#ifndef ITCN_INT_PRIORITY_56
#define ITCN_INT_PRIORITY_56 0
#endif
#ifndef ITCN_INT_PRIORITY_57
#define ITCN_INT_PRIORITY_57 0
#endif
#ifndef ITCN_INT_PRIORITY_58
#define ITCN_INT_PRIORITY_58 0
#endif
#ifndef ITCN_INT_PRIORITY_59
#define ITCN_INT_PRIORITY_59 0
#endif
#ifndef ITCN_INT_PRIORITY_60
#define ITCN_INT_PRIORITY_60 0
#endif
#ifndef ITCN_INT_PRIORITY_61
#define ITCN_INT_PRIORITY_61 0
#endif
#ifndef ITCN_INT_PRIORITY_62
#define ITCN_INT_PRIORITY_62 0
#endif
#ifndef ITCN_INT_PRIORITY_63
#define ITCN_INT_PRIORITY_63 0
#endif
#define IPR_MASK (PLR_TO_IPR_MASK(ITCN_INT_PRIORITY_10) | \
PLR_TO_IPR_MASK(ITCN_INT_PRIORITY_11) | \
PLR_TO_IPR_MASK(ITCN_INT_PRIORITY_12) | \
PLR_TO_IPR_MASK(ITCN_INT_PRIORITY_13) | \
PLR_TO_IPR_MASK(ITCN_INT_PRIORITY_14) | \
PLR_TO_IPR_MASK(ITCN_INT_PRIORITY_15) | \
PLR_TO_IPR_MASK(ITCN_INT_PRIORITY_16) | \
PLR_TO_IPR_MASK(ITCN_INT_PRIORITY_17) | \
PLR_TO_IPR_MASK(ITCN_INT_PRIORITY_18) | \
PLR_TO_IPR_MASK(ITCN_INT_PRIORITY_19) | \
PLR_TO_IPR_MASK(ITCN_INT_PRIORITY_20) | \
PLR_TO_IPR_MASK(ITCN_INT_PRIORITY_21) | \
PLR_TO_IPR_MASK(ITCN_INT_PRIORITY_22) | \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -