📄 var_misc.c
字号:
///
cyg_uint8 hal_int_prio_tbl[CYGNUM_HAL_ISR_COUNT] =
{
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
};
//===========================================================================
// INTERRUPT ACKNOWLEDGE TABLE
// DESCRIPTION:
// This table contains all H8S/2674 interrupt status registers and the
// masks required for acknowledging the interrupt
//===========================================================================
///
/// This type stores mask and address of interrupt acknowledge register.
///
typedef struct
{
cyg_uint32 mask : 8; ///< interrupt acknowledge mask
cyg_uint32 address : 24; ///< interrupt acknowledge register
} int_ackn_t;
//
// Use this macro when entering entries into the hal_int_mask_tbl. We store the
// masks here so we do no need to do a not operation during runtime
//
#define ACKN_TBL_ENTRY(_int_status_reg_, _mask_) {(_mask_), (_int_status_reg_)}
#define CLR_BIT(_no_) ((cyg_uint8)(~(1 << (_no_))))
#define CLR_NOT 0x00 // use this entry for reserved vectors
#define NOT_SUPPORTED 0xff // use this for vectors that do not support interrupt acknowledge
///
/// Interrupt acknowledge table.
/// This is the fix interrupt acknowledge table. It is const and so it will
/// reside within ROM.
///
const int_ackn_t hal_int_ackn_tbl[CYGNUM_HAL_ISR_COUNT] =
{
ACKN_TBL_ENTRY(0, CLR_NOT), // 000 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 001 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 002 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 003 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 004 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 005 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 006 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 007 NMI
ACKN_TBL_ENTRY(0, CLR_NOT), // 008 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 009 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 010 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 011 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 012 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 013 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 014 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 015 RSV
//---------------------------------------------------------------------------------
// External interrupts
//
ACKN_TBL_ENTRY(CYGARC_ISR, CLR_BIT(0)), // 016 IRQ 0
ACKN_TBL_ENTRY(CYGARC_ISR, CLR_BIT(1)), // 017 IRQ 1
ACKN_TBL_ENTRY(CYGARC_ISR, CLR_BIT(2)), // 018 IRQ 2
ACKN_TBL_ENTRY(CYGARC_ISR, CLR_BIT(3)), // 019 IRQ 3
ACKN_TBL_ENTRY(CYGARC_ISR, CLR_BIT(4)), // 020 IRQ 4
ACKN_TBL_ENTRY(CYGARC_ISR, CLR_BIT(5)), // 021 IRQ 5
ACKN_TBL_ENTRY(0, CLR_NOT), // 022 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 023 RSV
//---------------------------------------------------------------------------------
//
//
ACKN_TBL_ENTRY(0, CLR_NOT), // 024 SWDTEND
ACKN_TBL_ENTRY(0, NOT_SUPPORTED), // 025 WOVI0
ACKN_TBL_ENTRY(0, CLR_NOT), // 026 RSV
ACKN_TBL_ENTRY(CYGARC_BCRA, CLR_BIT(7)), // 027 PCBREAK - $$$$ only channel A supported
ACKN_TBL_ENTRY(CYGARC_ADCSR, CLR_BIT(7)), // 028 ADI
ACKN_TBL_ENTRY(0, NOT_SUPPORTED), // 029 WOVI1
ACKN_TBL_ENTRY(0, CLR_NOT), // 030 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 031 RSV
//---------------------------------------------------------------------------------
// TPU 0
//
ACKN_TBL_ENTRY(CYGARC_TSR0, CLR_BIT(0)), // 032 TGI0A
ACKN_TBL_ENTRY(CYGARC_TSR0, CLR_BIT(1)), // 033 TGI0B
ACKN_TBL_ENTRY(CYGARC_TSR0, CLR_BIT(2)), // 034 TGI0C
ACKN_TBL_ENTRY(CYGARC_TSR0, CLR_BIT(3)), // 035 TGI0D
ACKN_TBL_ENTRY(CYGARC_TSR0, CLR_BIT(4)), // 036 TCI0V
ACKN_TBL_ENTRY(0, CLR_NOT), // 037 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 038 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 039 RSV
//---------------------------------------------------------------------------------
// TPU 1
//
ACKN_TBL_ENTRY(CYGARC_TSR1, CLR_BIT(0)), // 040 TGI1A
ACKN_TBL_ENTRY(CYGARC_TSR1, CLR_BIT(1)), // 041 TGI1B
ACKN_TBL_ENTRY(CYGARC_TSR1, CLR_BIT(4)), // 042 TCI1V
ACKN_TBL_ENTRY(CYGARC_TSR1, CLR_BIT(5)), // 043 TCI1U
//---------------------------------------------------------------------------------
// TPU 2
//
ACKN_TBL_ENTRY(CYGARC_TSR2, CLR_BIT(0)), // 044 TGI2A
ACKN_TBL_ENTRY(CYGARC_TSR2, CLR_BIT(1)), // 045 TGI2B
ACKN_TBL_ENTRY(CYGARC_TSR2, CLR_BIT(4)), // 045 TCI2V
ACKN_TBL_ENTRY(CYGARC_TSR2, CLR_BIT(5)), // 047 TCI2U
//---------------------------------------------------------------------------------
// TPU 3
//
ACKN_TBL_ENTRY(CYGARC_TSR3, CLR_BIT(0)), // 048 TGI3A
ACKN_TBL_ENTRY(CYGARC_TSR3, CLR_BIT(1)), // 049 TGI3B
ACKN_TBL_ENTRY(CYGARC_TSR3, CLR_BIT(2)), // 050 TGI3C
ACKN_TBL_ENTRY(CYGARC_TSR3, CLR_BIT(3)), // 051 TGI3D
ACKN_TBL_ENTRY(CYGARC_TSR3, CLR_BIT(4)), // 052 TCI3V
ACKN_TBL_ENTRY(0, CLR_NOT), // 053 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 054 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 055 RSV
//---------------------------------------------------------------------------------
// TPU 4
//
ACKN_TBL_ENTRY(CYGARC_TSR4, CLR_BIT(0)), // 056 TGI4A
ACKN_TBL_ENTRY(CYGARC_TSR4, CLR_BIT(1)), // 057 TGI4B
ACKN_TBL_ENTRY(CYGARC_TSR4, CLR_BIT(4)), // 058 TCI4V
ACKN_TBL_ENTRY(CYGARC_TSR4, CLR_BIT(5)), // 059 TCI4U
//---------------------------------------------------------------------------------
// TPU 5
//
ACKN_TBL_ENTRY(CYGARC_TSR5, CLR_BIT(0)), // 060 TGI5A
ACKN_TBL_ENTRY(CYGARC_TSR5, CLR_BIT(1)), // 061 TGI5B
ACKN_TBL_ENTRY(CYGARC_TSR5, CLR_BIT(4)), // 062 TCI5V
ACKN_TBL_ENTRY(CYGARC_TSR5, CLR_BIT(5)), // 063 TCI5U
//---------------------------------------------------------------------------------
// Reserved
//
ACKN_TBL_ENTRY(0, CLR_NOT), // 064 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 065 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 066 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 067 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 068 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 069 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 070 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 071 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 072 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 073 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 074 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 075 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 076 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 077 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 078 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 079 RSV
//---------------------------------------------------------------------------------
// SCI 0
//
ACKN_TBL_ENTRY(CYGARC_SSR0, CLR_BIT(3) & CLR_BIT(4) & CLR_BIT(5)), // 080 ERI0
ACKN_TBL_ENTRY(CYGARC_SSR0, CLR_BIT(6)), // 081 RXI0
ACKN_TBL_ENTRY(CYGARC_SSR0, CLR_BIT(7)), // 082 TXI0
ACKN_TBL_ENTRY(CYGARC_SSR0, CLR_BIT(2)), // 083 TEI0
//---------------------------------------------------------------------------------
// SCI 1
//
ACKN_TBL_ENTRY(CYGARC_SSR1, CLR_BIT(3) & CLR_BIT(4) & CLR_BIT(5)), // 084 ERI1
ACKN_TBL_ENTRY(CYGARC_SSR1, CLR_BIT(6)), // 085 RXI1
ACKN_TBL_ENTRY(CYGARC_SSR1, CLR_BIT(7)), // 086 TXI1
ACKN_TBL_ENTRY(CYGARC_SSR1, CLR_BIT(2)), // 087 TEI1
//---------------------------------------------------------------------------------
// SCI 2
//
ACKN_TBL_ENTRY(CYGARC_SSR2, CLR_BIT(3) & CLR_BIT(4) & CLR_BIT(5)), // 088 ERI2
ACKN_TBL_ENTRY(CYGARC_SSR2, CLR_BIT(6)), // 089 RXI2
ACKN_TBL_ENTRY(CYGARC_SSR2, CLR_BIT(7)), // 090 TXI2
ACKN_TBL_ENTRY(CYGARC_SSR2, CLR_BIT(2)), // 091 TEI2
//---------------------------------------------------------------------------------
// Reserved
//
ACKN_TBL_ENTRY(0, CLR_NOT), // 092 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 093 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 094 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 095 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 096 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 097 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 098 RSV
ACKN_TBL_ENTRY(0, CLR_NOT), // 099 RSV
//---------------------------------------------------------------------------------
// I2C
//
ACKN_TBL_ENTRY(CYGARC_ICCR0, CLR_BIT(1)), // 100 I2C0
ACKN_TBL_ENTRY(CYGARC_ICCR1, CLR_BIT(1)), // 101 DDCSW1
ACKN_TBL_ENTRY(CYGARC_ICCR1, CLR_BIT(1)), // 102 I2C1
ACKN_TBL_ENTRY(0, CLR_NOT), // 103 RSV
//---------------------------------------------------------------------------------
// PWM Timer
//
ACKN_TBL_ENTRY(CYGARC_PWCR1, CLR_BIT(4)), // 104 PWM1
ACKN_TBL_ENTRY(CYGARC_PWCR2, CLR_BIT(4)), // 105 PWM2
//---------------------------------------------------------------------------------
// HCAN1
//
ACKN_TBL_ENTRY(CYGARC_HCAN1_IRRH, CLR_BIT(1)), // 106 RM1 - acknowledges only receive interrupts
ACKN_TBL_ENTRY(CYGARC_HCAN1_IRRH, CLR_BIT(1)), // 107 RM0 - acknowledges only receive interrupts
//---------------------------------------------------------------------------------
// HCAN0
//
ACKN_TBL_ENTRY(CYGARC_HCAN0_IRRH, CLR_BIT(1)), // 108 RM1 - acknowledges only receive interrupts
ACKN_TBL_ENTRY(CYGARC_HCAN0_IRRH, CLR_BIT(1)) // 109 RM0 - acknowledges only receive interrupts
};
//===========================================================================
// INTERRUPT MASK TABLE
// DESCRIPTION:
// This table contains all H8S/2674 interrupt enable registers and the
// masks required for masking or unmasking an interrupt
//===========================================================================
///
/// This data type stores mask and address of one interrupt source
///
typedef struct
{
cyg_uint32 mask : 8; ///< interrupt mask to be applied
cyg_uint32 address : 24; ///< address of H8S interrupt enable register
} int_mask_t;
//
// Use this macro when entering entries into the hal_int_mask_tbl
//
#define MASK_TBL_ENTRY(_int_en_reg_, _mask_) {(_mask_), (_int_en_reg_)}
#define BIT(_no_) ((_no_))
//
// this define should be used for interrupt vectors without a mask
// register - i.e the NMI interrupt. This marks the interrupt as
// available because not available interrupts contain a 0
//
#define NO_MASK_REG 1
///
/// Interrupt mask table.
/// This is the fix interrupt mask table. It is const and so it will reside
/// within ROM.
///
const int_mask_t hal_int_mask_tbl[CYGNUM_HAL_ISR_COUNT] =
{
MASK_TBL_ENTRY(0, 0), // 000 RSV
MASK_TBL_ENTRY(0, 0), // 001 RSV
MASK_TBL_ENTRY(0, 0), // 002 RSV
MASK_TBL_ENTRY(0, 0), // 003 RSV
MASK_TBL_ENTRY(0, 0), // 004 RSV
MASK_TBL_ENTRY(0, 0), // 005 RSV
MASK_TBL_ENTRY(0, 0), // 006 RSV
MASK_TBL_ENTRY(NO_MASK_REG, 0), // 007 NMI
MASK_TBL_ENTRY(0, 0), // 008 RSV
MASK_TBL_ENTRY(0, 0), // 009 RSV
MASK_TBL_ENTRY(0, 0), // 010 RSV
MASK_TBL_ENTRY(0, 0), // 011 RSV
MASK_TBL_ENTRY(0, 0), // 012 RSV
MASK_TBL_ENTRY(0, 0), // 013 RSV
MASK_TBL_ENTRY(0, 0), // 014 RSV
MASK_TBL_ENTRY(0, 0), // 015 RSV
//---------------------------------------------------------------------------------
// External interrupts
//
MASK_TBL_ENTRY(CYGARC_IER, BIT(0)), // 016 IRQ 0
MASK_TBL_ENTRY(CYGARC_IER, BIT(1)), // 017 IRQ 1
MASK_TBL_ENTRY(CYGARC_IER, BIT(2)), // 018 IRQ 2
MASK_TBL_ENTRY(CYGARC_IER, BIT(3)), // 019 IRQ 3
MASK_TBL_ENTRY(CYGARC_IER, BIT(4)), // 020 IRQ 4
MASK_TBL_ENTRY(CYGARC_IER, BIT(5)), // 021 IRQ 5
MASK_TBL_ENTRY(0, 0), // 022 RSV
MASK_TBL_ENTRY(0, 0), // 023 RSV
//---------------------------------------------------------------------------------
//
//
MASK_TBL_ENTRY(NO_MASK_REG, 0), // 024 SWDTEND
MASK_TBL_ENTRY(CYGARC_TCSR0W,BIT(5)), // 025 WOVI0
MASK_TBL_ENTRY(0, 0), // 026 RSV
MASK_TBL_ENTRY(CYGARC_BCRA, BIT(0)), // 027 PCBREAK - only channel A supported now
MASK_TBL_ENTRY(CYGARC_ADCSR, BIT(6)), // 028 ADI
MASK_TBL_ENTRY(CYGARC_TCSR1W,BIT(5)), // 029 WOVI1
MASK_TBL_ENTRY(0 ,0), // 030 RSV
MASK_TBL_ENTRY(0, 0), // 031 RSV
//---------------------------------------------------------------------------------
// TPU 0
//
MASK_TBL_ENTRY(CYGARC_TIER0, BIT(0)), // 032 TGI0A
MASK_TBL_ENTRY(CYGARC_TIER0, BIT(1)), // 033 TGI0B
MASK_TBL_ENTRY(CYGARC_TIER0, BIT(2)), // 034 TGI0C
MASK_TBL_ENTRY(CYGARC_TIER0, BIT(3)), // 035 TGI0D
MASK_TBL_ENTRY(CYGARC_TIER0, BIT(4)), // 036 TCI0V
MASK_TBL_ENTRY(0, 0), // 037 RSV
MASK_TBL_ENTRY(0, 0), // 038 RSV
MASK_TBL_ENTRY(0, 0), // 039 RSV
//---------------------------------------------------------------------------------
// TPU 1
//
MASK_TBL_ENTRY(CYGARC_TIER1, BIT(0)), // 040 TGI1A
MASK_TBL_ENTRY(CYGARC_TIER1, BIT(1)), // 041 TGI1B
MASK_TBL_ENTRY(CYGARC_TIER1, BIT(4)), // 042 TCI1V
MASK_TBL_ENTRY(CYGARC_TIER1, BIT(5)), // 043 TCI1U
//---------------------------------------------------------------------------------
// TPU 2
//
MASK_TBL_ENTRY(CYGARC_TIER2, BIT(0)), // 044 TGI2A
MASK_TBL_ENTRY(CYGARC_TIER2, BIT(1)), // 045 TGI2B
MASK_TBL_ENTRY(CYGARC_TIER2, BIT(4)), // 046 TCI2V
MASK_TBL_ENTRY(CYGARC_TIER2, BIT(5)), // 047 TCI2U
//---------------------------------------------------------------------------------
// TPU 3
//
MASK_TBL_ENTRY(CYGARC_TIER3, BIT(0)), // 048 TGI3A
MASK_TBL_ENTRY(CYGARC_TIER3, BIT(1)), // 049 TGI3B
MASK_TBL_ENTRY(CYGARC_TIER3, BIT(2)), // 050 TGI3C
MASK_TBL_ENTRY(CYGARC_TIER3, BIT(3)), // 051 TGI3D
MASK_TBL_ENTRY(CYGARC_TIER3, BIT(4)), // 052 TCI3V
MASK_TBL_ENTRY(0, 0), // 053 RSV
MASK_TBL_ENTRY(0, 0), // 054 RSV
MASK_TBL_ENTRY(0, 0), // 055 RSV
//---------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -