📄 setmacro.h
字号:
/*
****************************************************************************
H I T A C H I P R O P R I E T A R Y
COPYRIGHT (c) 2001 BY Semiconductor & Integrated Circuits,Hitachi,Ltd.
--- ALL RIGHTS RESERVED ---
File Name :SetMacro.h
Working :macro definition
Created :Rev 2001_11_28 {Author : T.Ishikawa}
****************************************************************************
*/
#define JoinContents
/* USB register definition for H8S/2215 */
#define INTERRUPT_REGISTER USBFM.UIFR.LONG
#define INTERRUPT0_REGISTER USBFM.UIFR.BYTE.HH
#define INTERRUPT1_REGISTER USBFM.UIFR.BYTE.HL
#define INTERRUPT2_REGISTER USBFM.UIFR.BYTE.LH
#define INTERRUPT3_REGISTER USBFM.UIFR.BYTE.LL
#define STALL_REGISTER USBFM.UESTL.BYTE.H
#define FIFO_CLEAR_REGISTER USBFM.UFCLR.BYTE.H
#define READ_TRIGER_REGISTER USBFM.UTRG.BYTE.H
#define WRITE_TRIGER_REGISTER USBFM.UTRG.BYTE.H
/* each register bit */
/* interrupt flag register */
#define EP0_I_ACK_BITS 0x02000000 /* EP0i_TS */
#define EP0_I_NACK_BITS 0x04000000 /* EP0i_TR */
#define EP0_O_ACK_BITS 0x08000000 /* EP0o_TS */
#define SETUP_TS_BITS 0x01000000 /* SETUP_TS */
#define EP1_FULL_BIT 0x00040000 /* EP1_FULL */
#define EP2_EMPTY_BIT 0x00010000 /* EP2_EMPTY */
#define EP2_TR_BIT 0x00020000 /* EP2_TR */
#define BRST_BIT 0x80 /* BRST */
#define VBUS_F_BIT 0x01 /* VBUS_F */
#define CK48READY_F_BIT 0x80 /* CK48READY */
/* #define EP3_ACK_BIT 0x0 EP3_TS */
/* #define EP3_NACK_BIT 0x10 EP3_TR */
/* FIFO clear register */
#define EP0I_FIFO_CLR_BIT 0x0200 /* EP0i */
#define EP0O_FIFO_CLR_BIT 0x0400 /* EP0o */
#define EP1_FIFO_CLR_BIT 0x2000 /* EP1 */
#define EP2_FIFO_CLR_BIT 0x1000 /* EP2 */
/* DoBOTMSClass.c */
#define SET_BULK_IN_INTERRUPT4 USBFM.UIER.LONG &= ~EP2_TR_BIT; /* mask EP2_TR interrupt */
#define SET_BULK_IN_INTERRUPT3 USBFM.UIER.LONG |= EP2_TR_BIT; /* enable EP2_TR interrupt */
#define BOT_IN_EP_STALL_ON STALL_REGISTER |= EpInfo[SET_BOT_USE_IN_EP].stallEnable;
#define SET_BOT_USE_OUT_EP 3 /* Rgister Information Number for BOT Bulk-OUT */
#define SET_BOT_USE_IN_EP 4 /* Rgister Information Number for BOT Bulk-IN */
#define SET_BOT_CSWCBW_INFO 5 /* CBW/CSW Information Number for BOT data buffer */
#define SET_BOT_DATA_INFO 6 /* DATA Information Number for BOT data buffer */
/* DoRequestBOT_StorageClass.c */
#define CLEAR_BULK_FIFO_OF_SOFT_RESET USBFM.UFCLR.SHORT = (EP1_FIFO_CLR_BIT | EP2_FIFO_CLR_BIT); /* clear FIFO */
#define BOT_ALL_EP_STALL_OFF STALL_REGISTER |= ~(EpInfo[SET_BOT_USE_OUT_EP].stallEnable | EpInfo[SET_BOT_USE_IN_EP].stallEnable);
/* DoBulk.c */
#define BULK_ITFF_CLEAR INTERRUPT_REGISTER = ~EP2_TR_BIT;
#define SET_BULK_IN_INTERRUPT2 USBFM.UIER.LONG &= ~EP2_EMPTY_BIT; /* mask EP2_EMPTY interrupt */
#define SET_BULK_IN_INTERRUPT1 USBFM.UIER.LONG |= EP2_EMPTY_BIT; /* enable EP2_EMPTY interrupt */
#define BULK_OTSF_CLEAR /* not necessary */
#define BULK_ITSF_CLEAR /* not necessary */
/* DoInterrupt.c */
#define INTERRUPTI_TRANS_FACTOR_CLEAR /* INTERRUPT1_REGISTER = ~EP3_ACK_BIT; clear EP3_TS flag */
/* DoControl.c */
#define CTRL_IN_OTSF_CLEAR INTERRUPT_REGISTER = ~(EP0_I_ACK_BITS | EP0_I_NACK_BITS | EP0_O_ACK_BITS); /* clear EP0 interrupt flag except for SETUP */
#define SETUP_INTF_CLEAR INTERRUPT_REGISTER = ~SETUP_TS_BITS; /* clear SETUP_TS interrupt flag */
#define CTRL_ITSF_CLEAR INTERRUPT_REGISTER = ~EP0_I_ACK_BITS; /* clear EP0i_TS flag */
#define CTRL_OTSF_CLEAR INTERRUPT_REGISTER = ~EP0_O_ACK_BITS; /* clear EP0o_TS flag */
#define CTRL_ITRF_CLEAR INTERRUPT_REGISTER = ~EP0_I_NACK_BITS; /* clear EP0i_TR flag */
#define CTRL_IN_REG_SET USBFM.UIER.BYTE.HH &= ~0x02; /* getting ready Control IN taransfer Data Stage after decodding Setup Command */
#define CTRL_OUT_REG_SET USBFM.UIER.BYTE.HH |= 0x02; /* getting ready Control OUT taransfer Data Stage after decodding Setup Command */
#define GO_DATA_STAGE READ_TRIGER_REGISTER = 0x01; /* change to Data Stage form SETUP */
/* UsbMain.c */
#define F_CLEAR_BUSRESET INTERRUPT0_REGISTER = ~BRST_BIT; /* clear BRST flag */
#define F_CLEAR_BUSVCC INTERRUPT3_REGISTER = ~VBUS_F_BIT; /* clear VBUSi flag */
#define CLEAR_ALL_FIFO FIFO_CLEAR_REGISTER = 0x36; /* 0011 011- */ /* clear EP0,1,2 FIFO */
#define EP_STALL_ALL_OFF USBFM.UESTL.SHORT = 0x0080; /* 0000 0--0 1--- -000 */ /* desable all EndPoint STALL */
/* set USB interrupt select register */
#define SET_USB_INTERRUPT_SELECT USBFM.UISR.LONG = 0x00000000; /* EXIRQ0 */
#define CHECK_CABLE_STATE if ((deviceSideLVar.INTERRUPT.LONG & 0x00000002) == 0x00000002) { /* A case of connecting USB cable */
/* set USB interrupt and DMA */
#define SET_USB_INTERRUPT USBFM.UIER.LONG = 0x8F060081; /* 1-00 1111 */ /* enable BRST,SETUPTS,EP0oTS,EP0iTR,EP0iTS */\
USBFM.UDMAR.BYTE = 0x00; /* --00 --00 */ /* disable EP1,EP2 DMA */\
USBFM.UESTL.BYTE.L |= 0x80; /* 1--- ---- */ /* enable stall clear mode */
/* get interrupt enable flag */
#define GET_INTERRUPT_ENABLE interruptEnableBitsGVar.INTERRUPT.LONG = USBFM.UIER.LONG;\
interruptEnableBitsGVar.INTERRUPT.LONG |= 0x0000000A;
#define GET_INTERRUPT_REGISTER deviceSideLVar.INTERRUPT.LONG = USBFM.UIFR.LONG;
#define READ_FINISH READ_TRIGER_REGISTER = epInfoPtr->getFinish;
#define WRITE_FINISH WRITE_TRIGER_REGISTER = epInfoPtr->putEnable;
#define IRQ_CLEAR /* not necessary */
#define RUN_USB_MODULE_1 /* not necessary */
#define RUN_USB_MODULE_2 USBFM.UCTLR.BYTE &= ~0x02; /* ---- --0- */
#define RUN_USB_MODULE_3 EpInfo[SET_BOT_USE_OUT_EP].PresentState = WAIT;\
USBFM.UCTLR.BYTE &= ~0x01; /* Disable UDC core reset */
/* Ebable UDC core reset */
#define STOP_USB_MODULE_3 USBFM.UCTLR.BYTE |= 0x01;
#define F_CLEAR_PLLREADY INTERRUPT3_REGISTER = ~CK48READY_F_BIT;
#define SET_USB_EPINFO USBFM.UEPIR00_0.BYTE = 0x00; /* EP0 Control */\
USBFM.UEPIR00_1.BYTE = 0x00;\
USBFM.UEPIR00_2.BYTE = 0x40; /* MaxSize = 64 */\
USBFM.UEPIR00_3.BYTE = 0x00;\
USBFM.UEPIR00_4.BYTE = 0x00;\
USBFM.UEPIR01_0.BYTE = 0x34; /* EP3 Interrupt */\
USBFM.UEPIR01_1.BYTE = 0x1C;\
USBFM.UEPIR01_2.BYTE = 0x08; /* MaxSize = 8 */\
USBFM.UEPIR01_3.BYTE = 0x00;\
USBFM.UEPIR01_4.BYTE = 0x01;\
USBFM.UEPIR02_0.BYTE = 0x24; /* EP2 Bulk-In */\
USBFM.UEPIR02_1.BYTE = 0x14;\
USBFM.UEPIR02_2.BYTE = 0x40; /* MaxSize = 64 */\
USBFM.UEPIR02_3.BYTE = 0x00;\
USBFM.UEPIR02_4.BYTE = 0x02;\
USBFM.UEPIR03_0.BYTE = 0x14; /* EP1 Bulk-Out */\
USBFM.UEPIR03_1.BYTE = 0x10;\
USBFM.UEPIR03_2.BYTE = 0x40; /* MaxSize = 64 */\
USBFM.UEPIR03_3.BYTE = 0x00;\
USBFM.UEPIR03_4.BYTE = 0x03;\
USBFM.UEPIR04_0.BYTE = 0x04;\
USBFM.UEPIR04_1.BYTE = 0x1C;\
USBFM.UEPIR04_2.BYTE = 0x00;\
USBFM.UEPIR04_3.BYTE = 0x00;\
USBFM.UEPIR04_4.BYTE = 0x04;\
USBFM.UEPIR05_0.BYTE = 0x04;\
USBFM.UEPIR05_1.BYTE = 0x08;\
USBFM.UEPIR05_2.BYTE = 0x00;\
USBFM.UEPIR05_3.BYTE = 0x00;\
USBFM.UEPIR05_4.BYTE = 0x05;\
USBFM.UEPIR06_0.BYTE = 0x04;\
USBFM.UEPIR06_1.BYTE = 0x1C;\
USBFM.UEPIR06_2.BYTE = 0x00;\
USBFM.UEPIR06_3.BYTE = 0x00;\
USBFM.UEPIR06_4.BYTE = 0x06;\
USBFM.UEPIR07_0.BYTE = 0x04;\
USBFM.UEPIR07_1.BYTE = 0x08;\
USBFM.UEPIR07_2.BYTE = 0x00;\
USBFM.UEPIR07_3.BYTE = 0x00;\
USBFM.UEPIR07_4.BYTE = 0x07;\
USBFM.UEPIR08_0.BYTE = 0x04;\
USBFM.UEPIR08_1.BYTE = 0x1C;\
USBFM.UEPIR08_2.BYTE = 0x00;\
USBFM.UEPIR08_3.BYTE = 0x00;\
USBFM.UEPIR08_4.BYTE = 0x08;\
USBFM.UEPIR09_0.BYTE = 0x04;\
USBFM.UEPIR09_1.BYTE = 0x08;\
USBFM.UEPIR09_2.BYTE = 0x00;\
USBFM.UEPIR09_3.BYTE = 0x00;\
USBFM.UEPIR09_4.BYTE = 0x09;\
USBFM.UEPIR10_0.BYTE = 0x04;\
USBFM.UEPIR10_1.BYTE = 0x1C;\
USBFM.UEPIR10_2.BYTE = 0x00;\
USBFM.UEPIR10_3.BYTE = 0x00;\
USBFM.UEPIR10_4.BYTE = 0x0A;\
USBFM.UEPIR11_0.BYTE = 0x04;\
USBFM.UEPIR11_1.BYTE = 0x08;\
USBFM.UEPIR11_2.BYTE = 0x00;\
USBFM.UEPIR11_3.BYTE = 0x00;\
USBFM.UEPIR11_4.BYTE = 0x0B;\
USBFM.UEPIR12_0.BYTE = 0x04;\
USBFM.UEPIR12_1.BYTE = 0x1C;\
USBFM.UEPIR12_2.BYTE = 0x00;\
USBFM.UEPIR12_3.BYTE = 0x00;\
USBFM.UEPIR12_4.BYTE = 0x0C;\
USBFM.UEPIR13_0.BYTE = 0x04;\
USBFM.UEPIR13_1.BYTE = 0x08;\
USBFM.UEPIR13_2.BYTE = 0x00;\
USBFM.UEPIR13_3.BYTE = 0x00;\
USBFM.UEPIR13_4.BYTE = 0x0D;\
USBFM.UEPIR14_0.BYTE = 0x04;\
USBFM.UEPIR14_1.BYTE = 0x1C;\
USBFM.UEPIR14_2.BYTE = 0x00;\
USBFM.UEPIR14_3.BYTE = 0x00;\
USBFM.UEPIR14_4.BYTE = 0x0E;\
USBFM.UEPIR15_0.BYTE = 0x04;\
USBFM.UEPIR15_1.BYTE = 0x08;\
USBFM.UEPIR15_2.BYTE = 0x00;\
USBFM.UEPIR15_3.BYTE = 0x00;\
USBFM.UEPIR15_4.BYTE = 0x0F;\
USBFM.UEPIR16_0.BYTE = 0x04;\
USBFM.UEPIR16_1.BYTE = 0x1C;\
USBFM.UEPIR16_2.BYTE = 0x00;\
USBFM.UEPIR16_3.BYTE = 0x00;\
USBFM.UEPIR16_4.BYTE = 0x10;\
USBFM.UEPIR17_0.BYTE = 0x04;\
USBFM.UEPIR17_1.BYTE = 0x08;\
USBFM.UEPIR17_2.BYTE = 0x00;\
USBFM.UEPIR17_3.BYTE = 0x00;\
USBFM.UEPIR17_4.BYTE = 0x11;\
USBFM.UEPIR18_0.BYTE = 0x04;\
USBFM.UEPIR18_1.BYTE = 0x1C;\
USBFM.UEPIR18_2.BYTE = 0x00;\
USBFM.UEPIR18_3.BYTE = 0x00;\
USBFM.UEPIR18_4.BYTE = 0x12;\
USBFM.UEPIR19_0.BYTE = 0x04;\
USBFM.UEPIR19_1.BYTE = 0x08;\
USBFM.UEPIR19_2.BYTE = 0x00;\
USBFM.UEPIR19_3.BYTE = 0x00;\
USBFM.UEPIR19_4.BYTE = 0x13;\
USBFM.UEPIR20_0.BYTE = 0x04;\
USBFM.UEPIR20_1.BYTE = 0x14;\
USBFM.UEPIR20_2.BYTE = 0x00;\
USBFM.UEPIR20_3.BYTE = 0x00;\
USBFM.UEPIR20_4.BYTE = 0x14;\
USBFM.UEPIR21_0.BYTE = 0x04;\
USBFM.UEPIR21_1.BYTE = 0x10;\
USBFM.UEPIR21_2.BYTE = 0x00;\
USBFM.UEPIR21_3.BYTE = 0x00;\
USBFM.UEPIR21_4.BYTE = 0x15;\
USBFM.UEPIR22_0.BYTE = 0x04;\
USBFM.UEPIR22_1.BYTE = 0x1C;\
USBFM.UEPIR22_2.BYTE = 0x00;\
USBFM.UEPIR22_3.BYTE = 0x00;\
USBFM.UEPIR22_4.BYTE = 0x16;
/* StartUp.c */
/* pull up D+ */
#define ENABLE_DPLUS_PULLUP PORT.P3DR.BYTE |= 0x40; /* -1-- ---- */ /* Pullup function is used to P36 pin(Active High) */
/* disable pull up D+ */
#define DISABLE_DPLUS_PULLUP PORT.P3DR.BYTE &= ~0x40; /* -0-- ---- */ /* Pullup function is used to P36 pin(Active High) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -