c2000ware-core-sdk/driverlib/.meta/epwm/modules/epwm_timebase.js
2023-06-24 11:35:38 +05:30

234 lines
9.6 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");
let device_driverlib_hrpwm =
system.getScript("/driverlib/device_driverlib_peripherals/" +
Common.getDeviceName().toLowerCase() + "_hrpwm.js");
function onChangeEnableDisable(inst, ui)
{
if (inst.epwmTimebase_phaseEnable == true)
{
ui.epwmTimebase_phaseShift.hidden = false;
}
else if (inst.epwmTimebase_phaseEnable == false)
{
ui.epwmTimebase_phaseShift.hidden = true;
inst.epwmTimebase_phaseShift = 0; // Set default
}
if (inst.epwmTimebase_periodLoadMode == "EPWM_PERIOD_SHADOW_LOAD")
{
ui.epwmTimebase_periodLoadEvent.hidden = false;
}
else if (inst.epwmTimebase_periodLoadMode == "EPWM_PERIOD_DIRECT_LOAD")
{
ui.epwmTimebase_periodLoadEvent.hidden = true;
inst.epwmTimebase_periodLoadEvent = device_driverlib_peripheral.EPWM_PeriodShadowLoadMode[0].name; // Set default
}
if (inst.epwmTimebase_counterMode == "EPWM_COUNTER_MODE_UP_DOWN")
{
ui.epwmTimebase_counterModeAfterSync.hidden = false;
}
else if (inst.epwmTimebase_counterMode == "EPWM_COUNTER_MODE_UP" ||
inst.epwmTimebase_counterMode =="EPWM_COUNTER_MODE_DOWN" ||
inst.epwmTimebase_counterMode == "EPWM_COUNTER_MODE_STOP_FREEZE")
{
ui.epwmTimebase_counterModeAfterSync.hidden = true;
inst.epwmTimebase_counterModeAfterSync = device_driverlib_peripheral.EPWM_SyncCountMode[0].name;
}
}
var config = [
{
name : "epwmTimebase_emulationMode",
displayName : "Emulation Mode",
description : 'Behavior of the ePWM time-base counter during emulation events',
hidden : false,
default : device_driverlib_peripheral.EPWM_EmulationMode[0].name,
options : device_driverlib_peripheral.EPWM_EmulationMode
},
{
name: "epwmTimebase_clockDiv",
displayName : "Time Base Clock Divider",
description : 'CLKDIV: These bits select the time base clock pre-scale value, TBCLK = EPWMCLK/(HSPCLKDIV*CLKDIV)',
hidden : false,
default : device_driverlib_peripheral.EPWM_ClockDivider[0].name,
options : device_driverlib_peripheral.EPWM_ClockDivider,
},
{
name: "epwmTimebase_hsClockDiv",
displayName : "High Speed Clock Divider",
description : 'HSPCLKDIV: These bits determine part of the time-base clock pre-scale value, TBCLK = EPWMCLK/(HSPCLKDIV*CLKDIV)',
hidden : false,
default : "EPWM_HSCLOCK_DIVIDER_2",
options : device_driverlib_peripheral.EPWM_HSClockDivider,
},
{
name: "epwmTimebase_periodLoadMode",
displayName : "Time Base Period Load Mode",
description : 'Period load mode for the Time Base Counter Submodule',
hidden : false,
default : device_driverlib_peripheral.EPWM_PeriodLoadMode[0].name,
options : device_driverlib_peripheral.EPWM_PeriodLoadMode,
onChange : onChangeEnableDisable
},
{
name: "epwmTimebase_periodLoadEvent",
displayName : "Time Base Period Load Event",
description : 'Period load event for the Time Base Counter Submodule',
hidden : false,
default : device_driverlib_peripheral.EPWM_PeriodShadowLoadMode[0].name,
options : device_driverlib_peripheral.EPWM_PeriodShadowLoadMode,
},
{
name: "epwmTimebase_period",
displayName : "Time Base Period",
description : 'Period for the Time Base Counter Submodule',
hidden : false,
default : 0,
},
{
name: "epwmTimebase_periodLink",
displayName : "Time Base Period Link",
description : 'Simultaneous write to the current ePWM module PRD register',
hidden : false,
default : device_driverlib_peripheral.EPWM_CurrentLink[0].name,
options : device_driverlib_peripheral.EPWM_CurrentLink,
},
{
name: "epwmTimebase_periodGld",
displayName : "Enable Time Base Period Global Load",
description : 'Use global load configuration for PRD',
hidden : false,
default : false,
},
{
name: "epwmTimebase_counterValue",
displayName : "Initial Counter Value",
description : 'Initial Counter value for the Time Base Counter Submodule',
hidden : false,
default : 0,
},
{
name: "epwmTimebase_counterMode",
displayName : "Counter Mode",
description : 'Mode of the Counter value for the Time Base Counter Submodule',
hidden : false,
default : "EPWM_COUNTER_MODE_STOP_FREEZE",
options : device_driverlib_peripheral.EPWM_TimeBaseCountMode,
onChange : onChangeEnableDisable
},
{
name: "epwmTimebase_counterModeAfterSync",
displayName : 'Counter Mode After Sync',
description : 'The direction the time-base counter (TBCTR) will count after a synchronization event occurs',
hidden : true,
default : device_driverlib_peripheral.EPWM_SyncCountMode[0].name,
options : device_driverlib_peripheral.EPWM_SyncCountMode,
},
{
name: "epwmTimebase_phaseEnable",
displayName : "Enable Phase Shift Load",
description : 'Enable phase shift load for the Time Base Counter Submodule',
hidden : false,
default : false,
onChange : onChangeEnableDisable
},
{
name: "epwmTimebase_phaseShift",
displayName : 'Phase Shift Value',
description : 'Phase Shift Value for the Time Base Counter Submodule',
hidden : true,
default : 0,
},
{
name: "epwmTimebase_forceSyncPulse",
displayName : 'Force a Sync Pulse',
description : 'Force a sync pulse for the Time Base Counter Submodule',
hidden : false,
default : false,
},
{
name: "hrpwm_syncSource",
displayName : "PWMSYNC Source Select",
description : 'Selects the source of the EPWMSYNCPER signal that goes to the CMPSS and GPDAC',
hidden : false,
default : device_driverlib_hrpwm.HRPWM_SyncPulseSource[0].name,
options : device_driverlib_hrpwm.HRPWM_SyncPulseSource
},
];
if (["F2807x", "F2837xD", "F2837xS", "F28004x"].includes(Common.getDeviceName()))
{
config.splice(config.length - 1, 0,
{
name: "epwmTimebase_syncOutPulseMode",
displayName : "Sync Out Pulse",
description : 'Sync Out Pulse for the Time Base Counter Submodule',
hidden : false,
default : device_driverlib_peripheral.EPWM_SyncOutPulseMode[0].name,
options : device_driverlib_peripheral.EPWM_SyncOutPulseMode,
}
);
}
else
{
config.splice.apply(config, [config.length - 1, 0].concat([
{
name: "epwmTimebase_syncInPulseSource",
displayName : "Sync In Pulse Source",
description : 'Sync in Pulse for the Time Base Counter Submodule',
hidden : false,
default : device_driverlib_peripheral.EPWM_SyncInPulseSource[1].name,
options : device_driverlib_peripheral.EPWM_SyncInPulseSource,
},
{
name: "epwmTimebase_syncOutPulseMode",
displayName : "Sync Out Pulse",
description : 'Sync Out Pulse for the Time Base Counter Submodule',
hidden : false,
minSelections: 0,
default : [],
options : [
{ name: "EPWM_SYNC_OUT_PULSE_ON_SOFTWARE", displayName: "Software force generated EPWM sync-out pulse" },
{ name: "EPWM_SYNC_OUT_PULSE_ON_CNTR_ZERO", displayName: "Counter zero event generates EPWM sync-out pulse" },
{ name: "EPWM_SYNC_OUT_PULSE_ON_CNTR_COMPARE_B", displayName: "Counter equal to CMPB event generates EPWM sync-out pulse" },
{ name: "EPWM_SYNC_OUT_PULSE_ON_CNTR_COMPARE_C", displayName: "Counter equal to CMPC event generates EPWM sync-out pulse" },
{ name: "EPWM_SYNC_OUT_PULSE_ON_CNTR_COMPARE_D", displayName: "Counter equal to CMPD event generates EPWM sync-out pulse" },
{ name: "EPWM_SYNC_OUT_PULSE_ON_DCA_EVT1_SYNC", displayName: "DCA Event 1 Sync signal generates EPWM sync-out pulse" },
{ name: "EPWM_SYNC_OUT_PULSE_ON_DCB_EVT1_SYNC", displayName: "DCB Event 1 Sync signal generates EPWM sync-out pulse" },
{ name: "EPWM_SYNC_OUT_PULSE_ON_ALL", displayName: "Enable all the above sources" },
],
},
{
name: "epwmTimebase_oneShotSyncOutTrigger",
displayName : "One-Shot Sync Out Trigger",
description : 'One-Shot Sync Out Trigger for the Time Base Counter Submodule',
hidden : false,
default : device_driverlib_peripheral.EPWM_OneShotSyncOutTrigger[0].name,
options : device_driverlib_peripheral.EPWM_OneShotSyncOutTrigger,
},
]));
}
var epwmTimebaseSubmodule = {
displayName: "EPWM Time Base",
maxInstances: Common.peripheralCount("EPWM"),
defaultInstanceName: "EPWM_TB",
description: "Enhanced Pulse Width Modulator Time Base Counter",
config: config,
templates: {
boardc : "", //"/gpio/gpio.board.c.xdt",
boardh : ""//"/gpio/gpio.board.h.xdt"
},
};
exports = epwmTimebaseSubmodule;