⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 itcn.h

📁 MC56F802BLDC 可以使用的算法 就是电机启动有点慢
💻 H
📖 第 1 页 / 共 2 页
字号:
/*******************************************************************************
*
*  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 + -