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 $(