Index: firmware/HD.dil =================================================================== diff -u -r8a82329b87a497976ae1e41d611f83baa5c64530 -r0a0b6c446cd0f428af75b28e6ca8206bbcf148ac --- firmware/HD.dil (.../HD.dil) (revision 8a82329b87a497976ae1e41d611f83baa5c64530) +++ firmware/HD.dil (.../HD.dil) (revision 0a0b6c446cd0f428af75b28e6ca8206bbcf148ac) @@ -1,4 +1,4 @@ -# RM46L852PGE 03/10/20 19:22:14 +# RM46L852PGE 04/29/20 14:27:22 # ARCH=RM46L852PGE # @@ -260,7 +260,7 @@ DRIVER.SYSTEM.VAR.FLASHW_BASE_ADDRESS.VALUE=0xFFF87000 DRIVER.SYSTEM.VAR.CORE_MPU_REGION_12_SUB_5_DISABLE.VALUE=0 DRIVER.SYSTEM.VAR.CORE_HANDLER_TABLE_FIQ_ENTRY.VALUE="ldr pc,[pc,#-0x1b0]" -DRIVER.SYSTEM.VAR.VIM_CHANNEL_10_INT_ENABLE.VALUE=0 +DRIVER.SYSTEM.VAR.VIM_CHANNEL_10_INT_ENABLE.VALUE=1 DRIVER.SYSTEM.VAR.SAFETY_INIT_CAN5_DP_PBISTCHECK_ENA.VALUE=0x00000000 DRIVER.SYSTEM.VAR.SCILIN_ENABLE.VALUE=0 DRIVER.SYSTEM.VAR.SPI_ENABLE.VALUE=0 @@ -311,7 +311,7 @@ DRIVER.SYSTEM.VAR.VIM_CHANNEL_8_INT_ENABLE.VALUE=0 DRIVER.SYSTEM.VAR.SAFETY_INIT_STC_CPUSELFTEST_ENA.VALUE=0 DRIVER.SYSTEM.VAR.ETPWM2_ENABLE.VALUE=1 -DRIVER.SYSTEM.VAR.HET1_ENABLE.VALUE=0 +DRIVER.SYSTEM.VAR.HET1_ENABLE.VALUE=1 DRIVER.SYSTEM.VAR.CLKT_RTI1_PRE_SOURCE.VALUE=PLL1 DRIVER.SYSTEM.VAR.FLASH_MODE_VALUE.VALUE=1 DRIVER.SYSTEM.VAR.CORE_MPU_REGION_5_SIZE_VALUE.VALUE=0x19 @@ -512,7 +512,7 @@ DRIVER.SYSTEM.VAR.VIM_CHANNEL_64_INT_TYPE.VALUE=FIQ DRIVER.SYSTEM.VAR.VIM_CHANNEL_56_INT_TYPE.VALUE=IRQ DRIVER.SYSTEM.VAR.VIM_CHANNEL_48_INT_TYPE.VALUE=IRQ -DRIVER.SYSTEM.VAR.VIM_CHANNEL_10_INT_PRAGMA_ENABLE.VALUE=0 +DRIVER.SYSTEM.VAR.VIM_CHANNEL_10_INT_PRAGMA_ENABLE.VALUE=1 DRIVER.SYSTEM.VAR.VIM_CHANNEL_7_INT_ENABLE.VALUE=0 DRIVER.SYSTEM.VAR.SAFETY_INIT_MIBSPI1_RAMPARITYCHECK_ENA.VALUE=1 DRIVER.SYSTEM.VAR.SAFETY_INIT_USB_SP_PBISTCHECK_ENA.VALUE=0x00000000 @@ -650,7 +650,7 @@ DRIVER.SYSTEM.VAR.VIM_CHANNEL_111_INT_ENABLE.VALUE=0 DRIVER.SYSTEM.VAR.VIM_CHANNEL_106_INT_PRAGMA_ENABLE.VALUE=0 DRIVER.SYSTEM.VAR.VIM_CHANNEL_103_INT_ENABLE.VALUE=0 -DRIVER.SYSTEM.VAR.VIM_CHANNEL_10_INT_TYPE.VALUE=IRQ +DRIVER.SYSTEM.VAR.VIM_CHANNEL_10_INT_TYPE.VALUE=FIQ DRIVER.SYSTEM.VAR.ETPWM5_ENABLE.VALUE=0 DRIVER.SYSTEM.VAR.ETPWM_ENABLE.VALUE=1 DRIVER.SYSTEM.VAR.CLKT_PLL2_MUL.VALUE=165 @@ -923,7 +923,7 @@ DRIVER.SYSTEM.VAR.VIM_CHANNEL_19_INT_PRAGMA_ENABLE.VALUE=0 DRIVER.SYSTEM.VAR.SAFETY_INIT_FRAY_RAMPARITYCHECK_ENA.VALUE=0 DRIVER.SYSTEM.VAR.SAFETY_INIT_DMA_DP_PBISTCHECK_ENA.VALUE=0x00000800 -DRIVER.SYSTEM.VAR.HET_ENABLE.VALUE=0 +DRIVER.SYSTEM.VAR.HET_ENABLE.VALUE=1 DRIVER.SYSTEM.VAR.PBIST_ALGO_13_14.VALUE=0 DRIVER.SYSTEM.VAR.RAM_STACK_UNDEF_BASE.VALUE=0x08003600 DRIVER.SYSTEM.VAR.RAM_STACK_SVC_BASE.VALUE=0x08001000 @@ -5929,7 +5929,7 @@ DRIVER.HET.VAR.HET2_PWM4_ACTUALPERIOD.VALUE=1000.862 DRIVER.HET.VAR.HET2_BIT3_PSL.VALUE=0x00000000 DRIVER.HET.VAR.HET2_INT_X6.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_EDGE0_PIN_SELECT.VALUE=9 +DRIVER.HET.VAR.HET1_EDGE0_PIN_SELECT.VALUE=12 DRIVER.HET.VAR.HET1_BIT28_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT7_DOUT.VALUE=0 DRIVER.HET.VAR.HET2_INT_X7.VALUE=0x00000000 @@ -5947,7 +5947,7 @@ DRIVER.HET.VAR.HET2_EDGE6_BOTH.VALUE=0 DRIVER.HET.VAR.HET2_PWM2_DUTY_LVL.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT15_DIR.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_EDGE2_EVENT.VALUE=1 +DRIVER.HET.VAR.HET1_EDGE2_EVENT.VALUE=2 DRIVER.HET.VAR.HET2_BIT11_PULDIS.VALUE=0x00000000 DRIVER.HET.VAR.HET2_PIN_ENABLE.VALUE=0 DRIVER.HET.VAR.HET1_CAP3_POLARITY.VALUE=0 @@ -6000,7 +6000,7 @@ DRIVER.HET.VAR.HET1_PWM5_DUTY_PRESCALER.VALUE=51968 DRIVER.HET.VAR.HET1_BIT3_DIR.VALUE=0x00000000 DRIVER.HET.VAR.HET2_EDGE7_POLARITY.VALUE=0 -DRIVER.HET.VAR.HET1_EDGE1_INTENA.VALUE=0x00000000 +DRIVER.HET.VAR.HET1_EDGE1_INTENA.VALUE=0x00040000 DRIVER.HET.VAR.HET1_PWM3_DUTY.VALUE=50 DRIVER.HET.VAR.HET1_PWM1_PERIOD_INTENA.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT14_PDR.VALUE=0x00000000 @@ -6182,7 +6182,7 @@ DRIVER.HET.VAR.HET1_INT_X11.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT3_PULL.VALUE=1 DRIVER.HET.VAR.HET1_EDGE7_BOTH.VALUE=0 -DRIVER.HET.VAR.HET1_EDGE0_LVL.VALUE=0x00000000 +DRIVER.HET.VAR.HET1_EDGE0_LVL.VALUE=0x00020000 DRIVER.HET.VAR.HET1_BIT7_DIR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_INT_X20.VALUE=0x00000000 DRIVER.HET.VAR.HET1_INT_X12.VALUE=0x00000000 @@ -6224,7 +6224,7 @@ DRIVER.HET.VAR.HET1_INT_X28.VALUE=0x00000000 DRIVER.HET.VAR.HET2_PWM2_PERIOD_INTENA.VALUE=0x00000000 DRIVER.HET.VAR.HET2_RAM_SIZE.VALUE=160 -DRIVER.HET.VAR.HET1_EDGE2_POLARITY.VALUE=0 +DRIVER.HET.VAR.HET1_EDGE2_POLARITY.VALUE=1 DRIVER.HET.VAR.HET1_INT_X29.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT17_PSL.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT14_DOUT.VALUE=0 @@ -6239,7 +6239,7 @@ DRIVER.HET.VAR.HET1_PWM0_POLARITY.VALUE=3 DRIVER.HET.VAR.HET1_BIT4_PSL.VALUE=0x00000000 DRIVER.HET.VAR.HET2_PWM1_PERIOD_PRESCALER.VALUE=103296 -DRIVER.HET.VAR.HET1_EDGE1_LVL.VALUE=0x00000000 +DRIVER.HET.VAR.HET1_EDGE1_LVL.VALUE=0x00040000 DRIVER.HET.VAR.HET1_PWM1_PERIOD_LVL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT27_PULL.VALUE=1 DRIVER.HET.VAR.HET1_BIT19_PULL.VALUE=1 @@ -6274,7 +6274,7 @@ DRIVER.HET.VAR.HET1_BIT5_PSL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_PWM4_DUTYTIME.VALUE=501.669 DRIVER.HET.VAR.HET2_BIT4_PULL.VALUE=1 -DRIVER.HET.VAR.HET1_EDGE2_LVL.VALUE=0x00000000 +DRIVER.HET.VAR.HET1_EDGE2_LVL.VALUE=0x00080000 DRIVER.HET.VAR.HET1_PWM2_DUTY_LVL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_PWM2_DUTY_PRESCALER.VALUE=51968 DRIVER.HET.VAR.HET1_BIT9_DIR.VALUE=0x00000000 @@ -6351,7 +6351,7 @@ DRIVER.HET.VAR.HET1_EDGE4_LVL.VALUE=0x00000000 DRIVER.HET.VAR.HET2_CAP0_POLARITY.VALUE=0 DRIVER.HET.VAR.HET2_BIT4_XORSHARE.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_EDGE2_INTENA.VALUE=0x00000000 +DRIVER.HET.VAR.HET1_EDGE2_INTENA.VALUE=0x00080000 DRIVER.HET.VAR.HET1_PWM7_DUTY.VALUE=50 DRIVER.HET.VAR.HET1_PWM2_DUTY_INTENA.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT8_DOUT.VALUE=0 @@ -6423,7 +6423,7 @@ DRIVER.HET.VAR.HET1_INT_X9.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BASE.VALUE=0xFFF7B900 DRIVER.HET.VAR.HET2_EDGE2_BOTH.VALUE=0 -DRIVER.HET.VAR.HET1_EDGE0_EVENT.VALUE=1 +DRIVER.HET.VAR.HET1_EDGE0_EVENT.VALUE=2 DRIVER.HET.VAR.HET2_BIT10_PULDIS.VALUE=0x00000000 DRIVER.HET.VAR.HET1_CAP2_PIN_SELECT.VALUE=4 DRIVER.HET.VAR.HET1_BIT11_PSL.VALUE=0x00000000 @@ -6449,7 +6449,7 @@ DRIVER.HET.VAR.HET2_BIT6_PULL.VALUE=1 DRIVER.HET.VAR.HET1_EDGE6_LVL.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT7_PULDIS.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_EDGE1_POLARITY.VALUE=0 +DRIVER.HET.VAR.HET1_EDGE1_POLARITY.VALUE=1 DRIVER.HET.VAR.HET1_RAM_SIZE.VALUE=160 DRIVER.HET.VAR.HET2_BIT9_DOUT.VALUE=0 DRIVER.HET.VAR.HET1_BIT21_PDR.VALUE=0x00000000 @@ -6464,7 +6464,7 @@ DRIVER.HET.VAR.HET2_BIT14_PULL.VALUE=1 DRIVER.HET.VAR.HET1_EDGE7_INTENA.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT17_DOUT.VALUE=0 -DRIVER.HET.VAR.HET1_EDGE2_PIN_SELECT.VALUE=13 +DRIVER.HET.VAR.HET1_EDGE2_PIN_SELECT.VALUE=30 DRIVER.HET.VAR.HET1_BIT20_PSL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT12_PSL.VALUE=0x00000000 DRIVER.HET.VAR.HET1_HR_FREQUENCY.VALUE=110.000 @@ -6476,7 +6476,7 @@ DRIVER.HET.VAR.HET1_BIT16_DIR.VALUE=0x00000000 DRIVER.HET.VAR.HET2_PWM1_POLARITY.VALUE=3 DRIVER.HET.VAR.HET2_BIT18_ANDSHARE.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_EDGE0_INTENA.VALUE=0x00000000 +DRIVER.HET.VAR.HET1_EDGE0_INTENA.VALUE=0x00020000 DRIVER.HET.VAR.HET2_BIT0_DOUT.VALUE=0 DRIVER.HET.VAR.HET1_PWM6_PIN_SELECT.VALUE=18 DRIVER.HET.VAR.HET2_EDGE2_EVENT.VALUE=1 @@ -6584,7 +6584,7 @@ DRIVER.HET.VAR.HET2_EDGE4_BOTH.VALUE=0 DRIVER.HET.VAR.HET2_PWM1_PERIOD_LVL.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT11_DIR.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_EDGE1_EVENT.VALUE=1 +DRIVER.HET.VAR.HET1_EDGE1_EVENT.VALUE=2 DRIVER.HET.VAR.HET2_LR_PRESCALE.VALUE=7 DRIVER.HET.VAR.HET2_PWM2_PIN_SELECT.VALUE=12 DRIVER.HET.VAR.HET2_BIT1_PDR.VALUE=0x00000000 @@ -6604,7 +6604,7 @@ DRIVER.HET.VAR.HET2_BIT8_ANDSHARE.VALUE=0x00000000 DRIVER.HET.VAR.HET1_PWM4_DUTY_INTENA.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT9_PULDIS.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_EDGE1_PIN_SELECT.VALUE=11 +DRIVER.HET.VAR.HET1_EDGE1_PIN_SELECT.VALUE=14 DRIVER.HET.VAR.HET1_BIT25_DOUT.VALUE=0 DRIVER.HET.VAR.HET1_BIT17_DOUT.VALUE=0 DRIVER.HET.VAR.HET2_BIT8_PULL.VALUE=1 @@ -6672,7 +6672,7 @@ DRIVER.HET.VAR.HET2_EDGE5_BOTH.VALUE=0 DRIVER.HET.VAR.HET2_BIT13_DIR.VALUE=0x00000000 DRIVER.HET.VAR.HET2_BIT3_PULDIS.VALUE=0x00000000 -DRIVER.HET.VAR.HET1_EDGE0_POLARITY.VALUE=0 +DRIVER.HET.VAR.HET1_EDGE0_POLARITY.VALUE=1 DRIVER.HET.VAR.HET2_PWM7_ACTUALPERIOD.VALUE=1000.862 DRIVER.HET.VAR.HET2_BIT3_PDR.VALUE=0x00000000 DRIVER.HET.VAR.HET1_BIT25_PSL.VALUE=0x00000000 @@ -7422,7 +7422,7 @@ DRIVER.PINMUX.VAR.MUX6_OPTION3.VALUE=0 DRIVER.PINMUX.VAR.MUX60_OPTION0.VALUE=0 DRIVER.PINMUX.VAR.MUX52_OPTION0.VALUE=0 -DRIVER.PINMUX.VAR.MUX44_OPTION0.VALUE=0 +DRIVER.PINMUX.VAR.MUX44_OPTION0.VALUE=1 DRIVER.PINMUX.VAR.MUX36_OPTION0.VALUE=0 DRIVER.PINMUX.VAR.MUX28_OPTION0.VALUE=1 DRIVER.PINMUX.VAR.MUX6_OPTION4.VALUE=0 @@ -7668,7 +7668,7 @@ DRIVER.PINMUX.VAR.DMA_ADDMW_6.VALUE=CONSTANT DRIVER.PINMUX.VAR.DMA_INTFTCEN_2.VALUE=1 DRIVER.PINMUX.VAR.MUX51_OPTION0.VALUE=0 -DRIVER.PINMUX.VAR.MUX43_OPTION0.VALUE=0 +DRIVER.PINMUX.VAR.MUX43_OPTION0.VALUE=1 DRIVER.PINMUX.VAR.MUX35_OPTION0.VALUE=0 DRIVER.PINMUX.VAR.MUX27_OPTION0.VALUE=1 DRIVER.PINMUX.VAR.MUX19_OPTION0.VALUE=0 @@ -8691,7 +8691,7 @@ DRIVER.PINMUX.VAR.MUX70_OPTION0.VALUE=0 DRIVER.PINMUX.VAR.MUX62_OPTION0.VALUE=0 DRIVER.PINMUX.VAR.MUX54_OPTION0.VALUE=0 -DRIVER.PINMUX.VAR.MUX46_OPTION0.VALUE=0 +DRIVER.PINMUX.VAR.MUX46_OPTION0.VALUE=1 DRIVER.PINMUX.VAR.MUX38_OPTION0.VALUE=0 DRIVER.PINMUX.VAR.MUX8_OPTION4.VALUE=0 DRIVER.PINMUX.VAR.MUX70_OPTION1.VALUE=0 Index: firmware/HD.hcg =================================================================== diff -u -ra74a984a7059f75d86ad87d6d9499bd8f94cc976 -r0a0b6c446cd0f428af75b28e6ca8206bbcf148ac --- firmware/HD.hcg (.../HD.hcg) (revision a74a984a7059f75d86ad87d6d9499bd8f94cc976) +++ firmware/HD.hcg (.../HD.hcg) (revision 0a0b6c446cd0f428af75b28e6ca8206bbcf148ac) @@ -294,7 +294,9 @@ htu.h - + + het.c + @@ -598,7 +600,7 @@ include\htu.h - + source\het.c Index: firmware/include/het.h =================================================================== diff -u -reff7b1575f008f81b29ef906f6346fac6012d3ab -r0a0b6c446cd0f428af75b28e6ca8206bbcf148ac --- firmware/include/het.h (.../het.h) (revision eff7b1575f008f81b29ef906f6346fac6012d3ab) +++ firmware/include/het.h (.../het.h) (revision 0a0b6c446cd0f428af75b28e6ca8206bbcf148ac) @@ -331,9 +331,274 @@ uint32 CONFIG_PCR; } het_config_reg_t; +/* Configuration registers initial value for HET1*/ +#define HET1_DIR_CONFIGVALUE ((uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00400000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U) +#define HET1_PDR_CONFIGVALUE ((uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U) + +#define HET1_PULDIS_CONFIGVALUE ((uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U) + +#define HET1_PSL_CONFIGVALUE ((uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00400000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U) + +#define HET1_HRSH_CONFIGVALUE ((uint32)0x00008000U \ + | (uint32)0x00004000U \ + | (uint32)0x00002000U \ + | (uint32)0x00001000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000008U \ + | (uint32)0x00000004U \ + | (uint32)0x00000002U \ + | (uint32)0x00000001U) +#define HET1_AND_CONFIGVALUE ((uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U) + +#define HET1_XOR_CONFIGVALUE ((uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U) + +#define HET1_PFR_CONFIGVALUE (((uint32)7U << 8U) | (uint32)0U) + +#define HET1_PRY_CONFIGVALUE ((uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00020000U \ + | (uint32)0x00040000U \ + | (uint32)0x00080000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U) + +#define HET1_INTENAC_CONFIGVALUE ((uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00020000U \ + | (uint32)0x00040000U \ + | (uint32)0x00080000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U) + +#define HET1_INTENAS_CONFIGVALUE ((uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00020000U \ + | (uint32)0x00040000U \ + | (uint32)0x00080000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U \ + | (uint32)0x00000000U) + +#define HET1_PCR_CONFIGVALUE ((uint32)0x00000005U) +#define HET1_GCR_CONFIGVALUE 0x00030001U + + + + /** * @defgroup HET HET * @brief HighEnd Timer Module. @@ -378,6 +643,7 @@ /* Timestamp Interface Functions */ void hetResetTimestamp(hetRAMBASE_t * hetRAM); uint32 hetGetTimestamp(hetRAMBASE_t * hetRAM); +void het1GetConfigValue(het_config_reg_t *config_reg, config_value_type_t type); /** @fn void hetNotification(hetBASE_t *het, uint32 offset) * @brief het interrupt callback Index: firmware/include/sys_vim.h =================================================================== diff -u -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1 -r0a0b6c446cd0f428af75b28e6ca8206bbcf148ac --- firmware/include/sys_vim.h (.../sys_vim.h) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1) +++ firmware/include/sys_vim.h (.../sys_vim.h) (revision 0a0b6c446cd0f428af75b28e6ca8206bbcf148ac) @@ -93,6 +93,7 @@ extern void rtiCompare0Interrupt(void); extern void rtiCompare1Interrupt(void); extern void rtiCompare3Interrupt(void); +extern void het1HighLevelInterrupt(void); extern void linHighLevelInterrupt(void); extern void adc1Group1Interrupt(void); extern void can1HighLevelInterrupt(void); @@ -141,7 +142,7 @@ | (uint32)((uint32)SYS_IRQ << 7U)\ | (uint32)((uint32)SYS_IRQ << 8U)\ | (uint32)((uint32)SYS_IRQ << 9U)\ - | (uint32)((uint32)SYS_IRQ << 10U)\ + | (uint32)((uint32)SYS_FIQ << 10U)\ | (uint32)((uint32)SYS_IRQ << 11U)\ | (uint32)((uint32)SYS_IRQ << 12U)\ | (uint32)((uint32)SYS_FIQ << 13U)\ @@ -273,7 +274,7 @@ | (uint32)((uint32)0U << 7U)\ | (uint32)((uint32)0U << 8U)\ | (uint32)((uint32)0U << 9U)\ - | (uint32)((uint32)0U << 10U)\ + | (uint32)((uint32)1U << 10U)\ | (uint32)((uint32)0U << 11U)\ | (uint32)((uint32)0U << 12U)\ | (uint32)((uint32)1U << 13U)\ Index: firmware/source/het.c =================================================================== diff -u --- firmware/source/het.c (revision 0) +++ firmware/source/het.c (revision 0a0b6c446cd0f428af75b28e6ca8206bbcf148ac) @@ -0,0 +1,1968 @@ +/** @file het.c +* @brief HET Driver Implementation File +* @date 11-Dec-2018 +* @version 04.07.01 +* +*/ + +/* +* Copyright (C) 2009-2018 Texas Instruments Incorporated - www.ti.com +* +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* +* Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* +* Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the +* distribution. +* +* Neither the name of Texas Instruments Incorporated nor the names of +* its contributors may be used to endorse or promote products derived +* from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +*/ + + +#include "het.h" +#include "sys_vim.h" +/* USER CODE BEGIN (0) */ +/* USER CODE END */ + +/*----------------------------------------------------------------------------*/ +/* Global variables */ + +static const uint32 s_het1pwmPolarity[8U] = +{ + 3U, + 3U, + 3U, + 3U, + 3U, + 3U, + 3U, + 3U, +}; + + +/*----------------------------------------------------------------------------*/ +/* Default Program */ + +/** @var static const hetINSTRUCTION_t het1PROGRAM[58] +* @brief Default Program +* +* Het program running after initialization. +*/ + +static const hetINSTRUCTION_t het1PROGRAM[58U] = +{ + /* CNT: Timebase + * - Instruction = 0 + * - Next instruction = 1 + * - Conditional next instruction = na + * - Interrupt = na + * - Pin = na + * - Reg = T + */ + { + /* Program */ + 0x00002C80U, + /* Control */ + 0x01FFFFFFU, + /* Data */ + 0xFFFFFF80U, + /* Reserved */ + 0x00000000U + }, + /* PWCNT: PWM 0 -> Duty Cycle + * - Instruction = 1 + * - Next instruction = 2 + * - Conditional next instruction = 2 + * - Interrupt = 1 + * - Pin = 8 + */ + { + /* Program */ + 0x000055C0U, + /* Control */ + (0x00004006U | (uint32)((uint32)8U << 8U) | (uint32)((uint32)3U << 3U)), + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* DJZ: PWM 0 -> Period + * - Instruction = 2 + * - Next instruction = 3 + * - Conditional next instruction = 41 + * - Interrupt = 2 + * - Pin = na + */ + { + /* Program */ + 0x00007480U, + /* Control */ + 0x00052006U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PWCNT: PWM 1 -> Duty Cycle + * - Instruction = 3 + * - Next instruction = 4 + * - Conditional next instruction = 4 + * - Interrupt = 3 + * - Pin = 10 + */ + { + /* Program */ + 0x000095C0U, + /* Control */ + (0x00008006U | (uint32)((uint32)10U << 8U) | (uint32)((uint32)3U << 3U)), + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* DJZ: PWM 1 -> Period + * - Instruction = 4 + * - Next instruction = 5 + * - Conditional next instruction = 43 + * - Interrupt = 4 + * - Pin = na + */ + { + /* Program */ + 0x0000B480U, + /* Control */ + 0x00056006U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PWCNT: PWM 2 -> Duty Cycle + * - Instruction = 5 + * - Next instruction = 6 + * - Conditional next instruction = 6 + * - Interrupt = 5 + * - Pin = 12 + */ + { + /* Program */ + 0x0000D5C0U, + /* Control */ + (0x0000C006U | (uint32)((uint32)12U << 8U) | (uint32)((uint32)3U << 3U)), + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* DJZ: PWM 2 -> Period + * - Instruction = 6 + * - Next instruction = 7 + * - Conditional next instruction = 45 + * - Interrupt = 6 + * - Pin = na + */ + { + /* Program */ + 0x0000F480U, + /* Control */ + 0x0005A006U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PWCNT: PWM 3 -> Duty Cycle + * - Instruction = 7 + * - Next instruction = 8 + * - Conditional next instruction = 8 + * - Interrupt = 7 + * - Pin = 14 + */ + { + /* Program */ + 0x000115C0U, + /* Control */ + (0x00010006U | (uint32)((uint32)14U << 8U) | (uint32)((uint32)3U << 3U)), + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* DJZ: PWM 3 -> Period + * - Instruction = 8 + * - Next instruction = 9 + * - Conditional next instruction = 47 + * - Interrupt = 8 + * - Pin = na + */ + { + /* Program */ + 0x00013480U, + /* Control */ + 0x0005E006U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PWCNT: PWM 4 -> Duty Cycle + * - Instruction = 9 + * - Next instruction = 10 + * - Conditional next instruction = 10 + * - Interrupt = 9 + * - Pin = 16 + */ + { + /* Program */ + 0x000155C0U, + /* Control */ + (0x00014006U | (uint32)((uint32)16U << 8U) | (uint32)((uint32)3U << 3U)), + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* DJZ: PWM 4 -> Period + * - Instruction = 10 + * - Next instruction = 11 + * - Conditional next instruction = 49 + * - Interrupt = 10 + * - Pin = na + */ + { + /* Program */ + 0x00017480U, + /* Control */ + 0x00062006U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PWCNT: PWM 5 -> Duty Cycle + * - Instruction = 11 + * - Next instruction = 12 + * - Conditional next instruction = 12 + * - Interrupt = 11 + * - Pin = 17 + */ + { + /* Program */ + 0x000195C0U, + /* Control */ + (0x00018006U | (uint32)((uint32)17U << 8U) | (uint32)((uint32)3U << 3U)), + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* DJZ: PWM 5 -> Period + * - Instruction = 12 + * - Next instruction = 13 + * - Conditional next instruction = 51 + * - Interrupt = 12 + * - Pin = na + */ + { + /* Program */ + 0x0001B480U, + /* Control */ + 0x00066006U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PWCNT: PWM 6 -> Duty Cycle + * - Instruction = 13 + * - Next instruction = 14 + * - Conditional next instruction = 14 + * - Interrupt = 13 + * - Pin = 18 + */ + { + /* Program */ + 0x0001D5C0U, + /* Control */ + (0x0001C006U | (uint32)((uint32)18U << 8U) | (uint32)((uint32)3U << 3U)), + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* DJZ: PWM 6 -> Period + * - Instruction = 14 + * - Next instruction = 15 + * - Conditional next instruction = 53 + * - Interrupt = 14 + * - Pin = na + */ + { + /* Program */ + 0x0001F480U, + /* Control */ + 0x0006A006U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PWCNT: PWM 7 -> Duty Cycle + * - Instruction = 15 + * - Next instruction = 16 + * - Conditional next instruction = 16 + * - Interrupt = 15 + * - Pin = 19 + */ + { + /* Program */ + 0x000215C0U, + /* Control */ + (0x00020006U | (uint32)((uint32)19U << 8U) | (uint32)((uint32)3U << 3U)), + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* DJZ: PWM 7 -> Period + * - Instruction = 16 + * - Next instruction = 17 + * - Conditional next instruction = 55 + * - Interrupt = 16 + * - Pin = na + */ + { + /* Program */ + 0x00023480U, + /* Control */ + 0x0006E006U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* ECNT: CCU Edge 0 + * - Instruction = 17 + * - Next instruction = 18 + * - Conditional next instruction = 18 + * - Interrupt = 17 + * - Pin = 12 + */ + { + /* Program */ + 0x00025440U, + /* Control */ + (0x00024007U | (uint32)((uint32)12U << 8U) | (uint32)((uint32)2U << 4U)), + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* ECNT: CCU Edge 1 + * - Instruction = 18 + * - Next instruction = 19 + * - Conditional next instruction = 19 + * - Interrupt = 18 + * - Pin = 14 + */ + { + /* Program */ + 0x00027440U, + /* Control */ + (0x00026007U | (uint32)((uint32)14U << 8U) | (uint32)((uint32)2U << 4U)), + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* ECNT: CCU Edge 2 + * - Instruction = 19 + * - Next instruction = 20 + * - Conditional next instruction = 20 + * - Interrupt = 19 + * - Pin = 30 + */ + { + /* Program */ + 0x00029440U, + /* Control */ + (0x00028007U | (uint32)((uint32)30U << 8U) | (uint32)((uint32)2U << 4U)), + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* ECNT: CCU Edge 3 + * - Instruction = 20 + * - Next instruction = 21 + * - Conditional next instruction = 21 + * - Interrupt = 20 + * - Pin = 15 + */ + { + /* Program */ + 0x0002B440U, + /* Control */ + (0x0002A007U | (uint32)((uint32)15U << 8U) | (uint32)((uint32)1U << 4U)), + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* ECNT: CCU Edge 4 + * - Instruction = 21 + * - Next instruction = 22 + * - Conditional next instruction = 22 + * - Interrupt = 21 + * - Pin = 20 + */ + { + /* Program */ + 0x0002D440U, + /* Control */ + (0x0002C007U | (uint32)((uint32)20U << 8U) | (uint32)((uint32)1U << 4U)), + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* ECNT: CCU Edge 5 + * - Instruction = 22 + * - Next instruction = 23 + * - Conditional next instruction = 23 + * - Interrupt = 22 + * - Pin = 21 + */ + { + /* Program */ + 0x0002F440U, + /* Control */ + (0x0002E007U | (uint32)((uint32)21U << 8U) | (uint32)((uint32)1U << 4U)), + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* ECNT: CCU Edge 6 + * - Instruction = 23 + * - Next instruction = 24 + * - Conditional next instruction = 24 + * - Interrupt = 23 + * - Pin = 22 + */ + { + /* Program */ + 0x00031440U, + /* Control */ + (0x00030007U | (uint32)((uint32)22U << 8U) | (uint32)((uint32)1U << 4U)), + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* ECNT: CCU Edge 7 + * - Instruction = 24 + * - Next instruction = 25 + * - Conditional next instruction = 25 + * - Interrupt = 24 + * - Pin = 23 + */ + { + /* Program */ + 0x00033440U, + /* Control */ + (0x00032007U | (uint32)((uint32)23U << 8U) | (uint32)((uint32)1U << 4U)), + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PCNT: Capture Duty 0 + * - Instruction = 25 + * - Next instruction = 26 + * - Conditional next instruction = na + * - Interrupt = na + * - Pin = 0 + */ + { + /* Program */ + 0x00034E00U | (uint32)((uint32)0U << 6U) | (uint32)(0U), + /* Control */ + 0x00000000U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PCNT: Capture Period 0 + * - Instruction = 26 + * - Next instruction = 27 + * - Conditional next instruction = na + * - Interrupt = na + * - Pin = 0 + 1 + */ + { + /* Program */ + 0x00036E80U | (uint32)((uint32)0U << 6U) | (uint32)((0U) + 1U), + /* Control */ + 0x00000000U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PCNT: Capture Duty 1 + * - Instruction = 27 + * - Next instruction = 28 + * - Conditional next instruction = na + * - Interrupt = na + * - Pin = 2 + */ + { + /* Program */ + 0x00038E00U | (uint32)((uint32)0U << 6U) | (uint32)(2U), + /* Control */ + 0x00000000U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PCNT: Capture Period 1 + * - Instruction = 28 + * - Next instruction = 29 + * - Conditional next instruction = na + * - Interrupt = na + * - Pin = 2 + 1 + */ + { + /* Program */ + 0x0003AE80U | (uint32)((uint32)0U << 6U) | (uint32)((2U) + 1U), + /* Control */ + 0x00000000U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PCNT: Capture Duty 2 + * - Instruction = 29 + * - Next instruction = 30 + * - Conditional next instruction = na + * - Interrupt = na + * - Pin = 4 + */ + { + /* Program */ + 0x0003CE00U | (uint32)((uint32)0U << 6U) | (uint32)(4U), + /* Control */ + 0x00000000U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PCNT: Capture Period 2 + * - Instruction = 30 + * - Next instruction = 31 + * - Conditional next instruction = na + * - Interrupt = na + * - Pin = 4 + 1 + */ + { + /* Program */ + 0x0003EE80U | (uint32)((uint32)0U << 6U) | (uint32)((4U) + 1U), + /* Control */ + 0x00000000U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PCNT: Capture Duty 3 + * - Instruction = 31 + * - Next instruction = 32 + * - Conditional next instruction = na + * - Interrupt = na + * - Pin = 6 + */ + { + /* Program */ + 0x00040E00U | (uint32)((uint32)0U << 6U) | (uint32)(6U), + /* Control */ + 0x00000000U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PCNT: Capture Period 3 + * - Instruction = 32 + * - Next instruction = 33 + * - Conditional next instruction = na + * - Interrupt = na + * - Pin = 6 + 1 + */ + { + /* Program */ + 0x00042E80U | (uint32)((uint32)0U << 6U) | (uint32)((6U) + 1U), + /* Control */ + 0x00000000U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PCNT: Capture Duty 4 + * - Instruction = 33 + * - Next instruction = 34 + * - Conditional next instruction = na + * - Interrupt = na + * - Pin = 24 + */ + { + /* Program */ + 0x00044E00U | (uint32)((uint32)0U << 6U) | (uint32)(24U), + /* Control */ + 0x00000000U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PCNT: Capture Period 4 + * - Instruction = 34 + * - Next instruction = 35 + * - Conditional next instruction = na + * - Interrupt = na + * - Pin = 24 + 1 + */ + { + /* Program */ + 0x00046E80U | (uint32)((uint32)0U << 6U) | (uint32)((24U) + 1U), + /* Control */ + 0x00000000U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PCNT: Capture Duty 5 + * - Instruction = 35 + * - Next instruction = 36 + * - Conditional next instruction = na + * - Interrupt = na + * - Pin = 26 + */ + { + /* Program */ + 0x00048E00U | (uint32)((uint32)0U << 6U) | (uint32)(26U), + /* Control */ + 0x00000000U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PCNT: Capture Period 5 + * - Instruction = 36 + * - Next instruction = 37 + * - Conditional next instruction = na + * - Interrupt = na + * - Pin = 26 + 1 + */ + { + /* Program */ + 0x0004AE80U | (uint32)((uint32)0U << 6U) | (uint32)((26U) + 1U), + /* Control */ + 0x00000000U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PCNT: Capture Duty 6 + * - Instruction = 37 + * - Next instruction = 38 + * - Conditional next instruction = na + * - Interrupt = na + * - Pin = 28 + */ + { + /* Program */ + 0x0004CE00U | (uint32)((uint32)0U << 6U) | (uint32)(28U), + /* Control */ + 0x00000000U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PCNT: Capture Period 6 + * - Instruction = 38 + * - Next instruction = 39 + * - Conditional next instruction = na + * - Interrupt = na + * - Pin = 28 + 1 + */ + { + /* Program */ + 0x0004EE80U | (uint32)((uint32)0U << 6U) | (uint32)((28U) + 1U), + /* Control */ + 0x00000000U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PCNT: Capture Duty 7 + * - Instruction = 39 + * - Next instruction = 40 + * - Conditional next instruction = na + * - Interrupt = na + * - Pin = 30 + */ + { + /* Program */ + 0x00050E00U | (uint32)((uint32)0U << 6U) | (uint32)(30U), + /* Control */ + 0x00000000U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* PCNT: Capture Period 7 + * - Instruction = 40 + * - Next instruction = 57 + * - Conditional next instruction = na + * - Interrupt = na + * - Pin = 30 + 1 + */ + { + /* Program */ + 0x00072E80U | (uint32)((uint32)0U << 6U) | (uint32)((30U) + 1U), + /* Control */ + 0x00000000U, + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, + /* MOV64: PWM 0 -> Duty Cycle Update + * - Instruction = 41 + * - Next instruction = 42 + * - Conditional next instruction = 2 + * - Interrupt = 1 + * - Pin = 8 + */ + { + /* Program */ + 0x00054201U, + /* Control */ + (0x00004007U | (uint32)((uint32)0U << 22U) | (uint32)((uint32)8U << 8U) | (uint32)((uint32)3U << 3U)), + /* Data */ + 51968U, + /* Reserved */ + 0x00000000U + }, + /* MOV64: PWM 0 -> Period Update + * - Instruction = 42 + * - Next instruction = 3 + * - Conditional next instruction = 41 + * - Interrupt = 2 + * - Pin = na + */ + { + /* Program */ + 0x00006202U, + /* Control */ + (0x00052007U), + /* Data */ + 103296U, + /* Reserved */ + 0x00000000U + }, + /* MOV64: PWM 1 -> Duty Cycle Update + * - Instruction = 43 + * - Next instruction = 44 + * - Conditional next instruction = 4 + * - Interrupt = 3 + * - Pin = 10 + */ + { + /* Program */ + 0x00058203U, + /* Control */ + (0x00008007U | (uint32)((uint32)0U << 22U) | (uint32)((uint32)10U << 8U) | (uint32)((uint32)3U << 3U)), + /* Data */ + 51968U, + /* Reserved */ + 0x00000000U + }, + /* MOV64: PWM 1 -> Period Update + * - Instruction = 44 + * - Next instruction = 5 + * - Conditional next instruction = 43 + * - Interrupt = 4 + * - Pin = na + */ + { + /* Program */ + 0x0000A204U, + /* Control */ + (0x00056007U), + /* Data */ + 103296U, + /* Reserved */ + 0x00000000U + }, + /* MOV64: PWM 2 -> Duty Cycle Update + * - Instruction = 45 + * - Next instruction = 46 + * - Conditional next instruction = 6 + * - Interrupt = 5 + * - Pin = 12 + */ + { + /* Program */ + 0x0005C205U, + /* Control */ + (0x0000C007U | (uint32)((uint32)0U << 22U) | (uint32)((uint32)12U << 8U) | (uint32)((uint32)3U << 3U)), + /* Data */ + 51968U, + /* Reserved */ + 0x00000000U + }, + /* MOV64: PWM 2 -> Period Update + * - Instruction = 46 + * - Next instruction = 7 + * - Conditional next instruction = 45 + * - Interrupt = 6 + * - Pin = na + */ + { + /* Program */ + 0x0000E206U, + /* Control */ + (0x0005A007U), + /* Data */ + 103296U, + /* Reserved */ + 0x00000000U + }, + /* MOV64: PWM 3 -> Duty Cycle Update + * - Instruction = 47 + * - Next instruction = 48 + * - Conditional next instruction = 8 + * - Interrupt = 7 + * - Pin = 14 + */ + { + /* Program */ + 0x00060207U, + /* Control */ + (0x00010007U | (uint32)((uint32)0U << 22U) | (uint32)((uint32)14U << 8U) | (uint32)((uint32)3U << 3U)), + /* Data */ + 51968U, + /* Reserved */ + 0x00000000U + }, + /* MOV64: PWM 3 -> Period Update + * - Instruction = 48 + * - Next instruction = 9 + * - Conditional next instruction = 47 + * - Interrupt = 8 + * - Pin = na + */ + { + /* Program */ + 0x00012208U, + /* Control */ + (0x0005E007U), + /* Data */ + 103296U, + /* Reserved */ + 0x00000000U + }, + /* MOV64: PWM 4 -> Duty Cycle Update + * - Instruction = 49 + * - Next instruction = 50 + * - Conditional next instruction = 10 + * - Interrupt = 9 + * - Pin = 16 + */ + { + /* Program */ + 0x00064209U, + /* Control */ + (0x00014007U | (uint32)((uint32)0U << 22U) | (uint32)((uint32)16U << 8U) | (uint32)((uint32)3U << 3U)), + /* Data */ + 51968U, + /* Reserved */ + 0x00000000U + }, + /* MOV64: PWM 4 -> Period Update + * - Instruction = 50 + * - Next instruction = 11 + * - Conditional next instruction = 49 + * - Interrupt = 10 + * - Pin = na + */ + { + /* Program */ + 0x0001620AU, + /* Control */ + (0x00062007U), + /* Data */ + 103296U, + /* Reserved */ + 0x00000000U + }, + /* MOV64: PWM 5 -> Duty Cycle Update + * - Instruction = 51 + * - Next instruction = 52 + * - Conditional next instruction = 12 + * - Interrupt = 11 + * - Pin = 17 + */ + { + /* Program */ + 0x0006820BU, + /* Control */ + (0x00018007U | (uint32)((uint32)0U << 22U) | (uint32)((uint32)17U << 8U) | (uint32)((uint32)3U << 3U)), + /* Data */ + 51968U, + /* Reserved */ + 0x00000000U + }, + /* MOV64: PWM 5 -> Period Update + * - Instruction = 52 + * - Next instruction = 13 + * - Conditional next instruction = 51 + * - Interrupt = 12 + * - Pin = na + */ + { + /* Program */ + 0x0001A20CU, + /* Control */ + (0x00066007U), + /* Data */ + 103296U, + /* Reserved */ + 0x00000000U + }, + /* MOV64: PWM 6 -> Duty Cycle Update + * - Instruction = 53 + * - Next instruction = 54 + * - Conditional next instruction = 14 + * - Interrupt = 13 + * - Pin = 18 + */ + { + /* Program */ + 0x0006C20DU, + /* Control */ + (0x0001C007U | (uint32)((uint32)0U << 22U) | (uint32)((uint32)18U << 8U) | (uint32)((uint32)3U << 3U)), + /* Data */ + 51968U, + /* Reserved */ + 0x00000000U + }, + /* MOV64: PWM 6 -> Period Update + * - Instruction = 54 + * - Next instruction = 15 + * - Conditional next instruction = 53 + * - Interrupt = 14 + * - Pin = na + */ + { + /* Program */ + 0x0001E20EU, + /* Control */ + (0x0006A007U), + /* Data */ + 103296U, + /* Reserved */ + 0x00000000U + }, + /* MOV64: PWM 7 -> Duty Cycle Update + * - Instruction = 55 + * - Next instruction = 56 + * - Conditional next instruction = 16 + * - Interrupt = 15 + * - Pin = 19 + */ + { + /* Program */ + 0x0007020FU, + /* Control */ + (0x00020007U | (uint32)((uint32)0U << 22U) | (uint32)((uint32)19U << 8U) | (uint32)((uint32)3U << 3U)), + /* Data */ + 51968U, + /* Reserved */ + 0x00000000U + }, + /* MOV64: PWM 7 -> Period Update + * - Instruction = 56 + * - Next instruction = 17 + * - Conditional next instruction = 55 + * - Interrupt = 16 + * - Pin = na + */ + { + /* Program */ + 0x00022210U, + /* Control */ + (0x0006E007U), + /* Data */ + 103296U, + /* Reserved */ + 0x00000000U + }, + /* WCAP: Capture timestamp + * - Instruction = 57 + * - Next instruction = 0 + * - Conditional next instruction = 0 + * - Interrupt = na + * - Pin = na + * - Reg = T + */ + { + /* Program */ + 0x00001600U, + /* Control */ + (0x00000004U), + /* Data */ + 0x00000000U, + /* Reserved */ + 0x00000000U + }, +}; + + + +/** @fn void hetInit(void) +* @brief Initializes the het Driver +* +* This function initializes the het 1 module. +*/ +/* SourceId : HET_SourceId_001 */ +/* DesignId : HET_DesignId_001 */ +/* Requirements : HL_SR363 */ +void hetInit(void) +{ + /** @b initialize @b HET */ + + /** - Set HET pins default output value */ + hetREG1->DOUT = (uint32)((uint32)0U << 31U) + | (uint32)((uint32)0U << 30U) + | (uint32)((uint32)0U << 29U) + | (uint32)((uint32)0U << 28U) + | (uint32)((uint32)0U << 27U) + | (uint32)((uint32)0U << 26U) + | (uint32)((uint32)0U << 25U) + | (uint32)((uint32)0U << 24U) + | (uint32)((uint32)0U << 23U) + | (uint32)((uint32)0U << 22U) + | (uint32)((uint32)0U << 21U) + | (uint32)((uint32)0U << 20U) + | (uint32)((uint32)0U << 19U) + | (uint32)((uint32)0U << 18U) + | (uint32)((uint32)0U << 17U) + | (uint32)((uint32)0U << 16U) + | (uint32)((uint32)0U << 15U) + | (uint32)((uint32)0U << 14U) + | (uint32)((uint32)0U << 13U) + | (uint32)((uint32)0U << 12U) + | (uint32)((uint32)0U << 11U) + | (uint32)((uint32)0U << 10U) + | (uint32)((uint32)0U << 9U) + | (uint32)((uint32)0U << 8U) + | (uint32)((uint32)0U << 7U) + | (uint32)((uint32)0U << 6U) + | (uint32)((uint32)0U << 5U) + | (uint32)((uint32)0U << 4U) + | (uint32)((uint32)0U << 3U) + | (uint32)((uint32)0U << 2U) + | (uint32)((uint32)0U << 1U) + | (uint32)((uint32)0U << 0U); + + /** - Set HET pins direction */ + hetREG1->DIR = (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00400000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U; + + /** - Set HET pins open drain enable */ + hetREG1->PDR = (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U; + + /** - Set HET pins pullup/down enable */ + hetREG1->PULDIS = (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U; + + /** - Set HET pins pullup/down select */ + hetREG1->PSL = (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00400000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U; + + /** - Set HET pins high resolution share */ + hetREG1->HRSH = (uint32) 0x00008000U + | (uint32) 0x00004000U + | (uint32) 0x00002000U + | (uint32) 0x00001000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000008U + | (uint32) 0x00000004U + | (uint32) 0x00000002U + | (uint32) 0x00000001U; + + /** - Set HET pins AND share */ + hetREG1->AND = (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U; + + /** - Set HET pins XOR share */ + hetREG1->XOR = (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U; + +/* USER CODE BEGIN (1) */ +/* USER CODE END */ + + /** - Setup prescaler values + * - Loop resolution prescaler + * - High resolution prescaler + */ + hetREG1->PFR = (uint32)((uint32) 7U << 8U) + | ((uint32) 0U); + + + /** - Parity control register + * - Enable/Disable Parity check + */ + hetREG1->PCR = (uint32) 0x00000005U; + + /** - Fill HET RAM with opcodes and Data */ + /*SAFETYMCUSW 94 S MR:11.1,11.2,11.4 "HET RAM Fill from the table - Allowed as per MISRA rule 11.2" */ + /*SAFETYMCUSW 94 S MR:11.1,11.2,11.4 "HET RAM Fill from the table - Allowed as per MISRA rule 11.2" */ + /*SAFETYMCUSW 95 S MR:11.1,11.4 "HET RAM Fill from the table - Allowed as per MISRA rule 11.2" */ + /*SAFETYMCUSW 95 S MR:11.1,11.4 "HET RAM Fill from the table - Allowed as per MISRA rule 11.2" */ + (void)memcpy((void *)hetRAM1, (const void *)het1PROGRAM, sizeof(het1PROGRAM)); + + /** - Setup interrupt priority level + * - PWM 0 end of duty level + * - PWM 0 end of period level + * - PWM 1 end of duty level + * - PWM 1 end of period level + * - PWM 2 end of duty level + * - PWM 2 end of period level + * - PWM 3 end of duty level + * - PWM 3 end of period level + * - PWM 4 end of duty level + * - PWM 4 end of period level + * - PWM 5 end of duty level + * - PWM 5 end of period level + * - PWM 6 end of duty level + * - PWM 6 end of period level + * - PWM 7 end of duty level + * - PWM 7 end of period level + + * - CCU Edge Detection 0 level + * - CCU Edge Detection 1 level + * - CCU Edge Detection 2 level + * - CCU Edge Detection 3 level + * - CCU Edge Detection 4 level + * - CCU Edge Detection 5 level + * - CCU Edge Detection 6 level + * - CCU Edge Detection 7 level + */ + hetREG1->PRY = (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00020000U + | (uint32) 0x00040000U + | (uint32) 0x00080000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U; + + /** - Enable interrupts + * - PWM 0 end of duty + * - PWM 0 end of period + * - PWM 1 end of duty + * - PWM 1 end of period + * - PWM 2 end of duty + * - PWM 2 end of period + * - PWM 3 end of duty + * - PWM 3 end of period + * - PWM 4 end of duty + * - PWM 4 end of period + * - PWM 5 end of duty + * - PWM 5 end of period + * - PWM 6 end of duty + * - PWM 6 end of period + * - PWM 7 end of duty + * - PWM 7 end of period + * - CCU Edge Detection 0 + * - CCU Edge Detection 1 + * - CCU Edge Detection 2 + * - CCU Edge Detection 3 + * - CCU Edge Detection 4 + * - CCU Edge Detection 5 + * - CCU Edge Detection 6 + * - CCU Edge Detection 7 + */ + hetREG1->INTENAC = 0xFFFFFFFFU; + hetREG1->INTENAS = (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00020000U + | (uint32) 0x00040000U + | (uint32) 0x00080000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U + | (uint32) 0x00000000U; + + + /** - Setup control register + * - Enable output buffers + * - Ignore software breakpoints + * - Master or Slave Clock Mode + * - Enable HET + */ + hetREG1->GCR = ( 0x00000001U + | (uint32)((uint32)0U << 24U) + | (uint32)((uint32)1U << 16U) + | (0x00020000U)); + + +} +/** @fn void pwmStart( hetRAMBASE_t * hetRAM, uint32 pwm) +* @brief Start pwm signal +* @param[in] hetRAM Pointer to HET RAM: +* - hetRAM1: HET1 RAM pointer +* - hetRAM2: HET2 RAM pointer +* @param[in] pwm Pwm signal: +* - pwm0: Pwm 0 +* - pwm1: Pwm 1 +* - pwm2: Pwm 2 +* - pwm3: Pwm 3 +* - pwm4: Pwm 4 +* - pwm5: Pwm 5 +* - pwm6: Pwm 6 +* - pwm7: Pwm 7 +* +* Start the given pwm signal +*/ +/* SourceId : HET_SourceId_002 */ +/* DesignId : HET_DesignId_002 */ +/* Requirements : HL_SR364 */ +void pwmStart( hetRAMBASE_t * hetRAM, uint32 pwm) +{ + + hetRAM->Instruction[(pwm << 1U) + 41U].Control |= 0x00400000U; +} + + +/** @fn void pwmStop( hetRAMBASE_t * hetRAM, uint32 pwm) +* @brief Stop pwm signal +* @param[in] hetRAM Pointer to HET RAM: +* - hetRAM1: HET1 RAM pointer +* - hetRAM2: HET2 RAM pointer +* @param[in] pwm Pwm signal: +* - pwm0: Pwm 0 +* - pwm1: Pwm 1 +* - pwm2: Pwm 2 +* - pwm3: Pwm 3 +* - pwm4: Pwm 4 +* - pwm5: Pwm 5 +* - pwm6: Pwm 6 +* - pwm7: Pwm 7 +* +* Stop the given pwm signal +*/ +/* SourceId : HET_SourceId_003 */ +/* DesignId : HET_DesignId_003 */ +/* Requirements : HL_SR365 */ +void pwmStop( hetRAMBASE_t * hetRAM, uint32 pwm) +{ + hetRAM->Instruction[(pwm << 1U) + 41U].Control &= ~(uint32)0x00400000U; +} + + +/** @fn void pwmSetDuty(hetRAMBASE_t * hetRAM, uint32 pwm, uint32 pwmDuty) +* @brief Set duty cycle +* @param[in] hetRAM Pointer to HET RAM: +* - hetRAM1: HET1 RAM pointer +* - hetRAM2: HET2 RAM pointer +* @param[in] pwm Pwm signal: +* - pwm0: Pwm 0 +* - pwm1: Pwm 1 +* - pwm2: Pwm 2 +* - pwm3: Pwm 3 +* - pwm4: Pwm 4 +* - pwm5: Pwm 5 +* - pwm6: Pwm 6 +* - pwm7: Pwm 7 +* @param[in] pwmDuty duty cycle in %. +* +* Sets a new duty cycle on the given pwm signal +*/ +/* SourceId : HET_SourceId_004 */ +/* DesignId : HET_DesignId_004 */ +/* Requirements : HL_SR366 */ +void pwmSetDuty(hetRAMBASE_t * hetRAM, uint32 pwm, uint32 pwmDuty) +{ + uint32 action; + uint32 pwmPolarity =0U; + uint32 pwmPeriod = hetRAM->Instruction[(pwm << 1U) + 42U].Data + 128U; + pwmPeriod = pwmPeriod >> 7U; + + if(hetRAM == hetRAM1) + { + pwmPolarity = s_het1pwmPolarity[pwm]; + } + else + { + } + if (pwmDuty == 0U) + { + action = (pwmPolarity == 3U) ? 0U : 2U; + } + else if (pwmDuty >= 100U) + { + action = (pwmPolarity == 3U) ? 2U : 0U; + } + else + { + action = pwmPolarity; + } + + hetRAM->Instruction[(pwm << 1U) + 41U].Control = ((hetRAM->Instruction[(pwm << 1U) + 41U].Control) & (~(uint32)(0x00000018U))) | (action << 3U); + hetRAM->Instruction[(pwm << 1U) + 41U].Data = (((pwmPeriod * pwmDuty) / 100U) << 7U) + 128U; +} + + +/** @fn void pwmSetSignal(hetRAMBASE_t * hetRAM, uint32 pwm, hetSIGNAL_t signal) +* @brief Set period +* @param[in] hetRAM Pointer to HET RAM: +* - hetRAM1: HET1 RAM pointer +* - hetRAM2: HET2 RAM pointer +* @param[in] pwm Pwm signal: +* - pwm0: Pwm 0 +* - pwm1: Pwm 1 +* - pwm2: Pwm 2 +* - pwm3: Pwm 3 +* - pwm4: Pwm 4 +* - pwm5: Pwm 5 +* - pwm6: Pwm 6 +* - pwm7: Pwm 7 +* @param[in] signal signal + - duty cycle in %. +* - period period in us. +* +* Sets a new pwm signal +*/ +/* SourceId : HET_SourceId_005 */ +/* DesignId : HET_DesignId_005 */ +/* Requirements : HL_SR367 */ +void pwmSetSignal(hetRAMBASE_t * hetRAM, uint32 pwm, hetSIGNAL_t signal) +{ + uint32 action; + uint32 pwmPolarity = 0U; + float64 pwmPeriod = 0.0F; + + if(hetRAM == hetRAM1) + { + pwmPeriod = (signal.period * 1000.0F) / 1238.690F; + pwmPolarity = s_het1pwmPolarity[pwm]; + } + else + { + } + if (signal.duty == 0U) + { + action = (pwmPolarity == 3U) ? 0U : 2U; + } + else if (signal.duty >= 100U) + { + action = (pwmPolarity == 3U) ? 2U : 0U; + } + else + { + action = pwmPolarity; + } + + hetRAM->Instruction[(pwm << 1U) + 41U].Control = ((hetRAM->Instruction[(pwm << 1U) + 41U].Control) & (~(uint32)(0x00000018U))) | (action << 3U); + hetRAM->Instruction[(pwm << 1U) + 41U].Data = ((((uint32)pwmPeriod * signal.duty) / 100U) << 7U ) + 128U; + hetRAM->Instruction[(pwm << 1U) + 42U].Data = ((uint32)pwmPeriod << 7U) - 128U; + +} + + +/** @fn void pwmGetSignal(hetRAMBASE_t * hetRAM, uint32 pwm, hetSIGNAL_t signal) +* @brief Get duty cycle +* @param[in] hetRAM Pointer to HET RAM: +* - hetRAM1: HET1 RAM pointer +* - hetRAM2: HET2 RAM pointer +* @param[in] pwm Pwm signal: +* - pwm0: Pwm 0 +* - pwm1: Pwm 1 +* - pwm2: Pwm 2 +* - pwm3: Pwm 3 +* - pwm4: Pwm 4 +* - pwm5: Pwm 5 +* - pwm6: Pwm 6 +* - pwm7: Pwm 7 +* @param[in] signal signal +* - duty cycle in %. +* - period period in us. +* +* Gets current signal of the given pwm signal. +*/ +/* SourceId : HET_SourceId_006 */ +/* DesignId : HET_DesignId_006 */ +/* Requirements : HL_SR368 */ +void pwmGetSignal(hetRAMBASE_t * hetRAM, uint32 pwm, hetSIGNAL_t* signal) +{ + uint32 pwmDuty = (hetRAM->Instruction[(pwm << 1U) + 41U].Data - 128U) >> 7U; + uint32 pwmPeriod = (hetRAM->Instruction[(pwm << 1U) + 42U].Data + 128U) >> 7U; + + signal->duty = (pwmDuty * 100U) / pwmPeriod; + + if(hetRAM == hetRAM1) + { + signal->period = ((float64)pwmPeriod * 1238.690F) / 1000.0F; + } + else + { + signal->period = ((float64)pwmPeriod * 1238.690F) / 1000.0F; + } +} + +/** @fn void pwmEnableNotification(hetBASE_t * hetREG, uint32 pwm, uint32 notification) +* @brief Enable pwm notification +* @param[in] hetREG Pointer to HET Module: +* - hetREG1: HET1 Module pointer +* - hetREG2: HET2 Module pointer +* @param[in] pwm Pwm signal: +* - pwm0: Pwm 0 +* - pwm1: Pwm 1 +* - pwm2: Pwm 2 +* - pwm3: Pwm 3 +* - pwm4: Pwm 4 +* - pwm5: Pwm 5 +* - pwm6: Pwm 6 +* - pwm7: Pwm 7 +* @param[in] notification Pwm notification: +* - pwmEND_OF_DUTY: Notification on end of duty +* - pwmEND_OF_PERIOD: Notification on end of end period +* - pwmEND_OF_BOTH: Notification on end of both duty and period +*/ +/* SourceId : HET_SourceId_007 */ +/* DesignId : HET_DesignId_007 */ +/* Requirements : HL_SR369 */ +void pwmEnableNotification(hetBASE_t * hetREG, uint32 pwm, uint32 notification) +{ + hetREG->FLG = notification << (pwm << 1U); + hetREG->INTENAS = notification << (pwm << 1U); +} + + +/** @fn void pwmDisableNotification(hetBASE_t * hetREG, uint32 pwm, uint32 notification) +* @brief Enable pwm notification +* @param[in] hetREG Pointer to HET Module: +* - hetREG1: HET1 Module pointer +* - hetREG2: HET2 Module pointer +* @param[in] pwm Pwm signal: +* - pwm0: Pwm 0 +* - pwm1: Pwm 1 +* - pwm2: Pwm 2 +* - pwm3: Pwm 3 +* - pwm4: Pwm 4 +* - pwm5: Pwm 5 +* - pwm6: Pwm 6 +* - pwm7: Pwm 7 +* @param[in] notification Pwm notification: +* - pwmEND_OF_DUTY: Notification on end of duty +* - pwmEND_OF_PERIOD: Notification on end of end period +* - pwmEND_OF_BOTH: Notification on end of both duty and period +*/ +/* SourceId : HET_SourceId_008 */ +/* DesignId : HET_DesignId_008 */ +/* Requirements : HL_SR370 */ +void pwmDisableNotification(hetBASE_t * hetREG, uint32 pwm, uint32 notification) +{ + hetREG->INTENAC = notification << (pwm << 1U); +} + + +/** @fn void edgeResetCounter(hetRAMBASE_t * hetRAM, uint32 edge) +* @brief Resets edge counter to 0 +* @param[in] hetRAM Pointer to HET RAM: +* - hetRAM1: HET1 RAM pointer +* - hetRAM2: HET2 RAM pointer +* @param[in] edge Edge signal: +* - edge0: Edge 0 +* - edge1: Edge 1 +* - edge2: Edge 2 +* - edge3: Edge 3 +* - edge4: Edge 4 +* - edge5: Edge 5 +* - edge6: Edge 6 +* - edge7: Edge 7 +* +* Reset edge counter to 0. +*/ +/* SourceId : HET_SourceId_009 */ +/* DesignId : HET_DesignId_009 */ +/* Requirements : HL_SR372 */ +void edgeResetCounter(hetRAMBASE_t * hetRAM, uint32 edge) +{ + hetRAM->Instruction[edge + 17U].Data = 0U; +} + + +/** @fn uint32 edgeGetCounter(hetRAMBASE_t * hetRAM, uint32 edge) +* @brief Get current edge counter value +* @param[in] hetRAM Pointer to HET RAM: +* - hetRAM1: HET1 RAM pointer +* - hetRAM2: HET2 RAM pointer +* @param[in] edge Edge signal: +* - edge0: Edge 0 +* - edge1: Edge 1 +* - edge2: Edge 2 +* - edge3: Edge 3 +* - edge4: Edge 4 +* - edge5: Edge 5 +* - edge6: Edge 6 +* - edge7: Edge 7 +* +* Gets current edge counter value. +*/ +/* SourceId : HET_SourceId_010 */ +/* DesignId : HET_DesignId_010 */ +/* Requirements : HL_SR373 */ +uint32 edgeGetCounter(hetRAMBASE_t * hetRAM, uint32 edge) +{ + return hetRAM->Instruction[edge + 17U].Data >> 7U; +} + + +/** @fn void edgeEnableNotification(hetBASE_t * hetREG, uint32 edge) +* @brief Enable edge notification +* @param[in] hetREG Pointer to HET Module: +* - hetREG1: HET1 Module pointer +* - hetREG2: HET2 Module pointer +* @param[in] edge Edge signal: +* - edge0: Edge 0 +* - edge1: Edge 1 +* - edge2: Edge 2 +* - edge3: Edge 3 +* - edge4: Edge 4 +* - edge5: Edge 5 +* - edge6: Edge 6 +* - edge7: Edge 7 +*/ +/* SourceId : HET_SourceId_011 */ +/* DesignId : HET_DesignId_011 */ +/* Requirements : HL_SR374 */ +void edgeEnableNotification(hetBASE_t * hetREG, uint32 edge) +{ + hetREG->FLG = (uint32)0x20000U << edge; + hetREG->INTENAS = (uint32)0x20000U << edge; +} + + +/** @fn void edgeDisableNotification(hetBASE_t * hetREG, uint32 edge) +* @brief Enable edge notification +* @param[in] hetREG Pointer to HET Module: +* - hetREG1: HET1 Module pointer +* - hetREG2: HET2 Module pointer +* @param[in] edge Edge signal: +* - edge0: Edge 0 +* - edge1: Edge 1 +* - edge2: Edge 2 +* - edge3: Edge 3 +* - edge4: Edge 4 +* - edge5: Edge 5 +* - edge6: Edge 6 +* - edge7: Edge 7 +*/ +/* SourceId : HET_SourceId_012 */ +/* DesignId : HET_DesignId_012 */ +/* Requirements : HL_SR375 */ +void edgeDisableNotification(hetBASE_t * hetREG, uint32 edge) +{ + hetREG->INTENAC = (uint32)0x20000U << edge; +} + + +/** @fn void capGetSignal(hetRAMBASE_t * hetRAM, uint32 cap, hetSIGNAL_t signal) +* @brief Get capture signal +* @param[in] hetRAM Pointer to HET RAM: +* - hetRAM1: HET1 RAM pointer +* - hetRAM2: HET2 RAM pointer +* @param[in] cap captured signal: +* - cap0: Captured signal 0 +* - cap1: Captured signal 1 +* - cap2: Captured signal 2 +* - cap3: Captured signal 3 +* - cap4: Captured signal 4 +* - cap5: Captured signal 5 +* - cap6: Captured signal 6 +* - cap7: Captured signal 7 +* @param[in] signal signal +* - duty cycle in %. +* - period period in us. +* +* Gets current signal of the given capture signal. +*/ +/* SourceId : HET_SourceId_013 */ +/* DesignId : HET_DesignId_013 */ +/* Requirements : HL_SR377 */ +void capGetSignal(hetRAMBASE_t * hetRAM, uint32 cap, hetSIGNAL_t *signal) +{ + uint32 pwmDuty = (hetRAM->Instruction[(cap << 1U) + 25U].Data) >> 7U; + uint32 pwmPeriod = (hetRAM->Instruction[(cap << 1U) + 26U].Data) >> 7U; + + signal->duty = (pwmDuty * 100U) / pwmPeriod; + + if( hetRAM == hetRAM1) + { + signal->period = ((float64)pwmPeriod * 1238.690F) / 1000.0F; + } + else + { + signal->period = ((float64)pwmPeriod * 1238.690F) / 1000.0F; + } +} + + +/** @fn void hetResetTimestamp(hetRAMBASE_t *hetRAM) +* @brief Resets timestamp +* @param[in] hetRAM Pointer to HET RAM: +* - hetRAM1: HET1 RAM pointer +* - hetRAM2: HET2 RAM pointer +* +* Resets loop count based timestamp. +*/ +/* SourceId : HET_SourceId_014 */ +/* DesignId : HET_DesignId_014 */ +/* Requirements : HL_SR378 */ +void hetResetTimestamp(hetRAMBASE_t * hetRAM) +{ + hetRAM->Instruction[0U].Data = 0U; +} + + +/** @fn uint32 hetGetTimestamp(hetRAMBASE_t *hetRAM) +* @brief Returns timestamp +* +* Returns loop count based timestamp. +*/ +/* SourceId : HET_SourceId_015 */ +/* DesignId : HET_DesignId_015 */ +/* Requirements : HL_SR379 */ +uint32 hetGetTimestamp(hetRAMBASE_t * hetRAM) +{ + return hetRAM->Instruction[57U].Data; +} + +/* USER CODE BEGIN (4) */ +/* USER CODE END */ + + +/** @fn void het1GetConfigValue(het_config_reg_t *config_reg, config_value_type_t type) +* @brief Get the initial or current values of the HET1 configuration registers +* +* @param[in] *config_reg: pointer to the struct to which the initial or current +* value of the configuration registers need to be stored +* @param[in] type: whether initial or current value of the configuration registers need to be stored +* - InitialValue: initial value of the configuration registers will be stored +* in the struct pointed by config_reg +* - CurrentValue: initial value of the configuration registers will be stored +* in the struct pointed by config_reg +* +* This function will copy the initial or current value (depending on the parameter 'type') +* of the configuration registers to the struct pointed by config_reg +* +*/ +/* SourceId : HET_SourceId_016 */ +/* DesignId : HET_DesignId_016 */ +/* Requirements : HL_SR379 */ +void het1GetConfigValue(het_config_reg_t *config_reg, config_value_type_t type) +{ + if (type == InitialValue) + { + config_reg->CONFIG_GCR = HET1_GCR_CONFIGVALUE; + config_reg->CONFIG_PFR = HET1_PFR_CONFIGVALUE; + config_reg->CONFIG_INTENAS = HET1_INTENAS_CONFIGVALUE; + config_reg->CONFIG_INTENAC = HET1_INTENAC_CONFIGVALUE; + config_reg->CONFIG_PRY = HET1_PRY_CONFIGVALUE; + config_reg->CONFIG_AND = HET1_AND_CONFIGVALUE; + config_reg->CONFIG_HRSH = HET1_HRSH_CONFIGVALUE; + config_reg->CONFIG_XOR = HET1_XOR_CONFIGVALUE; + config_reg->CONFIG_DIR = HET1_DIR_CONFIGVALUE; + config_reg->CONFIG_PDR = HET1_PDR_CONFIGVALUE; + config_reg->CONFIG_PULDIS = HET1_PULDIS_CONFIGVALUE; + config_reg->CONFIG_PSL = HET1_PSL_CONFIGVALUE; + config_reg->CONFIG_PCR = HET1_PCR_CONFIGVALUE; + } + else + { + /*SAFETYMCUSW 134 S MR:12.2 "LDRA Tool issue" */ + config_reg->CONFIG_GCR = hetREG1->GCR; + config_reg->CONFIG_PFR = hetREG1->PFR; + config_reg->CONFIG_INTENAS = hetREG1->INTENAS; + config_reg->CONFIG_INTENAC = hetREG1->INTENAC; + config_reg->CONFIG_PRY = hetREG1->PRY; + config_reg->CONFIG_AND = hetREG1->AND; + config_reg->CONFIG_HRSH = hetREG1->HRSH; + config_reg->CONFIG_XOR = hetREG1->XOR; + config_reg->CONFIG_DIR = hetREG1->DIR; + config_reg->CONFIG_PDR = hetREG1->PDR; + config_reg->CONFIG_PULDIS = hetREG1->PULDIS; + config_reg->CONFIG_PSL = hetREG1->PSL; + config_reg->CONFIG_PCR = hetREG1->PCR; + } +} + +/* USER CODE BEGIN (5) */ +/* USER CODE END */ + +/** @fn void het1HighLevelInterrupt(void) +* @brief Level 0 Interrupt for HET1 +*/ +#pragma CODE_STATE(het1HighLevelInterrupt, 32) +#pragma INTERRUPT(het1HighLevelInterrupt, FIQ) + +/* SourceId : HET_SourceId_018 */ +/* DesignId : HET_DesignId_017 */ +/* Requirements : HL_SR371, HL_SR380, HL_SR381 */ +void het1HighLevelInterrupt(void) +{ + uint32 vec = hetREG1->OFF1; + + if (vec < 18U) + { + if ((vec & 1U) != 0U) + { + pwmNotification(hetREG1,(vec >> 1U) - 1U, pwmEND_OF_PERIOD); + } + else + { + pwmNotification(hetREG1,(vec >> 1U) - 1U, pwmEND_OF_DUTY); + } + } + else + { + edgeNotification(hetREG1,vec - 18U); + } +} + + Index: firmware/source/notification.c =================================================================== diff -u -ra74a984a7059f75d86ad87d6d9499bd8f94cc976 -r0a0b6c446cd0f428af75b28e6ca8206bbcf148ac --- firmware/source/notification.c (.../notification.c) (revision a74a984a7059f75d86ad87d6d9499bd8f94cc976) +++ firmware/source/notification.c (.../notification.c) (revision 0a0b6c446cd0f428af75b28e6ca8206bbcf148ac) @@ -55,6 +55,7 @@ #include "gio.h" #include "mibspi.h" #include "sci.h" +#include "het.h" #include "rti.h" #include "etpwm.h" #include "sys_dma.h" @@ -188,8 +189,38 @@ /* USER CODE BEGIN (30) */ /* USER CODE END */ +#pragma WEAK(pwmNotification) +void pwmNotification(hetBASE_t * hetREG,uint32 pwm, uint32 notification) +{ +/* enter user code between the USER CODE BEGIN and USER CODE END. */ +/* USER CODE BEGIN (35) */ +/* USER CODE END */ +} +/* USER CODE BEGIN (36) */ +/* USER CODE END */ +#pragma WEAK(edgeNotification) +void edgeNotification(hetBASE_t * hetREG,uint32 edge) +{ +/* enter user code between the USER CODE BEGIN and USER CODE END. */ +/* USER CODE BEGIN (37) */ +/* USER CODE END */ +} +/* USER CODE BEGIN (38) */ +/* USER CODE END */ +#pragma WEAK(hetNotification) +void hetNotification(hetBASE_t *het, uint32 offset) +{ +/* enter user code between the USER CODE BEGIN and USER CODE END. */ +/* USER CODE BEGIN (39) */ +/* USER CODE END */ +} + +/* USER CODE BEGIN (40) */ +/* USER CODE END */ + + /* USER CODE BEGIN (43) */ /* USER CODE END */ Index: firmware/source/sys_vim.c =================================================================== diff -u -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1 -r0a0b6c446cd0f428af75b28e6ca8206bbcf148ac --- firmware/source/sys_vim.c (.../sys_vim.c) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1) +++ firmware/source/sys_vim.c (.../sys_vim.c) (revision 0a0b6c446cd0f428af75b28e6ca8206bbcf148ac) @@ -79,7 +79,7 @@ &phantomInterrupt, /* Channel 7 */ &phantomInterrupt, /* Channel 8 */ &phantomInterrupt, /* Channel 9 */ - &phantomInterrupt, /* Channel 10 */ + &het1HighLevelInterrupt, /* Channel 10 */ &phantomInterrupt, /* Channel 11 */ &phantomInterrupt, /* Channel 12 */ &linHighLevelInterrupt, /* Channel 13 */ @@ -237,7 +237,7 @@ | (uint32)((uint32)SYS_IRQ << 7U) | (uint32)((uint32)SYS_IRQ << 8U) | (uint32)((uint32)SYS_IRQ << 9U) - | (uint32)((uint32)SYS_IRQ << 10U) + | (uint32)((uint32)SYS_FIQ << 10U) | (uint32)((uint32)SYS_IRQ << 11U) | (uint32)((uint32)SYS_IRQ << 12U) | (uint32)((uint32)SYS_FIQ << 13U) @@ -372,7 +372,7 @@ | (uint32)((uint32)0U << 7U) | (uint32)((uint32)0U << 8U) | (uint32)((uint32)0U << 9U) - | (uint32)((uint32)0U << 10U) + | (uint32)((uint32)1U << 10U) | (uint32)((uint32)0U << 11U) | (uint32)((uint32)0U << 12U) | (uint32)((uint32)1U << 13U)