926 lines
40 KiB
JavaScript
926 lines
40 KiB
JavaScript
|
|
let Common = system.getScript("/driverlib/Common.js");
|
||
|
|
let Pinmux = system.getScript("/driverlib/pinmux.js");
|
||
|
|
let device_driverlib_peripheral =
|
||
|
|
system.getScript("/driverlib/device_driverlib_peripherals/" +
|
||
|
|
Common.getDeviceName().toLowerCase() + "_epwm.js");
|
||
|
|
var shadowRegisterReloadNumberofTimesOptions = [
|
||
|
|
{ name : "1", displayName: "One Period"},
|
||
|
|
{ name : "2", displayName: "Two Periods" },
|
||
|
|
{ name : "3", displayName: "Three Periods"},
|
||
|
|
{ name : "4", displayName: "Four Periods"},
|
||
|
|
{ name : "5", displayName: "Five Periods"},
|
||
|
|
{ name : "6", displayName: "Six Periods"},
|
||
|
|
{ name : "7", displayName: "Seven Periods"},
|
||
|
|
{ name : "8", displayName: "Eight Periods"}
|
||
|
|
]
|
||
|
|
function generateActiveRegistersConfig(reg_name)
|
||
|
|
{
|
||
|
|
let xcmp_RegArr = device_driverlib_peripheral.EPWM_XCMPReg.slice(0, 8);
|
||
|
|
let xcmp_RegConfig = [];
|
||
|
|
|
||
|
|
for(var xcmp_Reg_Index in xcmp_RegArr)
|
||
|
|
{
|
||
|
|
xcmp_RegConfig = xcmp_RegConfig.concat(
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_set" + reg_name + "_" + xcmp_RegArr[xcmp_Reg_Index].name.replace("EPWM_", ""),
|
||
|
|
displayName: xcmp_RegArr[xcmp_Reg_Index].displayName.replace("_ACTIVE", " Active "),
|
||
|
|
description: "Set Active Register to a value",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
}
|
||
|
|
)
|
||
|
|
}
|
||
|
|
return xcmp_RegConfig
|
||
|
|
}
|
||
|
|
function generateShadowRegisters1Config(reg_name)
|
||
|
|
{
|
||
|
|
let xcmp_RegArr = device_driverlib_peripheral.EPWM_XCMPReg.slice(9, 17);
|
||
|
|
let xcmp_RegConfig = [];
|
||
|
|
|
||
|
|
for(var xcmp_Reg_Index in xcmp_RegArr)
|
||
|
|
{
|
||
|
|
xcmp_RegConfig = xcmp_RegConfig.concat(
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_set" + reg_name + "_" + xcmp_RegArr[xcmp_Reg_Index].name.replace("EPWM_", ""),
|
||
|
|
displayName: xcmp_RegArr[xcmp_Reg_Index].displayName.replace("_SHADOW", " Shadow "),
|
||
|
|
description: "Set Active Register to a value",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
}
|
||
|
|
)
|
||
|
|
}
|
||
|
|
return xcmp_RegConfig
|
||
|
|
}
|
||
|
|
function generateShadowRegisters2Config(reg_name)
|
||
|
|
{
|
||
|
|
let xcmp_RegArr = device_driverlib_peripheral.EPWM_XCMPReg.slice(18, 26);
|
||
|
|
let xcmp_RegConfig = [];
|
||
|
|
|
||
|
|
for(var xcmp_Reg_Index in xcmp_RegArr)
|
||
|
|
{
|
||
|
|
xcmp_RegConfig = xcmp_RegConfig.concat(
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_set" + reg_name + "_" + xcmp_RegArr[xcmp_Reg_Index].name.replace("EPWM_", ""),
|
||
|
|
displayName: xcmp_RegArr[xcmp_Reg_Index].displayName.replace("_SHADOW", " Shadow "),
|
||
|
|
description: "Set Active Register to a value",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
}
|
||
|
|
)
|
||
|
|
}
|
||
|
|
return xcmp_RegConfig
|
||
|
|
}
|
||
|
|
function generateShadowRegisters3Config(reg_name)
|
||
|
|
{
|
||
|
|
let xcmp_RegArr = device_driverlib_peripheral.EPWM_XCMPReg.slice(27, 35);
|
||
|
|
let xcmp_RegConfig = [];
|
||
|
|
|
||
|
|
for(var xcmp_Reg_Index in xcmp_RegArr)
|
||
|
|
{
|
||
|
|
xcmp_RegConfig = xcmp_RegConfig.concat(
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_set" + reg_name + "_" + xcmp_RegArr[xcmp_Reg_Index].name.replace("EPWM_", ""),
|
||
|
|
displayName: xcmp_RegArr[xcmp_Reg_Index].displayName.replace("_SHADOW", " Shadow "),
|
||
|
|
description: "Set Active Register to a value",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
}
|
||
|
|
)
|
||
|
|
}
|
||
|
|
return xcmp_RegConfig
|
||
|
|
}
|
||
|
|
// Generate XAQ events
|
||
|
|
function generateXAQConfig(reg_name, EPWMxAorB)
|
||
|
|
{
|
||
|
|
let group_xaq = [];
|
||
|
|
if(reg_name == "XCMPA"){
|
||
|
|
for(var xcmp_set_index in device_driverlib_peripheral.EPWM_XCMP)
|
||
|
|
{
|
||
|
|
let xcmp_aq_event_config = [];
|
||
|
|
let xcmp_set = device_driverlib_peripheral.EPWM_XCMP[xcmp_set_index];
|
||
|
|
for(var xcmp_aq_events_index in device_driverlib_peripheral.EPWM_XCMPActionQualifierOutputEvent)
|
||
|
|
{
|
||
|
|
let xcmp_aq_events = device_driverlib_peripheral.EPWM_XCMPActionQualifierOutputEvent[xcmp_aq_events_index];
|
||
|
|
xcmp_aq_event_config = xcmp_aq_event_config.concat([
|
||
|
|
{
|
||
|
|
name: reg_name + "_" + xcmp_set.name.replace("EPWM_XCMP_", "") + xcmp_aq_events.name.replace("EPWM_AQ", ""),
|
||
|
|
displayName: xcmp_aq_events.displayName,
|
||
|
|
description: "",
|
||
|
|
longDescription: "",
|
||
|
|
hidden: true,
|
||
|
|
default: device_driverlib_peripheral.EPWM_ActionQualifierOutput[0].name,
|
||
|
|
options: device_driverlib_peripheral.EPWM_ActionQualifierOutput
|
||
|
|
}
|
||
|
|
])
|
||
|
|
}
|
||
|
|
group_xaq = group_xaq.concat(
|
||
|
|
{
|
||
|
|
name: "GROUP_XAQ_" + EPWMxAorB + "_" + reg_name + "_" + xcmp_set.name,
|
||
|
|
displayName: xcmp_set.displayName,
|
||
|
|
description: "",
|
||
|
|
longDescription: "When XCMP mode is enabled, AQ can now have up to three shadow buffer levels with their own AQ events",
|
||
|
|
config: xcmp_aq_event_config
|
||
|
|
}
|
||
|
|
)
|
||
|
|
}
|
||
|
|
}else if (reg_name == "XCMPB"){
|
||
|
|
for(var xcmp_set_index in device_driverlib_peripheral.EPWM_XCMP)
|
||
|
|
{
|
||
|
|
let xcmp_set = device_driverlib_peripheral.EPWM_XCMP[xcmp_set_index];
|
||
|
|
let xcmp_aq_event_config = [];
|
||
|
|
// Grab only the action qualifiers for XCMP5-8 when XCMP is split between cmpb and cmpa
|
||
|
|
let xcmpb_options = device_driverlib_peripheral.EPWM_XCMPActionQualifierOutputEvent.slice(4,9);
|
||
|
|
for(var xcmp_aq_events_index in xcmpb_options)
|
||
|
|
{
|
||
|
|
let xcmp_aq_events = xcmpb_options[xcmp_aq_events_index];
|
||
|
|
xcmp_aq_event_config = xcmp_aq_event_config.concat([
|
||
|
|
{
|
||
|
|
name: reg_name + "_" + xcmp_set.name.replace("EPWM_XCMP_", "") + xcmp_aq_events.name.replace("EPWM_AQ", ""),
|
||
|
|
displayName: xcmp_aq_events.displayName,
|
||
|
|
description: "",
|
||
|
|
longDescription: "",
|
||
|
|
hidden: true,
|
||
|
|
default: device_driverlib_peripheral.EPWM_ActionQualifierOutput[0].name,
|
||
|
|
options: device_driverlib_peripheral.EPWM_ActionQualifierOutput
|
||
|
|
}
|
||
|
|
])
|
||
|
|
}
|
||
|
|
group_xaq = group_xaq.concat(
|
||
|
|
{
|
||
|
|
name: "GROUP_XAQ_" + EPWMxAorB + "_" + reg_name + "_" + xcmp_set.name,
|
||
|
|
displayName: xcmp_set.displayName,
|
||
|
|
description: "",
|
||
|
|
longDescription: "When XCMP mode is enabled, AQ can now have up to three shadow buffer levels with their own AQ events",
|
||
|
|
config: xcmp_aq_event_config
|
||
|
|
}
|
||
|
|
)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return group_xaq;
|
||
|
|
}
|
||
|
|
|
||
|
|
function onChangeActiveAndShdwRegistersConfig(inst, ui, reg_name, startIndex, stopIndex)
|
||
|
|
{
|
||
|
|
// this not only sets the active and shadow buffer, but it also shows the action qualifier active and shadow buffers
|
||
|
|
let xcmp_RegArr = device_driverlib_peripheral.EPWM_XCMPReg.slice(0,8);
|
||
|
|
let xcmp_Shdw1RegArr = device_driverlib_peripheral.EPWM_XCMPReg.slice(9,17);
|
||
|
|
let xcmp_Shdw2RegArr = device_driverlib_peripheral.EPWM_XCMPReg.slice(18,26);
|
||
|
|
let xcmp_Shdw3RegArr = device_driverlib_peripheral.EPWM_XCMPReg.slice(27,35);
|
||
|
|
for(var xcmp_Reg_Index in xcmp_RegArr)
|
||
|
|
{
|
||
|
|
if(xcmp_Reg_Index >= startIndex && xcmp_Reg_Index < stopIndex)
|
||
|
|
{
|
||
|
|
ui["epwmXCMP_set" + reg_name + "_" + xcmp_RegArr[xcmp_Reg_Index].name.replace("EPWM_", "")].hidden = false;
|
||
|
|
ui["epwmXCMP_set" + reg_name + "_" + xcmp_Shdw1RegArr[xcmp_Reg_Index].name.replace("EPWM_", "")].hidden = false;
|
||
|
|
ui["epwmXCMP_set" + reg_name + "_" + xcmp_Shdw2RegArr[xcmp_Reg_Index].name.replace("EPWM_", "")].hidden = false;
|
||
|
|
ui["epwmXCMP_set" + reg_name + "_" + xcmp_Shdw3RegArr[xcmp_Reg_Index].name.replace("EPWM_", "")].hidden = false;
|
||
|
|
|
||
|
|
}else
|
||
|
|
{
|
||
|
|
ui["epwmXCMP_set" + reg_name + "_" + xcmp_RegArr[xcmp_Reg_Index].name.replace("EPWM_", "")].hidden = true;
|
||
|
|
ui["epwmXCMP_set" + reg_name + "_" + xcmp_Shdw1RegArr[xcmp_Reg_Index].name.replace("EPWM_", "")].hidden = true;
|
||
|
|
ui["epwmXCMP_set" + reg_name + "_" + xcmp_Shdw2RegArr[xcmp_Reg_Index].name.replace("EPWM_", "")].hidden = true;
|
||
|
|
ui["epwmXCMP_set" + reg_name + "_" + xcmp_Shdw3RegArr[xcmp_Reg_Index].name.replace("EPWM_", "")].hidden = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
// show action qualifier events when user chooses
|
||
|
|
for(var xcmp_set_index in device_driverlib_peripheral.EPWM_XCMP)
|
||
|
|
{
|
||
|
|
let xcmp_set = device_driverlib_peripheral.EPWM_XCMP[xcmp_set_index];
|
||
|
|
for(var xcmp_aq_events_index in device_driverlib_peripheral.EPWM_XCMPActionQualifierOutputEvent)
|
||
|
|
{
|
||
|
|
if(xcmp_aq_events_index >= startIndex && xcmp_aq_events_index < stopIndex)
|
||
|
|
{
|
||
|
|
let xcmp_aq_events = device_driverlib_peripheral.EPWM_XCMPActionQualifierOutputEvent[xcmp_aq_events_index];
|
||
|
|
if(reg_name == "XCMPA")
|
||
|
|
{
|
||
|
|
ui[reg_name + "_" + xcmp_set.name.replace("EPWM_XCMP_", "") + xcmp_aq_events.name.replace("EPWM_AQ", "")].hidden = false;
|
||
|
|
}else if(reg_name == "XCMPB")
|
||
|
|
{
|
||
|
|
ui[ reg_name + "_" + xcmp_set.name.replace("EPWM_XCMP_", "") + xcmp_aq_events.name.replace("EPWM_AQ", "")].hidden = false;
|
||
|
|
}
|
||
|
|
}else
|
||
|
|
{
|
||
|
|
let xcmp_aq_events = device_driverlib_peripheral.EPWM_XCMPActionQualifierOutputEvent[xcmp_aq_events_index];
|
||
|
|
if((xcmp_aq_events.name == "EPWM_AQ_OUTPUT_ON_TIMEBASE_XCMP1" || xcmp_aq_events.name == "EPWM_AQ_OUTPUT_ON_TIMEBASE_XCMP2" ||
|
||
|
|
xcmp_aq_events.name == "EPWM_AQ_OUTPUT_ON_TIMEBASE_XCMP3" || xcmp_aq_events.name == "EPWM_AQ_OUTPUT_ON_TIMEBASE_XCMP4") && reg_name == "XCMPB")
|
||
|
|
{
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
if(reg_name == "XCMPA")
|
||
|
|
{
|
||
|
|
ui[ reg_name + "_" + xcmp_set.name.replace("EPWM_XCMP_", "") + xcmp_aq_events.name.replace("EPWM_AQ", "")].hidden = true;
|
||
|
|
}else if(reg_name == "XCMPB")
|
||
|
|
{
|
||
|
|
ui[ reg_name + "_" + xcmp_set.name.replace("EPWM_XCMP_", "") + xcmp_aq_events.name.replace("EPWM_AQ", "")].hidden = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
// Add higher level before calling on change allocate registers
|
||
|
|
|
||
|
|
function setAllocateRegistersXCMPANoSplitorSplit(inst, ui)
|
||
|
|
{
|
||
|
|
if(inst["epwmXCMP_selectAllocationXCMPA_NoSplitorSplit"] == "EPWM_XCMP_NONE_CMPA")
|
||
|
|
{
|
||
|
|
onChangeActiveAndShdwRegistersConfig(inst, ui, "XCMPA", 0, 0);
|
||
|
|
}
|
||
|
|
if(inst["epwmXCMP_selectAllocationXCMPA_NoSplitorSplit"] == "EPWM_XCMP_1_CMPA")
|
||
|
|
{
|
||
|
|
onChangeActiveAndShdwRegistersConfig(inst, ui, "XCMPA", 0, 1);
|
||
|
|
}
|
||
|
|
if(inst["epwmXCMP_selectAllocationXCMPA_NoSplitorSplit"] == "EPWM_XCMP_2_CMPA")
|
||
|
|
{
|
||
|
|
onChangeActiveAndShdwRegistersConfig(inst, ui, "XCMPA", 0, 2);
|
||
|
|
}
|
||
|
|
if(inst["epwmXCMP_selectAllocationXCMPA_NoSplitorSplit"] == "EPWM_XCMP_3_CMPA")
|
||
|
|
{
|
||
|
|
onChangeActiveAndShdwRegistersConfig(inst, ui, "XCMPA", 0, 3);
|
||
|
|
}
|
||
|
|
if(inst["epwmXCMP_selectAllocationXCMPA_NoSplitorSplit"] == "EPWM_XCMP_4_CMPA")
|
||
|
|
{
|
||
|
|
onChangeActiveAndShdwRegistersConfig(inst, ui, "XCMPA", 0, 4);
|
||
|
|
}
|
||
|
|
if(inst["epwmXCMP_selectAllocationXCMPA_NoSplitorSplit"] == "EPWM_XCMP_5_CMPA" && !inst.epwmXCMP_RegisterSplit_enable)
|
||
|
|
{
|
||
|
|
onChangeActiveAndShdwRegistersConfig(inst, ui, "XCMPA", 0, 5);
|
||
|
|
}
|
||
|
|
if(inst["epwmXCMP_selectAllocationXCMPA_NoSplitorSplit"] == "EPWM_XCMP_6_CMPA" && !inst.epwmXCMP_RegisterSplit_enable)
|
||
|
|
{
|
||
|
|
onChangeActiveAndShdwRegistersConfig(inst, ui, "XCMPA", 0, 6);
|
||
|
|
}
|
||
|
|
if(inst["epwmXCMP_selectAllocationXCMPA_NoSplitorSplit"] == "EPWM_XCMP_7_CMPA" && !inst.epwmXCMP_RegisterSplit_enable)
|
||
|
|
{
|
||
|
|
onChangeActiveAndShdwRegistersConfig(inst, ui, "XCMPA", 0, 7);
|
||
|
|
}
|
||
|
|
if(inst["epwmXCMP_selectAllocationXCMPA_NoSplitorSplit"] == "EPWM_XCMP_8_CMPA" && !inst.epwmXCMP_RegisterSplit_enable)
|
||
|
|
{
|
||
|
|
onChangeActiveAndShdwRegistersConfig(inst, ui, "XCMPA", 0, 8);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function setAllocateRegistersSplitXCMPB(inst, ui)
|
||
|
|
{
|
||
|
|
if(inst["epwmXCMP_selectAllocationXCMPB_Split"] == "EPWM_XCMP_5_CMPB")
|
||
|
|
{
|
||
|
|
onChangeActiveAndShdwRegistersConfig(inst, ui, "XCMPB", 4, 5);
|
||
|
|
}
|
||
|
|
if(inst["epwmXCMP_selectAllocationXCMPB_Split"] == "EPWM_XCMP_6_CMPB")
|
||
|
|
{
|
||
|
|
onChangeActiveAndShdwRegistersConfig(inst, ui, "XCMPB", 4, 6);
|
||
|
|
}
|
||
|
|
if(inst["epwmXCMP_selectAllocationXCMPB_Split"] == "EPWM_XCMP_7_CMPB")
|
||
|
|
{
|
||
|
|
onChangeActiveAndShdwRegistersConfig(inst, ui, "XCMPB", 4, 7);
|
||
|
|
}
|
||
|
|
if(inst["epwmXCMP_selectAllocationXCMPB_Split"] == "EPWM_XCMP_8_CMPB")
|
||
|
|
{
|
||
|
|
onChangeActiveAndShdwRegistersConfig(inst, ui, "XCMPB", 4, 8);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
function hideXCMPregisters(inst, ui, reg_name)
|
||
|
|
{
|
||
|
|
let xcmp_RegArr = device_driverlib_peripheral.EPWM_XCMPReg.slice(0, 8);
|
||
|
|
// hide active register
|
||
|
|
for(var xcmp_Reg_Index in xcmp_RegArr)
|
||
|
|
{
|
||
|
|
if(reg_name == "XCMPC" || reg_name == "XCMPD")
|
||
|
|
{
|
||
|
|
ui["epwmXCMP_set" + reg_name].hidden = true;
|
||
|
|
inst["epwmXCMP_set" + reg_name] = 0;
|
||
|
|
}else
|
||
|
|
{
|
||
|
|
ui["epwmXCMP_set" + reg_name + "_" + xcmp_RegArr[xcmp_Reg_Index].name.replace("EPWM_", "")].hidden = true;
|
||
|
|
inst["epwmXCMP_set" + reg_name + "_" + xcmp_RegArr[xcmp_Reg_Index].name.replace("EPWM_", "")] = 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
xcmp_RegArr = device_driverlib_peripheral.EPWM_XCMPReg.slice(9,17);
|
||
|
|
// hide shadow buffer set 1
|
||
|
|
for(var xcmp_Reg_Index in xcmp_RegArr)
|
||
|
|
{
|
||
|
|
if(reg_name == "XCMPC" || reg_name == "XCMPD")
|
||
|
|
{
|
||
|
|
ui["epwmXCMP_setShadowRegisters1" + reg_name].hidden = true;
|
||
|
|
inst["epwmXCMP_setShadowRegisters1" + reg_name] = 0;
|
||
|
|
}else
|
||
|
|
{
|
||
|
|
ui["epwmXCMP_set" + reg_name + "_" + xcmp_RegArr[xcmp_Reg_Index].name.replace("EPWM_", "")].hidden = true;
|
||
|
|
inst["epwmXCMP_set" + reg_name + "_" + xcmp_RegArr[xcmp_Reg_Index].name.replace("EPWM_", "")] = 0;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
xcmp_RegArr = device_driverlib_peripheral.EPWM_XCMPReg.slice(18,26);
|
||
|
|
// hide shadow buffer set 2
|
||
|
|
for(var xcmp_Reg_Index in xcmp_RegArr)
|
||
|
|
{
|
||
|
|
if(reg_name == "XCMPC" || reg_name == "XCMPD")
|
||
|
|
{
|
||
|
|
ui["epwmXCMP_setShadowRegisters2" + reg_name].hidden = true;
|
||
|
|
inst["epwmXCMP_setShadowRegisters2" + reg_name] = 0;
|
||
|
|
|
||
|
|
}else
|
||
|
|
{
|
||
|
|
ui["epwmXCMP_set" + reg_name + "_" + xcmp_RegArr[xcmp_Reg_Index].name.replace("EPWM_", "")].hidden = true;
|
||
|
|
inst["epwmXCMP_set" + reg_name + "_" + xcmp_RegArr[xcmp_Reg_Index].name.replace("EPWM_", "")] = 0;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
xcmp_RegArr = device_driverlib_peripheral.EPWM_XCMPReg.slice(27,35);
|
||
|
|
// hide shadow buffer set 3
|
||
|
|
for(var xcmp_Reg_Index in xcmp_RegArr)
|
||
|
|
{
|
||
|
|
if(reg_name == "XCMPC" || reg_name == "XCMPD")
|
||
|
|
{
|
||
|
|
ui["epwmXCMP_setShadowRegisters3" + reg_name].hidden = true;
|
||
|
|
inst["epwmXCMP_setShadowRegisters3" + reg_name] = 0;
|
||
|
|
}else
|
||
|
|
{
|
||
|
|
ui["epwmXCMP_set" + reg_name + "_" + xcmp_RegArr[xcmp_Reg_Index].name.replace("EPWM_", "")].hidden = true;
|
||
|
|
inst["epwmXCMP_set" + reg_name + "_" + xcmp_RegArr[xcmp_Reg_Index].name.replace("EPWM_", "")] = 0;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Hide action qualifier events
|
||
|
|
for(var xcmp_set_index in device_driverlib_peripheral.EPWM_XCMP)
|
||
|
|
{
|
||
|
|
let xcmp_set = device_driverlib_peripheral.EPWM_XCMP[xcmp_set_index];
|
||
|
|
for(var xcmp_aq_events_index in device_driverlib_peripheral.EPWM_XCMPActionQualifierOutputEvent)
|
||
|
|
{
|
||
|
|
let xcmp_aq_events = device_driverlib_peripheral.EPWM_XCMPActionQualifierOutputEvent[xcmp_aq_events_index];
|
||
|
|
if((xcmp_aq_events.name == "EPWM_AQ_OUTPUT_ON_TIMEBASE_XCMP1" || xcmp_aq_events.name == "EPWM_AQ_OUTPUT_ON_TIMEBASE_XCMP2" ||
|
||
|
|
xcmp_aq_events.name == "EPWM_AQ_OUTPUT_ON_TIMEBASE_XCMP3" || xcmp_aq_events.name == "EPWM_AQ_OUTPUT_ON_TIMEBASE_XCMP4") && reg_name == "XCMPB")
|
||
|
|
{
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
// No action qualifiers for cmpc/cmpd
|
||
|
|
if(reg_name == "XCMPC" || reg_name == "XCMPD"){
|
||
|
|
break;
|
||
|
|
}else
|
||
|
|
{
|
||
|
|
if(reg_name == "XCMPA")
|
||
|
|
{
|
||
|
|
ui[ reg_name + "_" + xcmp_set.name.replace("EPWM_XCMP_", "") + xcmp_aq_events.name.replace("EPWM_AQ", "")].hidden = true;
|
||
|
|
inst[ reg_name + "_" + xcmp_set.name.replace("EPWM_XCMP_", "") + xcmp_aq_events.name.replace("EPWM_AQ", "")] = "EPWM_AQ_OUTPUT_NO_CHANGE";
|
||
|
|
}else if(reg_name == "XCMPB")
|
||
|
|
{
|
||
|
|
ui[reg_name + "_" + xcmp_set.name.replace("EPWM_XCMP_", "") + xcmp_aq_events.name.replace("EPWM_AQ", "")].hidden = true;
|
||
|
|
inst[ reg_name + "_" + xcmp_set.name.replace("EPWM_XCMP_", "") + xcmp_aq_events.name.replace("EPWM_AQ", "")] = "EPWM_AQ_OUTPUT_NO_CHANGE";
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function onChangeEnableDisable(inst, ui)
|
||
|
|
{
|
||
|
|
if(inst.epwmXCMP_enable)
|
||
|
|
{
|
||
|
|
|
||
|
|
// show check box to enable split
|
||
|
|
ui["epwmXCMP_RegisterSplit_enable"].hidden = false;
|
||
|
|
// show XCMPA since that will be default option when split or no split is chosen
|
||
|
|
ui["epwmXCMP_selectAllocationXCMPA_NoSplitorSplit"].hidden = false;
|
||
|
|
|
||
|
|
// show XTBPRD options
|
||
|
|
ui["epwmXCMP_setRegisters_XTBPRD"].hidden = false;
|
||
|
|
ui["epwmXCMP_setShadowRegisters1_XTBPRD"].hidden = false;
|
||
|
|
ui["epwmXCMP_setShadowRegisters2_XTBPRD"].hidden = false;
|
||
|
|
ui["epwmXCMP_setShadowRegisters3_XTBPRD"].hidden = false;
|
||
|
|
|
||
|
|
// show XMINMAX options
|
||
|
|
ui["epwmXCMP_setRegisters_XMIN"].hidden = false;
|
||
|
|
ui["epwmXCMP_setShadowRegisters1_XMIN"].hidden = false;
|
||
|
|
ui["epwmXCMP_setShadowRegisters2_XMIN"].hidden = false;
|
||
|
|
ui["epwmXCMP_setShadowRegisters3_XMIN"].hidden = false;
|
||
|
|
ui["epwmXCMP_setRegisters_XMAX"].hidden = false;
|
||
|
|
ui["epwmXCMP_setShadowRegisters1_XMAX"].hidden = false;
|
||
|
|
ui["epwmXCMP_setShadowRegisters2_XMAX"].hidden = false;
|
||
|
|
ui["epwmXCMP_setShadowRegisters3_XMAX"].hidden = false;
|
||
|
|
// show xcmpa load options
|
||
|
|
ui["epwmXCMP_RegisterFrcLoad_enable"].hidden = false;
|
||
|
|
ui["epwmXCMP_selectLoadMode"].hidden = false;
|
||
|
|
ui["epwmXCMP_selectShadowRegisterLevelLoad"].hidden = false;
|
||
|
|
ui["epwmXCMP_selectNumberShadowRegisterLevels"].hidden = false;
|
||
|
|
ui["epwmXCMP_selectRepeatCountShadowRegisterLevel2"].hidden = false;
|
||
|
|
ui["epwmXCMP_selectRepeatCountShadowRegisterLevel3"].hidden = false;
|
||
|
|
// show xmpc load options
|
||
|
|
ui["epwmXCMP_setShadowRegisters1XCMPC"].hidden = false;
|
||
|
|
ui["epwmXCMP_setXCMPC"].hidden = false;
|
||
|
|
ui["epwmXCMP_setShadowRegisters2XCMPC"].hidden = false;
|
||
|
|
ui["epwmXCMP_setShadowRegisters3XCMPC"].hidden = false;
|
||
|
|
|
||
|
|
// show xmpd load options
|
||
|
|
ui["epwmXCMP_setShadowRegisters1XCMPD"].hidden = false;
|
||
|
|
ui["epwmXCMP_setXCMPD"].hidden = false;
|
||
|
|
ui["epwmXCMP_setShadowRegisters2XCMPD"].hidden = false;
|
||
|
|
ui["epwmXCMP_setShadowRegisters3XCMPD"].hidden = false;
|
||
|
|
// show xcmp loading for all
|
||
|
|
ui["epwmXCMP_RegisterLoad_enable"].hidden = false;
|
||
|
|
if(inst.epwmXCMP_RegisterSplit_enable)
|
||
|
|
{
|
||
|
|
// if split is enabled, show XCMPB options, show XCMPA split options
|
||
|
|
ui["epwmXCMP_selectAllocationXCMPA_NoSplitorSplit"].hidden = false;
|
||
|
|
ui["epwmXCMP_selectAllocationXCMPB_Split"].hidden = false;
|
||
|
|
// show load options for xcmpb
|
||
|
|
setAllocateRegistersXCMPANoSplitorSplit(inst, ui);
|
||
|
|
setAllocateRegistersSplitXCMPB(inst, ui);
|
||
|
|
}else if(!inst.epwmXCMP_RegisterSplit_enable)
|
||
|
|
{
|
||
|
|
ui["epwmXCMP_selectAllocationXCMPA_NoSplitorSplit"].hidden = false;
|
||
|
|
// if split is not enabled, hide XCMPB options
|
||
|
|
ui["epwmXCMP_selectAllocationXCMPB_Split"].hidden = true;
|
||
|
|
inst.epwmXCMP_selectAllocationXCMPB_Split = "EPWM_XCMP_5_CMPB";
|
||
|
|
setAllocateRegistersXCMPANoSplitorSplit(inst, ui);
|
||
|
|
hideXCMPregisters(inst, ui, "XCMPB");
|
||
|
|
|
||
|
|
}
|
||
|
|
}else
|
||
|
|
{
|
||
|
|
// reset settings
|
||
|
|
// hide all the xcmpa split and no split options, set split enabled to false when XCMP mode is disabled
|
||
|
|
inst.epwmXCMP_RegisterSplit_enable = false;
|
||
|
|
inst.epwmXCMP_selectAllocationXCMPA_NoSplitorSplit = "EPWM_XCMP_NONE_CMPA";
|
||
|
|
inst.epwmXCMP_selectAllocationXCMPB_Split = "EPWM_XCMP_5_CMPB";
|
||
|
|
ui["epwmXCMP_selectAllocationXCMPA_NoSplitorSplit"].hidden = true;
|
||
|
|
// hide all the xcmpb split options
|
||
|
|
ui["epwmXCMP_selectAllocationXCMPB_Split"].hidden = true;
|
||
|
|
ui["epwmXCMP_RegisterSplit_enable"].hidden = true;
|
||
|
|
|
||
|
|
// hide all the loading options XCMPA, set the default load mode to load once for all xcmpc registers
|
||
|
|
inst.epwmXCMP_selectAllocationXCMPA_NoSplitorSplit = "EPWM_XCMP_NONE_CMPA";
|
||
|
|
inst.epwmXCMP_selectNumberShadowRegisterLevels = "EPWM_XCMP_XLOADCTL_SHDWLEVEL_0";
|
||
|
|
inst["epwmXCMP_selectLoadMode"] = "EPWM_XCMP_XLOADCTL_LOADMODE_LOADONCE";
|
||
|
|
inst.epwmXCMP_selectShadowRegisterLevelLoad = "EPWM_XCMP_XLOADCTL_SHDWBUFPTR_NULL";
|
||
|
|
inst.epwmXCMP_selectRepeatCountShadowRegisterLevel2 = "1";
|
||
|
|
inst.epwmXCMP_selectRepeatCountShadowRegisterLevel3 = "1";
|
||
|
|
inst.epwmXCMP_RegisterFrcLoad_enable = false;
|
||
|
|
|
||
|
|
ui["epwmXCMP_RegisterFrcLoad_enable"].hidden = true;
|
||
|
|
ui["epwmXCMP_selectLoadMode"].hidden = true;
|
||
|
|
ui["epwmXCMP_selectShadowRegisterLevelLoad"].hidden = true;
|
||
|
|
ui["epwmXCMP_selectNumberShadowRegisterLevels"].hidden = true;
|
||
|
|
ui["epwmXCMP_selectRepeatCountShadowRegisterLevel2"].hidden = true;
|
||
|
|
ui["epwmXCMP_selectRepeatCountShadowRegisterLevel3"].hidden = true;
|
||
|
|
// hide all set register options and hide all AQ event output configurations
|
||
|
|
hideXCMPregisters(inst, ui, "XCMPA");
|
||
|
|
hideXCMPregisters(inst, ui, "XCMPB");
|
||
|
|
hideXCMPregisters(inst, ui, "XCMPC");
|
||
|
|
hideXCMPregisters(inst, ui, "XCMPD");
|
||
|
|
// hide all tbprd options
|
||
|
|
ui["epwmXCMP_setRegisters_XTBPRD"].hidden = true;
|
||
|
|
ui["epwmXCMP_setShadowRegisters1_XTBPRD"].hidden = true;
|
||
|
|
ui["epwmXCMP_setShadowRegisters2_XTBPRD"].hidden = true;
|
||
|
|
ui["epwmXCMP_setShadowRegisters3_XTBPRD"].hidden = true;
|
||
|
|
inst["epwmXCMP_setRegisters_XTBPRD"] = 0;
|
||
|
|
inst["epwmXCMP_setShadowRegisters1_XTBPRD"] = 0;
|
||
|
|
inst["epwmXCMP_setShadowRegisters2_XTBPRD"] = 0;
|
||
|
|
inst["epwmXCMP_setShadowRegisters3_XTBPRD"] = 0;
|
||
|
|
// show XMINMAX options
|
||
|
|
ui["epwmXCMP_setRegisters_XMIN"].hidden = true;
|
||
|
|
ui["epwmXCMP_setShadowRegisters1_XMIN"].hidden = true;
|
||
|
|
ui["epwmXCMP_setShadowRegisters2_XMIN"].hidden = true;
|
||
|
|
ui["epwmXCMP_setShadowRegisters3_XMIN"].hidden = true;
|
||
|
|
ui["epwmXCMP_setRegisters_XMAX"].hidden = true;
|
||
|
|
ui["epwmXCMP_setShadowRegisters1_XMAX"].hidden = true;
|
||
|
|
ui["epwmXCMP_setShadowRegisters2_XMAX"].hidden = true;
|
||
|
|
ui["epwmXCMP_setShadowRegisters3_XMAX"].hidden = true;
|
||
|
|
inst["epwmXCMP_setRegisters_XMIN"] = 0;
|
||
|
|
inst["epwmXCMP_setShadowRegisters1_XMIN"] = 0;
|
||
|
|
inst["epwmXCMP_setShadowRegisters2_XMIN"] = 0;
|
||
|
|
inst["epwmXCMP_setShadowRegisters3_XMIN"] = 0;
|
||
|
|
inst["epwmXCMP_setRegisters_XMAX"] = 0;
|
||
|
|
inst["epwmXCMP_setShadowRegisters1_XMAX"] = 0;
|
||
|
|
inst["epwmXCMP_setShadowRegisters2_XMAX"] = 0;
|
||
|
|
inst["epwmXCMP_setShadowRegisters3_XMAX"] = 0;
|
||
|
|
// hide all xmp load
|
||
|
|
ui["epwmXCMP_RegisterLoad_enable"].hidden = true;
|
||
|
|
inst.epwmXCMP_RegisterLoad_enable = false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function onChangeLoadMode(inst, ui)
|
||
|
|
{
|
||
|
|
if(inst.epwmXCMP_selectLoadMode == "EPWM_XCMP_XLOADCTL_LOADMODE_LOADONCE" && inst.epwmXCMP_RegisterLoadXCMPA_enable)
|
||
|
|
{
|
||
|
|
ui["epwmXCMP_selectShadowRegisterLevelLoad"].hidden = false;
|
||
|
|
}
|
||
|
|
else if(inst.epwmXCMP_selectLoadModeXCMPB == "EPWM_XCMP_XLOADCTL_LOADMODE_LOADONCE" && inst.epwmXCMP_RegisterLoadXCMPB_enable)
|
||
|
|
{
|
||
|
|
ui["epwmXCMP_selectShadowRegisterLevelLoadXCMPB"].hidden = false;
|
||
|
|
}
|
||
|
|
else if(inst.epwmXCMP_selectLoadModeXCMPC == "EPWM_XCMP_XLOADCTL_LOADMODE_LOADONCE" && inst.epwmXCMP_RegisterLoadXCMPC_enable)
|
||
|
|
{
|
||
|
|
ui["epwmXCMP_selectShadowRegisterLevelLoadXCMPC"].hidden = false;
|
||
|
|
}
|
||
|
|
else if(inst.epwmXCMP_selectLoadModeXCMPD == "EPWM_XCMP_XLOADCTL_LOADMODE_LOADONCE" && inst.epwmXCMP_RegisterLoadXCMPD_enable)
|
||
|
|
{
|
||
|
|
ui["epwmXCMP_selectShadowRegisterLevelLoadXCMPD"].hidden = false;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
ui["epwmXCMP_selectShadowRegisterLevelLoad"].hidden = true;
|
||
|
|
ui["epwmXCMP_selectShadowRegisterLevelLoadXCMPB"].hidden = true;
|
||
|
|
ui["epwmXCMP_selectShadowRegisterLevelLoadXCMPC"].hidden = true;
|
||
|
|
ui["epwmXCMP_selectShadowRegisterLevelLoadXCMPD"].hidden = true;
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
var config = [
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_enable",
|
||
|
|
displayName: "Enable XCMP Mode",
|
||
|
|
description: "If XCMP mode is disabled, EPWM will behave like Type4",
|
||
|
|
hidden: false,
|
||
|
|
default: false,
|
||
|
|
onChange: onChangeEnableDisable
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_RegisterSplit_enable",
|
||
|
|
displayName: "Enable Split XCMP Registers",
|
||
|
|
description: "Split the XCMP registers between CMPA and CMPB. CMPA and CMPB can have max of 4 registers allocated. ",
|
||
|
|
hidden: true,
|
||
|
|
default: false,
|
||
|
|
onChange: onChangeEnableDisable
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_RegisterLoad_enable",
|
||
|
|
displayName: "Enable X Load",
|
||
|
|
description: "Enables register loading of shadow buffers for all XCMP registers",
|
||
|
|
hidden: true,
|
||
|
|
default: false,
|
||
|
|
onChange: onChangeEnableDisable
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_RegisterFrcLoad_enable",
|
||
|
|
displayName: "Force X Load",
|
||
|
|
description: "Software force register loading of shadow buffers for all XCMP registers",
|
||
|
|
hidden: true,
|
||
|
|
default: false,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_selectNumberShadowRegisterLevels",
|
||
|
|
displayName : "Number of Shadow Buffer Levels",
|
||
|
|
description : 'Number of shadow buffer levels to configure, you can use one or two or all 3 shadow buffer sets',
|
||
|
|
hidden : true,
|
||
|
|
default : device_driverlib_peripheral.EPWM_XCMP_XLOADCTL_SHDWLEVEL[0].name,
|
||
|
|
options : device_driverlib_peripheral.EPWM_XCMP_XLOADCTL_SHDWLEVEL,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_selectLoadMode",
|
||
|
|
displayName : "Load Mode",
|
||
|
|
description : 'Loading once will behave like type4. Loading Multiple will cycle through all shadow buffer sets and load them at the end of period.',
|
||
|
|
hidden : true,
|
||
|
|
default : device_driverlib_peripheral.EPWM_XCMPXloadCtlLoadMode[0].name,
|
||
|
|
options : device_driverlib_peripheral.EPWM_XCMPXloadCtlLoadMode,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_selectShadowRegisterLevelLoad",
|
||
|
|
displayName : "Shadow Buffer Level to Load Once",
|
||
|
|
description : 'Can load to active registers from either shadow buffer set 3, 2 or 1 first',
|
||
|
|
hidden : true,
|
||
|
|
default : device_driverlib_peripheral.EPWM_XCMP_XLOADCTL_SHDWBUFPTR[0].name,
|
||
|
|
options : device_driverlib_peripheral.EPWM_XCMP_XLOADCTL_SHDWBUFPTR,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_selectRepeatCountShadowRegisterLevel2",
|
||
|
|
displayName : "Number of Times to Repeat Shadow Buffer Set 2",
|
||
|
|
description : 'Number of times to repeat a shadow buffer set each PWM cycle, can only be applied to shadow set 2 and 3',
|
||
|
|
hidden : true,
|
||
|
|
default : shadowRegisterReloadNumberofTimesOptions[0].name,
|
||
|
|
options : shadowRegisterReloadNumberofTimesOptions
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_selectRepeatCountShadowRegisterLevel3",
|
||
|
|
displayName : "Number of Times to Repeat Shadow Buffer Set 3",
|
||
|
|
description : 'Number of times to repeat a shadow buffer set each PWM cycle, can only be applied to shadow set 2 and 3',
|
||
|
|
hidden : true,
|
||
|
|
default : shadowRegisterReloadNumberofTimesOptions[0].name,
|
||
|
|
options : shadowRegisterReloadNumberofTimesOptions
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "GROUP_XCMPA",
|
||
|
|
displayName: "XCMPA",
|
||
|
|
description: "",
|
||
|
|
longDescription: "",
|
||
|
|
config: [
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_selectAllocationXCMPA_NoSplitorSplit",
|
||
|
|
displayName : "XCMP Registers to Allocate",
|
||
|
|
description : 'XCMP registers can use all 8 XCMPA registers or can use a selection of the 8 XCMPA registers',
|
||
|
|
hidden : true,
|
||
|
|
default : device_driverlib_peripheral.EPWM_XCMP_ALLOC_CMPA[0].name,
|
||
|
|
options : device_driverlib_peripheral.EPWM_XCMP_ALLOC_CMPA,
|
||
|
|
onChange : onChangeEnableDisable
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "GROUP_XCMPA_ACTIVE_REGISTERS",
|
||
|
|
displayName: "Active Registers",
|
||
|
|
description: "",
|
||
|
|
longDescription: "",
|
||
|
|
config: [
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "GROUP_XCMPA_SHDW_REGISTERS1",
|
||
|
|
displayName: "Shadow Buffer Set 1",
|
||
|
|
description: "",
|
||
|
|
longDescription: "",
|
||
|
|
config: [
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "GROUP_XCMPA_SHDW_REGISTERS2",
|
||
|
|
displayName: "Shadow Buffer Set 2",
|
||
|
|
description: "",
|
||
|
|
longDescription: "",
|
||
|
|
config: [
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "GROUP_XCMPA_SHDW_REGISTERS3",
|
||
|
|
displayName: "Shadow Buffer Set 3",
|
||
|
|
description: "",
|
||
|
|
longDescription: "",
|
||
|
|
config: [
|
||
|
|
]
|
||
|
|
},
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "GROUP_XCMPB",
|
||
|
|
displayName: "XCMPB",
|
||
|
|
description: "",
|
||
|
|
longDescription: "",
|
||
|
|
config: [
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_selectAllocationXCMPB_Split",
|
||
|
|
displayName : "XCMP Registers to Allocate",
|
||
|
|
description : 'XCMP registers can use all 8 XCMPA registers or can use a selection of the 8 XCMPA registers',
|
||
|
|
hidden : true,
|
||
|
|
default : device_driverlib_peripheral.EPWM_XCMP_ALLOC_CMPB[0].name,
|
||
|
|
options : device_driverlib_peripheral.EPWM_XCMP_ALLOC_CMPB,
|
||
|
|
onChange : onChangeEnableDisable
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "GROUP_XCMPB_ACTIVE_REGISTERS",
|
||
|
|
displayName: "Active Registers",
|
||
|
|
description: "",
|
||
|
|
longDescription: "",
|
||
|
|
config: [
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "GROUP_XCMPB_SHDW_REGISTERS1",
|
||
|
|
displayName: "Shadow Buffer Set 1",
|
||
|
|
description: "",
|
||
|
|
longDescription: "",
|
||
|
|
config: [
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "GROUP_XCMPB_SHDW_REGISTERS2",
|
||
|
|
displayName: "Shadow Buffer Set 2",
|
||
|
|
description: "",
|
||
|
|
longDescription: "",
|
||
|
|
config: [
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "GROUP_XCMPB_SHDW_REGISTERS3",
|
||
|
|
displayName: "Shadow Buffer Set 3",
|
||
|
|
description: "",
|
||
|
|
longDescription: "",
|
||
|
|
config: [
|
||
|
|
]
|
||
|
|
},
|
||
|
|
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "GROUP_XCMPC",
|
||
|
|
displayName: "XCMPC",
|
||
|
|
description: "",
|
||
|
|
longDescription: "",
|
||
|
|
config: [
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_setXCMPC",
|
||
|
|
displayName: "XCMPC active register value",
|
||
|
|
description: "Set Active Register to a value, XCMPC can only have one active register allocated to it",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_setShadowRegisters1XCMPC",
|
||
|
|
displayName: "XCMPC Shadow 1",
|
||
|
|
description: "Set shadow buffer 1 to a value, this value will be loaded every PWM Cycle",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_setShadowRegisters2XCMPC",
|
||
|
|
displayName: "XCMPC Shadow 2",
|
||
|
|
description: "Set shadow buffer 2 to a value, this value will be loaded every PWM Cycle",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_setShadowRegisters3XCMPC",
|
||
|
|
displayName: "XCMPC Shadow 3",
|
||
|
|
description: "Set shadow buffer 3 to a value, this value will be loaded every PWM Cycle",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
},
|
||
|
|
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "GROUP_XCMPD",
|
||
|
|
displayName: "XCMPD",
|
||
|
|
description: "",
|
||
|
|
longDescription: "",
|
||
|
|
config: [
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_setXCMPD",
|
||
|
|
displayName: "XCMPD active register value",
|
||
|
|
description: "Set Active Register to a value, XCMPD can only have one active register allocated to it",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_setShadowRegisters1XCMPD",
|
||
|
|
displayName: "XCMPD Shadow 1",
|
||
|
|
description: "Set shadow buffer 1 to a value, this value will be loaded every PWM Cycle",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_setShadowRegisters2XCMPD",
|
||
|
|
displayName: "XCMPD Shadow 2",
|
||
|
|
description: "Set shadow buffer 2 to a value, this value will be loaded every PWM Cycle",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_setShadowRegisters3XCMPD",
|
||
|
|
displayName: "XCMPD Shadow 3",
|
||
|
|
description: "Set shadow buffer 3 to a value, this value will be loaded every PWM Cycle",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
},
|
||
|
|
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "GROUP_XTBPRD",
|
||
|
|
displayName: "XTBPRD Configuration",
|
||
|
|
description: "",
|
||
|
|
longDescription: "XTBPRD will be used instead of TBPRD in type5, this includes having 3 shadow buffer sets and 1 active register",
|
||
|
|
config: [
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_setRegisters_XTBPRD",
|
||
|
|
displayName: "Time Base Period",
|
||
|
|
description: "Set XTBPRD Register to a value, during XCMP mode TBPRD is replaced with XTBPRD",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_setShadowRegisters1_XTBPRD",
|
||
|
|
displayName: "Time Base Period Shadow 1",
|
||
|
|
description: "Set XTBPRD Shadow Buffer to a value",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_setShadowRegisters2_XTBPRD",
|
||
|
|
displayName: "Time Base Period Shadow 2",
|
||
|
|
description: "Set XTBPRD Shadow Buffer to a value",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_setShadowRegisters3_XTBPRD",
|
||
|
|
displayName: "Time Base Period Shadow 3",
|
||
|
|
description: "Set XTBPRD Shadow Buffer to a value",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "GROUP_AQ_XCMPA_A",
|
||
|
|
displayName: "ePWMxA Event Output Configuration (Action Qualifier)",
|
||
|
|
description: "",
|
||
|
|
longDescription: "",
|
||
|
|
config: [
|
||
|
|
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "GROUP_AQ_XCMPB_B",
|
||
|
|
displayName: "ePWMxB Event Output Configuration (Action Qualifier)",
|
||
|
|
description: "",
|
||
|
|
longDescription: "",
|
||
|
|
config: [
|
||
|
|
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "GROUP_XMINMAX",
|
||
|
|
displayName: "XMINMAX Configuration (Edge Detection)",
|
||
|
|
description: "",
|
||
|
|
longDescription: "XMIN and XMAX registers will be used to set a defined window to monitor an event and send out a trip event if event does not occur within window. Within Digital Compare, enable Use Event Detection",
|
||
|
|
config: [
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_setRegisters_XMIN",
|
||
|
|
displayName: "XMIN",
|
||
|
|
description: "Set XMIN Register to a value",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_setShadowRegisters1_XMIN",
|
||
|
|
displayName: "XMIN Shadow 1",
|
||
|
|
description: "Set XMIN Shadow Buffer to a value",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_setShadowRegisters2_XMIN",
|
||
|
|
displayName: "XMIN Shadow 2",
|
||
|
|
description: "Set XMIN Shadow Buffer to a value",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_setShadowRegisters3_XMIN",
|
||
|
|
displayName: "XMIN Shadow 3",
|
||
|
|
description: "Set XMIN Shadow Buffer to a value",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_setRegisters_XMAX",
|
||
|
|
displayName: "XMAX",
|
||
|
|
description: "Set XMINMAX Register to a value",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_setShadowRegisters1_XMAX",
|
||
|
|
displayName: "XMAX Shadow 1",
|
||
|
|
description: "Set XMINMAX Shadow Buffer to a value",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_setShadowRegisters2_XMAX",
|
||
|
|
displayName: "XMAX Shadow 2",
|
||
|
|
description: "Set XMINMAX Shadow Buffer to a value",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "epwmXCMP_setShadowRegisters3_XMAX",
|
||
|
|
displayName: "XMAX Shadow 3",
|
||
|
|
description: "Set XMINMAX Shadow Buffer to a value",
|
||
|
|
hidden: true,
|
||
|
|
default: 0,
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
|
||
|
|
];
|
||
|
|
// Generate the configuration for active, shadow buffers
|
||
|
|
let start_config_index = 1;
|
||
|
|
let start_xcmpa_config_index = 9;
|
||
|
|
let start_xcmpb_config_index = 10;
|
||
|
|
let start_xaq_config_index = 14;
|
||
|
|
config[start_xcmpa_config_index].config[start_config_index].config = config[start_xcmpa_config_index].config[start_config_index].config.concat(generateActiveRegistersConfig("XCMPA"));
|
||
|
|
config[start_xcmpa_config_index].config[start_config_index + 1].config = config[start_xcmpa_config_index].config[start_config_index + 1].config.concat(generateShadowRegisters1Config("XCMPA"));
|
||
|
|
config[start_xcmpa_config_index].config[start_config_index + 2].config = config[start_xcmpa_config_index].config[start_config_index + 2].config.concat(generateShadowRegisters2Config("XCMPA"));
|
||
|
|
config[start_xcmpa_config_index].config[start_config_index + 3].config = config[start_xcmpa_config_index].config[start_config_index + 3].config.concat(generateShadowRegisters3Config("XCMPA"));
|
||
|
|
|
||
|
|
config[start_xcmpb_config_index].config[start_config_index].config = config[start_xcmpb_config_index].config[start_config_index].config.concat(generateActiveRegistersConfig("XCMPB"));
|
||
|
|
config[start_xcmpb_config_index].config[start_config_index + 1].config = config[start_xcmpb_config_index].config[start_config_index + 1].config.concat(generateShadowRegisters1Config("XCMPB"));
|
||
|
|
config[start_xcmpb_config_index].config[start_config_index + 2].config = config[start_xcmpb_config_index].config[start_config_index + 2].config.concat(generateShadowRegisters2Config("XCMPB"));
|
||
|
|
config[start_xcmpb_config_index].config[start_config_index + 3].config = config[start_xcmpb_config_index].config[start_config_index + 3].config.concat(generateShadowRegisters3Config("XCMPB"));
|
||
|
|
|
||
|
|
// Generate the XAQ configs for epwmxA and epwmxB
|
||
|
|
config[start_xaq_config_index].config = config[start_xaq_config_index].config.concat(generateXAQConfig("XCMPA", "EPWMXA"));
|
||
|
|
config[start_xaq_config_index + 1].config = config[start_xaq_config_index + 1].config.concat(generateXAQConfig("XCMPB", "EPWMXB"));
|
||
|
|
var epwmXCMPmodeSubmodule = {
|
||
|
|
displayName: "EPWM XCMP Mode",
|
||
|
|
maxInstances: Common.peripheralCount("EPWM"),
|
||
|
|
defaultInstanceName: "EPWM_XCMP",
|
||
|
|
description: "Enhanced Pulse Width Modulator XCMP Mode Configuration",
|
||
|
|
config: config,
|
||
|
|
templates: {
|
||
|
|
boardc : "", //"/gpio/gpio.board.c.xdt",
|
||
|
|
boardh : ""//"/gpio/gpio.board.h.xdt"
|
||
|
|
},
|
||
|
|
};
|
||
|
|
|
||
|
|
|
||
|
|
exports = epwmXCMPmodeSubmodule;
|