diff --git a/examples/position_sense/endat_diagnostic/multi_channel_load_share/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs b/examples/position_sense/endat_diagnostic/multi_channel_load_share/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs index c2be5da..d46875e 100644 --- a/examples/position_sense/endat_diagnostic/multi_channel_load_share/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs +++ b/examples/position_sense/endat_diagnostic/multi_channel_load_share/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs @@ -4,5 +4,5 @@ * View (ROV) tool. */ var crovFiles = [ - "mcu_plus_sdk/kernel/freertos/rov/FreeRTOS.rov.js", + "mcu_plus_sdk/source/kernel/freertos/rov/FreeRTOS.rov.js", ]; diff --git a/examples/position_sense/endat_diagnostic/multi_channel_single_pru/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs b/examples/position_sense/endat_diagnostic/multi_channel_single_pru/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs index c2be5da..d46875e 100644 --- a/examples/position_sense/endat_diagnostic/multi_channel_single_pru/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs +++ b/examples/position_sense/endat_diagnostic/multi_channel_single_pru/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs @@ -4,5 +4,5 @@ * View (ROV) tool. */ var crovFiles = [ - "mcu_plus_sdk/kernel/freertos/rov/FreeRTOS.rov.js", + "mcu_plus_sdk/source/kernel/freertos/rov/FreeRTOS.rov.js", ]; diff --git a/examples/position_sense/endat_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs b/examples/position_sense/endat_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs index c2be5da..d46875e 100644 --- a/examples/position_sense/endat_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs +++ b/examples/position_sense/endat_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs @@ -4,5 +4,5 @@ * View (ROV) tool. */ var crovFiles = [ - "mcu_plus_sdk/kernel/freertos/rov/FreeRTOS.rov.js", + "mcu_plus_sdk/source/kernel/freertos/rov/FreeRTOS.rov.js", ]; diff --git a/examples/position_sense/hdsl_diagnostic/multi_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs b/examples/position_sense/hdsl_diagnostic/multi_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs index c2be5da..d46875e 100644 --- a/examples/position_sense/hdsl_diagnostic/multi_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs +++ b/examples/position_sense/hdsl_diagnostic/multi_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs @@ -4,5 +4,5 @@ * View (ROV) tool. */ var crovFiles = [ - "mcu_plus_sdk/kernel/freertos/rov/FreeRTOS.rov.js", + "mcu_plus_sdk/source/kernel/freertos/rov/FreeRTOS.rov.js", ]; diff --git a/examples/position_sense/hdsl_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs b/examples/position_sense/hdsl_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs index c2be5da..d46875e 100644 --- a/examples/position_sense/hdsl_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs +++ b/examples/position_sense/hdsl_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs @@ -4,5 +4,5 @@ * View (ROV) tool. */ var crovFiles = [ - "mcu_plus_sdk/kernel/freertos/rov/FreeRTOS.rov.js", + "mcu_plus_sdk/source/kernel/freertos/rov/FreeRTOS.rov.js", ]; diff --git a/examples/position_sense/tamagawa_diagnostic/multi_channel/.project/project_am243x.js b/examples/position_sense/tamagawa_diagnostic/multi_channel/.project/project_am243x.js index 23254d6..948385a 100644 --- a/examples/position_sense/tamagawa_diagnostic/multi_channel/.project/project_am243x.js +++ b/examples/position_sense/tamagawa_diagnostic/multi_channel/.project/project_am243x.js @@ -5,6 +5,7 @@ let device = "am243x"; const files = { common: [ "tamagawa_diagnostic.c", + "tamagawa_periodic_trigger.c", "main.c", ], }; @@ -34,6 +35,7 @@ const includes_freertos_r5f = { "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f", + "${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic", ], }; diff --git a/examples/position_sense/tamagawa_diagnostic/multi_channel/.project/project_am64x.js b/examples/position_sense/tamagawa_diagnostic/multi_channel/.project/project_am64x.js index 11f0846..4472243 100644 --- a/examples/position_sense/tamagawa_diagnostic/multi_channel/.project/project_am64x.js +++ b/examples/position_sense/tamagawa_diagnostic/multi_channel/.project/project_am64x.js @@ -5,6 +5,7 @@ let device = "am64x"; const files = { common: [ "tamagawa_diagnostic.c", + "tamagawa_periodic_trigger.c", "main.c", ], }; @@ -34,6 +35,7 @@ const includes_freertos_r5f = { "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am64x/r5f", + "${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic", ], }; diff --git a/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-evm/r5fss0-0_freertos/example.syscfg b/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-evm/r5fss0-0_freertos/example.syscfg index b7bf8d1..4136360 100644 --- a/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-evm/r5fss0-0_freertos/example.syscfg +++ b/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-evm/r5fss0-0_freertos/example.syscfg @@ -64,6 +64,9 @@ tamagawa1.PRU_ICSSG0_PRU.$assign = "PRU_ICSSG0_PRU1"; const pruicss = scripting.addModule("/drivers/pruicss/pruicss", {}, false); const pruicss1 = pruicss.addInstance({}, false); pruicss1.$name = "CONFIG_PRU_ICSS0"; +pruicss1.intcMapping.create(1); +pruicss1.intcMapping[0].$name = "CONFIG_ICSS0_INTC_MAPPING0"; +pruicss1.intcMapping[0].event = "18"; tamagawa1.pru = pruicss1; pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0"; diff --git a/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec b/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec index 65aea87..2f38ef4 100644 --- a/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec +++ b/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec @@ -35,6 +35,7 @@ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f + -I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 @@ -97,6 +98,8 @@ + + diff --git a/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-evm/r5fss0-0_freertos/ti-arm-clang/makefile b/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-evm/r5fss0-0_freertos/ti-arm-clang/makefile index 8b7a734..4533cc7 100644 --- a/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-evm/r5fss0-0_freertos/ti-arm-clang/makefile +++ b/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-evm/r5fss0-0_freertos/ti-arm-clang/makefile @@ -39,6 +39,7 @@ endif FILES_common := \ tamagawa_diagnostic.c \ + tamagawa_periodic_trigger.c \ main.c \ ti_drivers_config.c \ ti_drivers_open_close.c \ @@ -61,6 +62,7 @@ INCLUDES_common := \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f \ + -I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic \ -Igenerated \ DEFINES_common := \ diff --git a/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-lp/r5fss0-0_freertos/example.syscfg b/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-lp/r5fss0-0_freertos/example.syscfg index afa6d93..1574eff 100644 --- a/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-lp/r5fss0-0_freertos/example.syscfg +++ b/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-lp/r5fss0-0_freertos/example.syscfg @@ -83,6 +83,9 @@ tamagawa1.ENC2_EN.GPIO.gpioPin.$assign = "MMC1_SDCD"; const pruicss = scripting.addModule("/drivers/pruicss/pruicss", {}, false); const pruicss1 = pruicss.addInstance({}, false); pruicss1.$name = "CONFIG_PRU_ICSS0"; +pruicss1.intcMapping.create(1); +pruicss1.intcMapping[0].$name = "CONFIG_ICSS0_INTC_MAPPING0"; +pruicss1.intcMapping[0].event = "18"; tamagawa1.pru = pruicss1; pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0"; diff --git a/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-lp/r5fss0-0_freertos/ti-arm-clang/example.projectspec b/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-lp/r5fss0-0_freertos/ti-arm-clang/example.projectspec index bb4717f..0637745 100644 --- a/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-lp/r5fss0-0_freertos/ti-arm-clang/example.projectspec +++ b/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-lp/r5fss0-0_freertos/ti-arm-clang/example.projectspec @@ -35,6 +35,7 @@ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f + -I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 @@ -97,6 +98,8 @@ + + diff --git a/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-lp/r5fss0-0_freertos/ti-arm-clang/makefile b/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-lp/r5fss0-0_freertos/ti-arm-clang/makefile index 1d1d489..95a8956 100644 --- a/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-lp/r5fss0-0_freertos/ti-arm-clang/makefile +++ b/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-lp/r5fss0-0_freertos/ti-arm-clang/makefile @@ -39,6 +39,7 @@ endif FILES_common := \ tamagawa_diagnostic.c \ + tamagawa_periodic_trigger.c \ main.c \ ti_drivers_config.c \ ti_drivers_open_close.c \ @@ -61,6 +62,7 @@ INCLUDES_common := \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f \ + -I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic \ -Igenerated \ DEFINES_common := \ diff --git a/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-lp/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs b/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-lp/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs index c2be5da..d46875e 100644 --- a/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-lp/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs +++ b/examples/position_sense/tamagawa_diagnostic/multi_channel/am243x-lp/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs @@ -4,5 +4,5 @@ * View (ROV) tool. */ var crovFiles = [ - "mcu_plus_sdk/kernel/freertos/rov/FreeRTOS.rov.js", + "mcu_plus_sdk/source/kernel/freertos/rov/FreeRTOS.rov.js", ]; diff --git a/examples/position_sense/tamagawa_diagnostic/multi_channel/am64x-evm/r5fss0-0_freertos/example.syscfg b/examples/position_sense/tamagawa_diagnostic/multi_channel/am64x-evm/r5fss0-0_freertos/example.syscfg index 0a8b774..8cb1665 100644 --- a/examples/position_sense/tamagawa_diagnostic/multi_channel/am64x-evm/r5fss0-0_freertos/example.syscfg +++ b/examples/position_sense/tamagawa_diagnostic/multi_channel/am64x-evm/r5fss0-0_freertos/example.syscfg @@ -64,6 +64,9 @@ tamagawa1.PRU_ICSSG0_PRU.$assign = "PRU_ICSSG0_PRU1"; const pruicss = scripting.addModule("/drivers/pruicss/pruicss", {}, false); const pruicss1 = pruicss.addInstance({}, false); pruicss1.$name = "CONFIG_PRU_ICSS0"; +pruicss1.intcMapping.create(1); +pruicss1.intcMapping[0].$name = "CONFIG_ICSS0_INTC_MAPPING0"; +pruicss1.intcMapping[0].event = "18"; tamagawa1.pru = pruicss1; pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0"; diff --git a/examples/position_sense/tamagawa_diagnostic/multi_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec b/examples/position_sense/tamagawa_diagnostic/multi_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec index 5159be8..95aebc6 100644 --- a/examples/position_sense/tamagawa_diagnostic/multi_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec +++ b/examples/position_sense/tamagawa_diagnostic/multi_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec @@ -35,6 +35,7 @@ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am64x/r5f + -I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 @@ -97,6 +98,8 @@ + + diff --git a/examples/position_sense/tamagawa_diagnostic/multi_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/makefile b/examples/position_sense/tamagawa_diagnostic/multi_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/makefile index 4a38122..b5ba3d6 100644 --- a/examples/position_sense/tamagawa_diagnostic/multi_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/makefile +++ b/examples/position_sense/tamagawa_diagnostic/multi_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/makefile @@ -39,6 +39,7 @@ endif FILES_common := \ tamagawa_diagnostic.c \ + tamagawa_periodic_trigger.c \ main.c \ ti_drivers_config.c \ ti_drivers_open_close.c \ @@ -61,6 +62,7 @@ INCLUDES_common := \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am64x/r5f \ + -I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic \ -Igenerated \ DEFINES_common := \ diff --git a/examples/position_sense/tamagawa_diagnostic/multi_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs b/examples/position_sense/tamagawa_diagnostic/multi_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs index c2be5da..d46875e 100644 --- a/examples/position_sense/tamagawa_diagnostic/multi_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs +++ b/examples/position_sense/tamagawa_diagnostic/multi_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs @@ -4,5 +4,5 @@ * View (ROV) tool. */ var crovFiles = [ - "mcu_plus_sdk/kernel/freertos/rov/FreeRTOS.rov.js", + "mcu_plus_sdk/source/kernel/freertos/rov/FreeRTOS.rov.js", ]; diff --git a/examples/position_sense/tamagawa_diagnostic/single_channel/.project/project_am243x.js b/examples/position_sense/tamagawa_diagnostic/single_channel/.project/project_am243x.js index c12eaf2..a4f154e 100644 --- a/examples/position_sense/tamagawa_diagnostic/single_channel/.project/project_am243x.js +++ b/examples/position_sense/tamagawa_diagnostic/single_channel/.project/project_am243x.js @@ -5,6 +5,7 @@ let device = "am243x"; const files = { common: [ "tamagawa_diagnostic.c", + "tamagawa_periodic_trigger.c", "main.c", ], }; @@ -34,6 +35,7 @@ const includes_freertos_r5f = { "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f", + "${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic", ], }; diff --git a/examples/position_sense/tamagawa_diagnostic/single_channel/.project/project_am64x.js b/examples/position_sense/tamagawa_diagnostic/single_channel/.project/project_am64x.js index bf1da04..295cace 100644 --- a/examples/position_sense/tamagawa_diagnostic/single_channel/.project/project_am64x.js +++ b/examples/position_sense/tamagawa_diagnostic/single_channel/.project/project_am64x.js @@ -5,6 +5,7 @@ let device = "am64x"; const files = { common: [ "tamagawa_diagnostic.c", + "tamagawa_periodic_trigger.c", "main.c", ], }; @@ -34,6 +35,7 @@ const includes_freertos_r5f = { "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am64x/r5f", + "${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic", ], }; diff --git a/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-evm/r5fss0-0_freertos/example.syscfg b/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-evm/r5fss0-0_freertos/example.syscfg index 8ffdb0e..fed43bf 100644 --- a/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-evm/r5fss0-0_freertos/example.syscfg +++ b/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-evm/r5fss0-0_freertos/example.syscfg @@ -64,6 +64,9 @@ const pruicss1 = pruicss.addInstance({}, false); pruicss1.$name = "CONFIG_PRU_ICSS0"; tamagawa1.pru = pruicss1; pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0"; +pruicss1.intcMapping.create(1); +pruicss1.intcMapping[0].$name = "CONFIG_ICSS0_INTC_MAPPING0"; +pruicss1.intcMapping[0].event = "18"; /** * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future diff --git a/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec b/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec index bd932be..e7c6c62 100644 --- a/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec +++ b/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec @@ -35,6 +35,7 @@ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f + -I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 @@ -97,6 +98,8 @@ + + diff --git a/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-evm/r5fss0-0_freertos/ti-arm-clang/makefile b/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-evm/r5fss0-0_freertos/ti-arm-clang/makefile index 5c0a0cb..200d659 100644 --- a/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-evm/r5fss0-0_freertos/ti-arm-clang/makefile +++ b/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-evm/r5fss0-0_freertos/ti-arm-clang/makefile @@ -39,6 +39,7 @@ endif FILES_common := \ tamagawa_diagnostic.c \ + tamagawa_periodic_trigger.c \ main.c \ ti_drivers_config.c \ ti_drivers_open_close.c \ @@ -61,6 +62,7 @@ INCLUDES_common := \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f \ + -I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic \ -Igenerated \ DEFINES_common := \ diff --git a/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-lp/r5fss0-0_freertos/example.syscfg b/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-lp/r5fss0-0_freertos/example.syscfg index 36b235b..21dbc02 100644 --- a/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-lp/r5fss0-0_freertos/example.syscfg +++ b/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-lp/r5fss0-0_freertos/example.syscfg @@ -80,6 +80,10 @@ const pruicss1 = pruicss.addInstance({}, false); pruicss1.$name = "CONFIG_PRU_ICSS0"; tamagawa1.pru = pruicss1; pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0"; +pruicss1.intcMapping.create(1); +pruicss1.intcMapping[0].$name = "CONFIG_ICSS0_INTC_MAPPING0"; +pruicss1.intcMapping[0].event = "18"; + /** * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future diff --git a/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-lp/r5fss0-0_freertos/ti-arm-clang/example.projectspec b/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-lp/r5fss0-0_freertos/ti-arm-clang/example.projectspec index 516e92f..b04db9a 100644 --- a/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-lp/r5fss0-0_freertos/ti-arm-clang/example.projectspec +++ b/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-lp/r5fss0-0_freertos/ti-arm-clang/example.projectspec @@ -35,6 +35,7 @@ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f + -I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 @@ -97,6 +98,8 @@ + + diff --git a/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-lp/r5fss0-0_freertos/ti-arm-clang/makefile b/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-lp/r5fss0-0_freertos/ti-arm-clang/makefile index 939ebfb..8116e80 100644 --- a/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-lp/r5fss0-0_freertos/ti-arm-clang/makefile +++ b/examples/position_sense/tamagawa_diagnostic/single_channel/am243x-lp/r5fss0-0_freertos/ti-arm-clang/makefile @@ -39,6 +39,7 @@ endif FILES_common := \ tamagawa_diagnostic.c \ + tamagawa_periodic_trigger.c \ main.c \ ti_drivers_config.c \ ti_drivers_open_close.c \ @@ -61,6 +62,7 @@ INCLUDES_common := \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f \ + -I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic \ -Igenerated \ DEFINES_common := \ diff --git a/examples/position_sense/tamagawa_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/example.syscfg b/examples/position_sense/tamagawa_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/example.syscfg index d1aa8e9..96b1d07 100644 --- a/examples/position_sense/tamagawa_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/example.syscfg +++ b/examples/position_sense/tamagawa_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/example.syscfg @@ -64,6 +64,10 @@ const pruicss1 = pruicss.addInstance({}, false); pruicss1.$name = "CONFIG_PRU_ICSS0"; tamagawa1.pru = pruicss1; pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0"; +pruicss1.intcMapping.create(1); +pruicss1.intcMapping[0].$name = "CONFIG_ICSS0_INTC_MAPPING0"; +pruicss1.intcMapping[0].event = "18"; + /** * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future diff --git a/examples/position_sense/tamagawa_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec b/examples/position_sense/tamagawa_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec index ea79739..cd6ffe0 100644 --- a/examples/position_sense/tamagawa_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec +++ b/examples/position_sense/tamagawa_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/example.projectspec @@ -35,6 +35,7 @@ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am64x/r5f + -I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic -mcpu=cortex-r5 -mfloat-abi=hard -mfpu=vfpv3-d16 @@ -97,6 +98,8 @@ + + diff --git a/examples/position_sense/tamagawa_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/makefile b/examples/position_sense/tamagawa_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/makefile index 04536a2..4095318 100644 --- a/examples/position_sense/tamagawa_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/makefile +++ b/examples/position_sense/tamagawa_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/makefile @@ -39,6 +39,7 @@ endif FILES_common := \ tamagawa_diagnostic.c \ + tamagawa_periodic_trigger.c \ main.c \ ti_drivers_config.c \ ti_drivers_open_close.c \ @@ -61,6 +62,7 @@ INCLUDES_common := \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am64x/r5f \ + -I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic \ -Igenerated \ DEFINES_common := \ diff --git a/examples/position_sense/tamagawa_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs b/examples/position_sense/tamagawa_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs index c2be5da..d46875e 100644 --- a/examples/position_sense/tamagawa_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs +++ b/examples/position_sense/tamagawa_diagnostic/single_channel/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs @@ -4,5 +4,5 @@ * View (ROV) tool. */ var crovFiles = [ - "mcu_plus_sdk/kernel/freertos/rov/FreeRTOS.rov.js", + "mcu_plus_sdk/source/kernel/freertos/rov/FreeRTOS.rov.js", ]; diff --git a/examples/position_sense/tamagawa_diagnostic/tamagawa_diagnostic.c b/examples/position_sense/tamagawa_diagnostic/tamagawa_diagnostic.c index 0f31218..7107305 100644 --- a/examples/position_sense/tamagawa_diagnostic/tamagawa_diagnostic.c +++ b/examples/position_sense/tamagawa_diagnostic/tamagawa_diagnostic.c @@ -52,6 +52,17 @@ #include "ti_drivers_config.h" #include "ti_board_open_close.h" #include +#include "tamagawa_periodic_trigger.h" + +#define TASK_STACK_SIZE (4096) +#define TASK_PRIORITY (6) + +uint32_t gTaskFxnStack[TASK_STACK_SIZE/sizeof(uint32_t)] __attribute__((aligned(32))); +TaskP_Object gTaskObject; + +#define TAMAGAWA_POSITION_LOOP_STOP 0 +#define TAMAGAWA_POSITION_LOOP_START 1 + #if ((CONFIG_TAMAGAWA0_CHANNEL0 + CONFIG_TAMAGAWA0_CHANNEL1 + CONFIG_TAMAGAWA0_CHANNEL2) == 1) #include #endif @@ -188,6 +199,18 @@ static enum data_id tamagawa_get_command(uint8_t *adf, uint8_t *edf) cmd = DATA_ID_0; DebugP_log("\r\n| WARNING: invalid Data ID, Data readout Data ID 0 will be sent\n"); } + /* If the command is 9, start periodic trigger with DATA ID as 0*/ + if(cmd == PERIODIC_TRIGGER_CMD) + { + DebugP_log("\r| Enter IEP cycle count: "); + if(DebugP_scanf("%u\n", &priv->cmp3) >= 0) + { + return cmd; + }else{ + cmd = DATA_ID_0; + DebugP_log("\r\n| WARNING: invalid value entered, Data readout Data ID 0 will be sent with host trigger mode\n"); + } + } /* Check to make sure that the command issued is correct */ if(cmd >= DATA_ID_NUM) { @@ -281,6 +304,7 @@ static void tamagawa_display_menu(void) DebugP_log("\r\n| 6 : Reset (Data ID 8) |"); DebugP_log("\r\n| 7 : Reset (Data ID C) |"); DebugP_log("\r\n| 8 : Readout from EEPROM (Data ID D) |"); + DebugP_log("\r\n| 9 : Start periodic continuous mode |"); DebugP_log("\r\n|------------------------------------------------------------------------------|\n|\n"); DebugP_log("\r\n| enter value: "); } @@ -292,6 +316,119 @@ uint32_t tamagawa_get_fw_version(void) return *((uint32_t *)TamagawaFirmware + 1); } +static int32_t tamagawa_position_loop_status; + +static void tamagawa_position_loop_decide_termination(void *args) +{ + char c; + + while(1) + { + DebugP_scanf("%c", &c); + tamagawa_position_loop_status = TAMAGAWA_POSITION_LOOP_STOP; + break; + } + TaskP_exit(); +} + + +static int32_t tamagawa_loop_task_create(void) +{ + uint32_t status; + TaskP_Params taskParams; + + TaskP_Params_init(&taskParams); + taskParams.name = "tamagawa_position_loop_decide_termination"; + taskParams.stackSize = TASK_STACK_SIZE; + taskParams.stack = (uint8_t *)gTaskFxnStack; + taskParams.priority = TASK_PRIORITY; + taskParams.taskMain = (TaskP_FxnMain)tamagawa_position_loop_decide_termination; + status = TaskP_construct(&gTaskObject, &taskParams); + + if(status != SystemP_SUCCESS) + { + DebugP_log("\rTask2 creation failed\n"); + } + + return status ; +} + +static void tamagawa_process_periodic_command(enum data_id process_dataid_cmd) +{ + int32_t status; + + tamagawa_config_periodic_trigger(priv); + + if(tamagawa_loop_task_create() != SystemP_SUCCESS) + { + DebugP_log("\r| ERROR: OS not allowing continuous mode as related Task creation failed\r\n|\r\n|\n"); + DebugP_log("Task_create() failed!\n"); + return; + } + + struct tamagawa_periodic_interface tamagawa_periodic_interface; + tamagawa_periodic_interface.pruss_cfg = priv->pruss_cfg; + tamagawa_periodic_interface.pruss_iep = priv->pruss_iep; + tamagawa_periodic_interface.pruss_dmem = priv->tamagawa_xchg; + tamagawa_periodic_interface.cmp3 = priv->cmp3; + + status = tamagawa_config_periodic_mode(&tamagawa_periodic_interface, gPruIcssXHandle); + DebugP_assert(0 != status); + tamagawa_position_loop_status = TAMAGAWA_POSITION_LOOP_START; + + DebugP_log("\r|\n\r| press enter to stop the continuous mode\r\n|\r\n| position, f1\r\n| "); + + while(1) + { + if(tamagawa_position_loop_status == TAMAGAWA_POSITION_LOOP_STOP) + { + tamagawa_stop_periodic_continuous_mode(&tamagawa_periodic_interface); + tamagawa_config_host_trigger(priv); + return; + } + else + { + tamagawa_update_data_id(priv, process_dataid_cmd); + + /* In case of EEPROM commands, calculate the CRC for the different channels selected */ + if((process_dataid_cmd == DATA_ID_6) || (process_dataid_cmd == DATA_ID_D)) + { + uint32_t ch = 0; + for(ch = 0 ; ch < MAX_CHANNELS ; ch++) + { + if(gTamagawa_multi_ch_mask & 1 << ch) + { + tamagawa_update_crc(priv, process_dataid_cmd, ch); + } + } + + } + + tamagawa_command_process(priv, process_dataid_cmd, gTamagawa_multi_ch_mask); + + if(gTamagawa_is_multi_ch) + { + DebugP_log("\r\n Multi-channel mode is enabled\n\n"); + + uint32_t ch; + for(ch = 0; ch < MAX_CHANNELS; ch++) + { + if(gTamagawa_multi_ch_mask & 1 << ch) + { + tamagawa_multi_channel_set_cur(priv, ch); + DebugP_log("\r\n\r|\n|\t\t\t\tCHANNEL %d\n", ch); + tamagawa_handle_rx(priv, process_dataid_cmd); + } + } + } + else + { + DebugP_log("\r\n Single-channel mode is enabled\n\n"); + tamagawa_handle_rx(priv, process_dataid_cmd); + } + } + } +} void tamagawa_main(void *args) { @@ -310,12 +447,14 @@ void tamagawa_main(void *args) #endif void *pruicss_cfg; + void *pruicss_iep; uint32_t slice_value = 1; uint32_t selected_ch; tamagawa_pruicss_init(); pruicss_cfg = (void *)(((PRUICSS_HwAttrs *)(gPruIcssXHandle->hwAttrs))->cfgRegBase); + pruicss_iep = (void *)(((PRUICSS_HwAttrs *)(gPruIcssXHandle->hwAttrs))->iep0RegBase); if(PRUICSS_PRUx == 0) { @@ -323,9 +462,8 @@ void tamagawa_main(void *args) } /* Initialize the priv structure according to the PRUx slice selected */ - priv = tamagawa_init((struct tamagawa_xchg *)((PRUICSS_HwAttrs *)( - gPruIcssXHandle->hwAttrs))->pru1DramBase, pruicss_cfg, slice_value); - + priv = tamagawa_init((struct tamagawa_xchg *)( + (PRUICSS_HwAttrs *)(gPruIcssXHandle->hwAttrs))->pru1DramBase, pruicss_cfg,pruicss_iep,slice_value); tamagawa_set_baudrate(priv, CONFIG_TAMAGAWA0_BAUDRATE); @@ -393,6 +531,12 @@ void tamagawa_main(void *args) tamagawa_display_menu(); cmd = tamagawa_get_command(&adf, &edf); + if(cmd == PERIODIC_TRIGGER_CMD) + { + /*Takes which data_id to process in input arguments*/ + tamagawa_process_periodic_command(DATA_ID_0); + } + if(cmd >= DATA_ID_NUM) { continue; @@ -436,8 +580,8 @@ void tamagawa_main(void *args) DebugP_log("\r\n Single-channel mode is enabled\n\n"); tamagawa_handle_rx(priv, cmd); } + } -} Board_driversClose(); Drivers_close(); } diff --git a/examples/position_sense/tamagawa_diagnostic/tamagawa_periodic_trigger.c b/examples/position_sense/tamagawa_diagnostic/tamagawa_periodic_trigger.c new file mode 100644 index 0000000..0b22aa0 --- /dev/null +++ b/examples/position_sense/tamagawa_diagnostic/tamagawa_periodic_trigger.c @@ -0,0 +1,189 @@ +/* + * Copyright (C) 2023 Texas Instruments Incorporated + * + * 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 +#include +#include + +#include +#include +#include +#include +#include "tamagawa_periodic_trigger.h" +#include +#include + +static HwiP_Object gIcssgEncoderHwiObject0; /* ICSSG Tamagawa PRU FW HWI */ + +/* ICSSG Interrupt settings */ +#define ICSSG_PRU_TAMAGAWA_INT_NUM ( CSLR_R5FSS0_CORE0_INTR_PRU_ICSSG0_PR1_HOST_INTR_PEND_0 ) +uint32_t gPrutamagawaIrqCnt0; + +/*global variable */ +void *gPruss_iep; + +PRUICSS_Handle gPruIcssXHandle; + +/* ICSS INTC configuration */ +extern PRUICSS_IntcInitData icss0_intc_initdata; + +void tamagawa_config_iep(struct tamagawa_periodic_interface *tamagawa_periodic_interface) +{ + /*reset iep timer*/ + void *pruss_iep = tamagawa_periodic_interface->pruss_iep; + struct tamagawa_pruss_xchg *pruss_xchg = tamagawa_periodic_interface->pruss_dmem; + uint8_t temp; + uint8_t event; + uint32_t cmp_reg0; + uint32_t cmp_reg1; + uint32_t event_clear; + uint64_t cmp0 = 0; + + /*clear IEP*/ + temp = HW_RD_REG8((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_GLOBAL_CFG_REG ); + temp &= 0xFE; + HW_WR_REG8((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_GLOBAL_CFG_REG, temp); + + /* cmp cfg reg */ + event = HW_RD_REG8((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_CMP_CFG_REG); + event_clear = HW_RD_REG8((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_CMP_STATUS_REG); + + /*enable IEP reset by cmp0 event*/ + event |= IEP_CMP0_ENABLE; + event |= IEP_RST_CNT_EN; + event_clear |= 1; + + /*set IEP counter to ZERO*/ + HW_WR_REG32((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_COUNT_REG0, 0); + HW_WR_REG32((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_COUNT_REG1, 0); + + /*configure cmp3 registers*/ + event |= (0x1 << 4 ); + event_clear |= (0x1 << 3); + cmp_reg0 = (tamagawa_periodic_interface->cmp3 & 0xffffffff) - IEP_DEFAULT_INC; + cmp_reg1 = (tamagawa_periodic_interface->cmp3>>32 & 0xffffffff); + + HW_WR_REG32((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_CMP3_REG0, cmp_reg0); + HW_WR_REG32((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_CMP3_REG1, cmp_reg1); + + cmp0 = tamagawa_periodic_interface->cmp3; + + /*clear event*/ + HW_WR_REG8((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_CMP_STATUS_REG, event_clear); + /*enable event*/ + HW_WR_REG8((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_CMP_CFG_REG, event); + + /*configure cmp0 registers*/ + cmp0 = 2*cmp0; + cmp_reg0 = (cmp0 & 0xffffffff) - IEP_DEFAULT_INC; + cmp_reg1 = (cmp0>>32 & 0xffffffff); + HW_WR_REG32((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_CMP0_REG0, cmp_reg0); + HW_WR_REG32((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_CMP0_REG1, cmp_reg1); + + + /*write IEP default increment & IEP start*/ + temp = HW_RD_REG8((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_GLOBAL_CFG_REG ); + temp &= 0x0F; + temp |= 0x10; + temp |= IEP_COUNTER_EN; + HW_WR_REG8((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_GLOBAL_CFG_REG, temp); +} + + +void tamagawa_interrupt_config(struct tamagawa_periodic_interface *tamagawa_periodic_interface) +{ + struct tamagawa_pruss_xchg *pruss_xchg = tamagawa_periodic_interface->pruss_dmem; + int32_t status; + HwiP_Params hwiPrms; + /* Register & enable ICSSG tamagawa PRU FW interrupt */ + HwiP_Params_init(&hwiPrms); + hwiPrms.intNum = ICSSG_PRU_TAMAGAWA_INT_NUM; + hwiPrms.callback = &prutamagawaIrqHandler0; + hwiPrms.args = 0; + hwiPrms.isPulse = FALSE; + hwiPrms.isFIQ = FALSE; + status = HwiP_construct(&gIcssgEncoderHwiObject0, &hwiPrms); + DebugP_assert(status == SystemP_SUCCESS); + +} +uint32_t tamagawa_config_periodic_mode(struct tamagawa_periodic_interface *tamagawa_periodic_interface, PRUICSS_Handle handle) +{ + int32_t status; + gPruIcssXHandle = handle; + gPruss_iep = tamagawa_periodic_interface->pruss_iep; + /*configure IEP*/ + tamagawa_config_iep(tamagawa_periodic_interface); + /* Initialize ICSS INTC */ + status = PRUICSS_intcInit(gPruIcssXHandle, &icss0_intc_initdata); + if (status != SystemP_SUCCESS) + { + return 0; + } + /*config Interrupt*/ + tamagawa_interrupt_config(tamagawa_periodic_interface); + return 1; + +} + +void tamagawa_stop_periodic_continuous_mode(struct tamagawa_periodic_interface *tamagawa_periodic_interface) +{ + /*reset iep timer*/ + void *pruss_iep = tamagawa_periodic_interface->pruss_iep; + uint8_t temp; + /*clear IEP*/ + temp = HW_RD_REG8((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_GLOBAL_CFG_REG ); + temp &= 0xFE; + HW_WR_REG8((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_GLOBAL_CFG_REG, temp); +} + +/* PRU tamagawa FW IRQ handler */ +void prutamagawaIrqHandler0(void *args) +{ + + /* debug, inncrement PRU SDFM IRQ count */ + gPrutamagawaIrqCnt0++; + + /* clear Cmp3 event*/ + uint32_t event_clear; + event_clear = HW_RD_REG8((uint8_t*)gPruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_CMP_STATUS_REG); + event_clear |= IEP_CMP3_EVNT; + HW_WR_REG8((uint8_t*)gPruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_CMP_STATUS_REG, event_clear); + + /* Clear interrupt at source */ + /* Write 18 to ICSSG_STATUS_CLR_INDEX_REG + Firmware: TRIGGER_HOST_SDFM_IRQ defined as 18 + 18 = 16+2, 2 is Host Interrupt Number. See AM64x TRM. + */ + PRUICSS_clearEvent(gPruIcssXHandle, PRU_TRIGGER_HOST_TAMAGAWA_EVT0); + +} \ No newline at end of file diff --git a/examples/position_sense/tamagawa_diagnostic/tamagawa_periodic_trigger.h b/examples/position_sense/tamagawa_diagnostic/tamagawa_periodic_trigger.h new file mode 100644 index 0000000..7d21c8f --- /dev/null +++ b/examples/position_sense/tamagawa_diagnostic/tamagawa_periodic_trigger.h @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2023 Texas Instruments Incorporated + * + * 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. + */ + +#ifndef _TAMAGAWA_H_ +#define _TAMAGAWA_H_ + +#include + +struct tamagawa_periodic_interface +{ + void *pruss_iep; + void *pruss_dmem; + void *pruss_cfg; + uint64_t cmp3; +}; + +#define IEP_DEFAULT_INC 0x1; +#define IEP_DEFAULT_INC_EN 0x4; +#define IEP_COUNTER_EN 0x1; +#define IEP_RST_CNT_EN 0x1; +#define IEP_CMP0_ENABLE 0x1 << 1; +#define IEP_CMP3_EVNT (0x1 << 3 ) + +#define PRU_TRIGGER_HOST_TAMAGAWA_EVT0 ( 2+16 ) /* pr0_pru_mst_intr[2]_intr_req */ +#define PERIOD + +uint32_t tamagawa_config_periodic_mode(struct tamagawa_periodic_interface *tamagawa_periodic_interface, PRUICSS_Handle handle); + +void tamagawa_stop_periodic_continuous_mode(struct tamagawa_periodic_interface *tamagawa_periodic_interface); + +static void prutamagawaIrqHandler0(void *handle); + + +#endif /* _TAMAGAWA_H_ */ diff --git a/examples/pruicss_pwm/pruicss_pwm_duty_cycle/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs b/examples/pruicss_pwm/pruicss_pwm_duty_cycle/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs index c2be5da..d46875e 100644 --- a/examples/pruicss_pwm/pruicss_pwm_duty_cycle/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs +++ b/examples/pruicss_pwm/pruicss_pwm_duty_cycle/am64x-evm/r5fss0-0_freertos/ti-arm-clang/syscfg_c.rov.xs @@ -4,5 +4,5 @@ * View (ROV) tool. */ var crovFiles = [ - "mcu_plus_sdk/kernel/freertos/rov/FreeRTOS.rov.js", + "mcu_plus_sdk/source/kernel/freertos/rov/FreeRTOS.rov.js", ]; diff --git a/makefile.am243x b/makefile.am243x index f043cc2..1694f05 100644 --- a/makefile.am243x +++ b/makefile.am243x @@ -103,6 +103,7 @@ help: @echo $(MAKE) -s -C source/position_sense/hdsl/firmware/multichannel_ch1_sync_mode/am243x-evm/icssg0-pru1_fw/ti-pru-cgt [all clean syscfg-gui syscfg] @echo $(MAKE) -s -C source/position_sense/hdsl/firmware/sync_225_mhz/am243x-evm/icssg0-pru1_fw/ti-pru-cgt [all clean syscfg-gui syscfg] @echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt [all clean syscfg-gui syscfg] + @echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt [all clean syscfg-gui syscfg] @echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt [all clean syscfg-gui syscfg] @echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/single_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt [all clean syscfg-gui syscfg] @echo $(MAKE) -s -C source/position_sense/bissc/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt [all clean syscfg-gui syscfg] @@ -290,6 +291,7 @@ BUILD_COMBO_EXAMPLE_PRIVATE_ALL += hdsl_master_multichannel_ch0_sync_mode_am243x BUILD_COMBO_EXAMPLE_PRIVATE_ALL += hdsl_master_multichannel_ch1_sync_mode_am243x-evm_icssg0-pru1_fw_ti-pru-cgt BUILD_COMBO_EXAMPLE_PRIVATE_ALL += hdsl_master_sync_225_mhz_am243x-evm_icssg0-pru1_fw_ti-pru-cgt BUILD_COMBO_EXAMPLE_PRIVATE_ALL += tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt +BUILD_COMBO_EXAMPLE_PRIVATE_ALL += tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt BUILD_COMBO_EXAMPLE_PRIVATE_ALL += tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt BUILD_COMBO_EXAMPLE_PRIVATE_ALL += tamagawa_single_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt BUILD_COMBO_EXAMPLE_PRIVATE_ALL += bissc_peripheral_interface_single_ch_am243x-evm_icssg0-pru1_fw_ti-pru-cgt @@ -462,6 +464,9 @@ examples-private: $(BUILD_COMBO_EXAMPLE_PRIVATE_ALL) tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt: $(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile all + tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt: + $(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt -f makefile all + tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt: $(MAKE) -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile all @@ -543,6 +548,7 @@ BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += hdsl_master_multichannel_ch0_sync_mode_ BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += hdsl_master_multichannel_ch1_sync_mode_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += hdsl_master_sync_225_mhz_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean +BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += tamagawa_single_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += bissc_peripheral_interface_single_ch_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean @@ -715,6 +721,9 @@ examples-private-clean: $(BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL) tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean: $(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile clean + tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_clean: + $(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt -f makefile clean + tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean: $(MAKE) -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile clean @@ -796,6 +805,7 @@ BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += hdsl_master_multichannel_ch0_sync_mode_ BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += hdsl_master_multichannel_ch1_sync_mode_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += hdsl_master_sync_225_mhz_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub +BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_scrub BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += tamagawa_single_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_scrub BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += bissc_peripheral_interface_single_ch_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub @@ -968,6 +978,9 @@ examples-scrub-private: $(BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL) tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub: $(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile scrub + tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_scrub: + $(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt -f makefile scrub + tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub: $(MAKE) -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile scrub diff --git a/makefile_projectspec.am243x b/makefile_projectspec.am243x index 8c7c408..cc0e5be 100644 --- a/makefile_projectspec.am243x +++ b/makefile_projectspec.am243x @@ -64,6 +64,7 @@ BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += hdsl_master_multichannel_ch BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += hdsl_master_multichannel_ch1_sync_mode_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += hdsl_master_sync_225_mhz_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build +BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_build BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += tamagawa_single_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_build BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += bissc_peripheral_interface_single_ch_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build @@ -236,6 +237,9 @@ all-private: $(BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL) tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build: $(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec all + tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_build: + $(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec all + tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build: $(MAKE) -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec all @@ -318,6 +322,7 @@ BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += hdsl_master_multichannel_ch BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += hdsl_master_multichannel_ch1_sync_mode_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += hdsl_master_sync_225_mhz_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean +BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += tamagawa_single_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += bissc_peripheral_interface_single_ch_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean @@ -490,6 +495,9 @@ clean-private: $(BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL) tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean: $(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec clean + tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_clean: + $(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec clean + tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean: $(MAKE) -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec clean @@ -572,6 +580,7 @@ BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += hdsl_master_multichannel_c BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += hdsl_master_multichannel_ch1_sync_mode_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += hdsl_master_sync_225_mhz_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export +BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_export BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += tamagawa_single_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_export BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += bissc_peripheral_interface_single_ch_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export @@ -744,6 +753,9 @@ export-private: $(BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL) tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export: $(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec export + tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_export: + $(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec export + tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export: $(MAKE) -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec export @@ -847,6 +859,7 @@ help: @echo $(MAKE) -s -C source/position_sense/hdsl/firmware/multichannel_ch1_sync_mode/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec [export all clean] @echo $(MAKE) -s -C source/position_sense/hdsl/firmware/sync_225_mhz/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec [export all clean] @echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec [export all clean] + @echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec [export all clean] @echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec [export all clean] @echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/single_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec [export all clean] @echo $(MAKE) -s -C source/position_sense/bissc/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec [export all clean] diff --git a/source/position_sense/tamagawa/driver/tamagawa_drv.c b/source/position_sense/tamagawa/driver/tamagawa_drv.c index 2474124..b048963 100644 --- a/source/position_sense/tamagawa/driver/tamagawa_drv.c +++ b/source/position_sense/tamagawa/driver/tamagawa_drv.c @@ -583,12 +583,13 @@ static inline void tamagawa_config_clr_cfg0(struct tamagawa_priv *priv) HW_WR_REG32((uint32_t)(pruss_cfg) + tamagawa_priv.register_offset_val.ICSS_CFG_PRUx_ED_CH2_CFG0, 0); } -struct tamagawa_priv *tamagawa_init(struct tamagawa_xchg *tamagawa_xchg, void *pruss_cfg, uint32_t slice_value) +struct tamagawa_priv *tamagawa_init(struct tamagawa_xchg *tamagawa_xchg, void *pruss_cfg, void *pruss_iep, uint32_t slice_value) { /* Initializes tamagawa firmware interface address and get the pointer to struct tamagawa_priv instance */ tamagawa_priv.tamagawa_xchg = tamagawa_xchg; tamagawa_priv.pruss_cfg = pruss_cfg; tamagawa_priv.slice_value = slice_value; + tamagawa_priv.pruss_iep = pruss_iep; /* If the slice value is 0, it denotes that PRU0 is selected. Assign the register offsets for PRU0 */ if(slice_value==0) diff --git a/source/position_sense/tamagawa/firmware/multi_channel/.project/project_am243x.js b/source/position_sense/tamagawa/firmware/multi_channel/.project/project_am243x.js index 4616a03..0eef6a3 100644 --- a/source/position_sense/tamagawa/firmware/multi_channel/.project/project_am243x.js +++ b/source/position_sense/tamagawa/firmware/multi_channel/.project/project_am243x.js @@ -47,12 +47,17 @@ const lflags = { const buildOptionCombos = [ { device: device, cpu: "icssg0-pru1", cgt: "ti-pru-cgt", board: "am243x-evm", os: "fw"}, + { device: device, cpu: "icssg0-pru1", cgt: "ti-pru-cgt", board: "am243x-lp", os: "fw"}, ]; -let postBuildSteps = [ +let postBuildStepsEVM = [ "$(CG_TOOL_ROOT)/bin/hexpru.exe ${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/tamagawa_master_hexpru.cmd tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt.out; ${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/tools/bin2header/bin2header.exe tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt.b00 tamagawa_master_multi_channel_bin.h TamagawaFirmware 4; move tamagawa_master_multi_channel_bin.h ${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/tamagawa_master_multi_channel_bin.h ;" ]; +let postBuildStepsLP = [ + "$(CG_TOOL_ROOT)/bin/hexpru.exe ${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/tamagawa_master_hexpru.cmd tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt.out; ${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/tools/bin2header/bin2header.exe tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt.b00 tamagawa_master_multi_channel_bin.h TamagawaFirmware 4; move tamagawa_master_multi_channel_bin.h ${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/tamagawa_master_multi_channel_bin.h ;" +]; + function getComponentProperty() { let property = {}; @@ -67,8 +72,6 @@ function getComponentProperty() { property.pru_linker_file = "linker"; property.isSkipTopLevelBuild = true; property.skipUpdatingTirex = true; - property.postBuildSteps = postBuildSteps; - return property; } @@ -85,6 +88,16 @@ function getComponentBuildProperty(buildOption) { build_property.projecspecFileAction = "copy"; build_property.skipMakefileCcsBootimageGen = true; + if(buildOption.board.match(/am243x-evm*/) ) + { + build_property.postBuildSteps = postBuildStepsEVM; + } + else if(buildOption.board.match(/am243x-lp*/) ) + { + build_property.postBuildSteps = postBuildStepsLP; + + } + return build_property; } diff --git a/source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt/example.projectspec b/source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt/example.projectspec new file mode 100644 index 0000000..56d6918 --- /dev/null +++ b/source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt/example.projectspec @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt/makefile b/source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt/makefile new file mode 100644 index 0000000..ff6eb24 --- /dev/null +++ b/source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt/makefile @@ -0,0 +1,117 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Required input arguments: +# MOTOR_CONTROL_SDK_PATH=${MOTOR_CONTROL_SDK_PATH} sdk_dir_path +# CCS_INSTALL_DIR=${CCS_INSTALL_DIR} ccs_dir_path +# CCS_PROJECT_DEBUG=${CWD} project_debug_dir_path + +SHELL = cmd.exe +CCS_PATH?=$(CCS_INSTALL_DIR)/ccs_base/pru/include +CG_TOOL_ROOT := C:/ti/ti-cgt-pru_2.3.3 +SYSCFG_DIR := $(CCS_PROJECT_DEBUG)/syscfg + +GEN_OPTS__FLAG := +GEN_CMDS__FLAG := + +ORDERED_OBJS += \ +"./main.obj" \ +"${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt/linker.cmd" \ +$(GEN_CMDS__FLAG) \ +-llibc.a \ + +-include ../makefile.init + +RM := DEL /F +RMDIR := RMDIR /S/Q + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ + +# Add inputs and outputs from these tool invocations to the build variables +CMD_SRCS += \ +${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt/linker.cmd \ + +ASM_SRCS += \ +${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/multi_channel/main.asm + +OBJS += \ +./main.obj + +ASM_DEPS += \ +./main.d + +OBJS__QUOTED += \ +"main.obj" + +ASM_DEPS__QUOTED += \ +"main.d" + +ASM_SRCS__QUOTED += \ +"${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/multi_channel/main.asm" + +# Each subdirectory must supply rules for building sources it contributes +main.obj: ${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/multi_channel/main.asm $(GEN_OPTS) | $(GEN_FILES) $(GEN_MISC_FILES) + @echo 'Building file: "$<"' + @echo 'Invoking: PRU Compiler' + "$(CG_TOOL_ROOT)/bin/clpru" -DICSSG0 -DPRU1 -DSLICE1 -v4 --define=SOC_AM243X --define=ENABLE_MULTI_CHANNEL --include_path="$(CCS_PATH)" --include_path="$(SYSCFG_DIR)" --include_path="${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware" --define=_DEBUG_=1 -g --diag_warning=225 --diag_wrap=off --display_error_number --endian=little --preproc_with_compile --preproc_dependency="$(basename $(