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 : "EPWMxSYNCPER 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;