225 lines
8.2 KiB
JavaScript
225 lines
8.2 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() + "_erad.js");
|
||
|
|
|
||
|
|
let CTM_MODES = [
|
||
|
|
{name: "0", displayName: "Counter Mode"},
|
||
|
|
{name: "1", displayName: "Stopwatch Mode"}
|
||
|
|
];
|
||
|
|
if(["F2838x", "F28002x", "F28003x"].includes(system.deviceData.deviceId))
|
||
|
|
{
|
||
|
|
CTM_MODES.push({name: "3", displayName: "Cumulative Mode"})
|
||
|
|
}
|
||
|
|
|
||
|
|
let CLOCK_SOURCE = [
|
||
|
|
{name: "0", displayName: "CPU Cycles as source"},
|
||
|
|
{name: "1", displayName: "External events as source"}
|
||
|
|
];
|
||
|
|
|
||
|
|
let COUNT_MODE= [
|
||
|
|
{name: "ERAD_COUNTER_MODE_RISING_EDGE", displayName: "Count Rising Edges"},
|
||
|
|
{name: "ERAD_COUNTER_MODE_ACTIVE", displayName: "Count CPU cycles"}
|
||
|
|
];
|
||
|
|
|
||
|
|
let COUNTER_MODES = [
|
||
|
|
{name: "true", displayName: "Reset on match"},
|
||
|
|
{name: "false", displayName: "Continuous Mode"}
|
||
|
|
];
|
||
|
|
|
||
|
|
let COMMON_SIGNAL_SOURCES = [
|
||
|
|
{ name: "ERAD_EVENT_HWBP1", displayName: "BUSCOMP1"},
|
||
|
|
{ name: "ERAD_EVENT_HWBP2", displayName: "BUSCOMP2"},
|
||
|
|
{ name: "ERAD_EVENT_HWBP3", displayName: "BUSCOMP3"},
|
||
|
|
{ name: "ERAD_EVENT_HWBP4", displayName: "BUSCOMP4"},
|
||
|
|
{ name: "ERAD_EVENT_HWBP5", displayName: "BUSCOMP5"},
|
||
|
|
{ name: "ERAD_EVENT_HWBP6", displayName: "BUSCOMP6"},
|
||
|
|
{ name: "ERAD_EVENT_HWBP7", displayName: "BUSCOMP7"},
|
||
|
|
{ name: "ERAD_EVENT_HWBP8", displayName: "BUSCOMP8"},
|
||
|
|
{ name: "ERAD_EVENT_COUNTER1", displayName: "COUNTER1 EVENT"},
|
||
|
|
{ name: "ERAD_EVENT_COUNTER2", displayName: "COUNTER2 EVENT"},
|
||
|
|
{ name: "ERAD_EVENT_COUNTER3", displayName: "COUNTER3 EVENT"},
|
||
|
|
{ name: "ERAD_EVENT_COUNTER4", displayName: "COUNTER4 EVENT"},
|
||
|
|
{ name: "ERAD_EVENT_PIE_INT1", displayName: "PIE INT1"},
|
||
|
|
{ name: "ERAD_EVENT_PIE_INT2", displayName: "PIE INT2"},
|
||
|
|
{ name: "ERAD_EVENT_PIE_INT3", displayName: "PIE INT3"},
|
||
|
|
{ name: "ERAD_EVENT_PIE_INT4", displayName: "PIE INT4"},
|
||
|
|
{ name: "ERAD_EVENT_PIE_INT5", displayName: "PIE INT5"},
|
||
|
|
{ name: "ERAD_EVENT_PIE_INT6", displayName: "PIE INT6"},
|
||
|
|
{ name: "ERAD_EVENT_PIE_INT7", displayName: "PIE INT7"},
|
||
|
|
{ name: "ERAD_EVENT_PIE_INT8", displayName: "PIE INT8"},
|
||
|
|
{ name: "ERAD_EVENT_PIE_INT9", displayName: "PIE INT9"},
|
||
|
|
{ name: "ERAD_EVENT_PIE_INT10", displayName: "PIE INT10"},
|
||
|
|
{ name: "ERAD_EVENT_PIE_INT11", displayName: "PIE INT11"},
|
||
|
|
{ name: "ERAD_EVENT_PIE_INT12", displayName: "PIE INT12"},
|
||
|
|
{ name: "ERAD_EVENT_TIMER1_TINT1", displayName: "TIMER1 TINT1"},
|
||
|
|
{ name: "ERAD_EVENT_TIMER2_TINT2", displayName: "TIMER2 TINT2"},
|
||
|
|
{ name: "ERAD_EVENT_CLA_INTERRUPT1", displayName: "CLA INTERRUPT1"},
|
||
|
|
{ name: "ERAD_EVENT_CLA_INTERRUPT2", displayName: "CLA INTERRUPT2"},
|
||
|
|
{ name: "ERAD_EVENT_CLA_INTERRUPT3", displayName: "CLA INTERRUPT3"},
|
||
|
|
{ name: "ERAD_EVENT_CLA_INTERRUPT4", displayName: "CLA INTERRUPT4"},
|
||
|
|
{ name: "ERAD_EVENT_CLA_INTERRUPT5", displayName: "CLA INTERRUPT5"},
|
||
|
|
{ name: "ERAD_EVENT_CLA_INTERRUPT8", displayName: "CLA INTERRUPT8"}
|
||
|
|
]
|
||
|
|
|
||
|
|
function onChangeCTMMode(inst, ui)
|
||
|
|
{
|
||
|
|
for (var config_i in stopwatchModeConfig)
|
||
|
|
{
|
||
|
|
ui[stopwatchModeConfig[config_i].name].hidden = (inst.ctmMode == CTM_MODES[0].name);
|
||
|
|
}
|
||
|
|
for (var config_i in counterModeConfig)
|
||
|
|
{
|
||
|
|
ui[counterModeConfig[config_i].name].hidden = !(inst.ctmMode == CTM_MODES[0].name);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function onChangeClockSource(inst, ui)
|
||
|
|
{
|
||
|
|
ui.externalClockSource.hidden = (inst.clockSource == CLOCK_SOURCE[0].name);
|
||
|
|
ui.countMode.hidden = (inst.clockSource == CLOCK_SOURCE[0].name);
|
||
|
|
}
|
||
|
|
|
||
|
|
function onChangeUseExternalResetSource(inst, ui)
|
||
|
|
{
|
||
|
|
ui.externalResetSource.hidden = !inst.useExternalResetSource;
|
||
|
|
}
|
||
|
|
|
||
|
|
var config = [
|
||
|
|
{
|
||
|
|
name: "ctmMode",
|
||
|
|
displayName : "ERAD CTM Mode",
|
||
|
|
description : 'Mode of the CTM Module',
|
||
|
|
hidden : false,
|
||
|
|
default : CTM_MODES[0].name,
|
||
|
|
options : CTM_MODES,
|
||
|
|
onChange : onChangeCTMMode
|
||
|
|
}
|
||
|
|
];
|
||
|
|
|
||
|
|
var counterModeConfig = [
|
||
|
|
{
|
||
|
|
name : "counterPeriod",
|
||
|
|
displayName : "Counter Period",
|
||
|
|
description : "The reference value for the counter to count up to!",
|
||
|
|
default : 0
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name : "counterMode",
|
||
|
|
displayName : "Reset Counter on Match",
|
||
|
|
description : "Wether or not to reset the Counter when the COUNT matches the REF value",
|
||
|
|
default : false,
|
||
|
|
hidden : false
|
||
|
|
}
|
||
|
|
]
|
||
|
|
|
||
|
|
var stopwatchModeConfig = [
|
||
|
|
{
|
||
|
|
name : "swStart",
|
||
|
|
displayName : "Start Event Signal",
|
||
|
|
description : "The source to start the counter in order to increment on the clock source!",
|
||
|
|
default : device_driverlib_peripheral.ERAD_Counter_Input_Event[0].name,
|
||
|
|
options : device_driverlib_peripheral.ERAD_Counter_Input_Event,
|
||
|
|
hidden : true
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name : "swStop",
|
||
|
|
displayName : "Stop Event Signal",
|
||
|
|
description : "The source to stop the counter.",
|
||
|
|
default : device_driverlib_peripheral.ERAD_Counter_Input_Event[0].name,
|
||
|
|
options : device_driverlib_peripheral.ERAD_Counter_Input_Event,
|
||
|
|
hidden : true
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name : "swReferenceCount",
|
||
|
|
displayName : "Reference Counter Value",
|
||
|
|
description : "The reference value for the counter to generate a HALT or Interrupt!",
|
||
|
|
default : 0,
|
||
|
|
hidden : true
|
||
|
|
},
|
||
|
|
]
|
||
|
|
|
||
|
|
var commonConfig = [
|
||
|
|
{
|
||
|
|
name : "clockSource",
|
||
|
|
displayName : "Clock Source",
|
||
|
|
description : "The clock source used for incrementing the counter",
|
||
|
|
default : CLOCK_SOURCE[0].name,
|
||
|
|
options : CLOCK_SOURCE,
|
||
|
|
onChange : onChangeClockSource
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name : "externalClockSource",
|
||
|
|
displayName : "External Clock Source",
|
||
|
|
description : "The clock source used for incrementing the counter from external signals rising edge",
|
||
|
|
default : device_driverlib_peripheral.ERAD_Counter_Input_Event[0].name,
|
||
|
|
options : device_driverlib_peripheral.ERAD_Counter_Input_Event,
|
||
|
|
hidden : true
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name : "countMode",
|
||
|
|
displayName : "Count Mode",
|
||
|
|
description : "Choose to count Rising edges or Active duration",
|
||
|
|
default : COUNT_MODE[0].name,
|
||
|
|
options : COUNT_MODE,
|
||
|
|
hidden : true
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name : "useExternalResetSource",
|
||
|
|
displayName : "Use an External Reset Source",
|
||
|
|
description : "Whether or not to use an external reset source for the counter",
|
||
|
|
default : false,
|
||
|
|
onChange : onChangeUseExternalResetSource,
|
||
|
|
hidden : false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name : "externalResetSource",
|
||
|
|
displayName : "External Reset Source",
|
||
|
|
description : "The reset source used to set the counter to 0, coming from external signals rising edge",
|
||
|
|
default : device_driverlib_peripheral.ERAD_Counter_Input_Event[0].name,
|
||
|
|
options : device_driverlib_peripheral.ERAD_Counter_Input_Event,
|
||
|
|
hidden : true
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name : "haltCPU",
|
||
|
|
displayName : "Halt CPU on Count Match",
|
||
|
|
description : "Wether or not to halt the CPU when the COUNT matches the REF value",
|
||
|
|
default : false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name : "rtosInterrupt",
|
||
|
|
displayName : "Generate RTOS Interrupt on Count Match",
|
||
|
|
description : "Wether or not to generate RTOS interrupt when the COUNT matches the REF value",
|
||
|
|
default : false
|
||
|
|
}
|
||
|
|
]
|
||
|
|
if(["F2838x", "F28002x", "F28003x"].includes(system.deviceData.deviceId))
|
||
|
|
{
|
||
|
|
commonConfig.push({
|
||
|
|
name : "NMIInterrupt",
|
||
|
|
displayName : "Generate NMI Interrupt on Match",
|
||
|
|
description : "Wether or not to generate NMI interrupt when the HWBP matches the REF value",
|
||
|
|
default : false})
|
||
|
|
}
|
||
|
|
|
||
|
|
config = config.concat(counterModeConfig);
|
||
|
|
config = config.concat(stopwatchModeConfig);
|
||
|
|
config = config.concat(commonConfig);
|
||
|
|
|
||
|
|
|
||
|
|
var eradCTMSubmodule = {
|
||
|
|
displayName: "ERAD CTM",
|
||
|
|
maxInstances: 4,
|
||
|
|
defaultInstanceName: "ERAD_CTM",
|
||
|
|
description: "ERAD Counter",
|
||
|
|
config: config,
|
||
|
|
templates: {
|
||
|
|
boardc : "", //"/gpio/gpio.board.c.xdt",
|
||
|
|
boardh : ""//"/gpio/gpio.board.h.xdt"
|
||
|
|
},
|
||
|
|
};
|
||
|
|
|
||
|
|
|
||
|
|
exports = eradCTMSubmodule;
|