Configure Timer Service Interfaces
For component deployment models, you can generate code that accesses the function clock tick provided by the target environment. A function clock tick value is the number of time ticks from the start of program execution to the present time for a function. Generated code for a function can access the target platform function clock tick value by calling a function provided by the platform timer service.
You represent requests for the function clock tick in a model implicitly when you include blocks that rely on elapsed or absolute time. The code generator produces code that calls a timer service function, depending on the block context (for example, for a block that relies on elapsed time and is used in an aperiodic context). If you do not want to use the default timer service interface specified in the Embedded Coder Dictionary, you can configure the timer service interface by using the Code Mappings Editor or code mappings programming interface.
By default, an Embedded Coder Dictionary provides an interface for these data communication methods:
Outside execution: The platform service communicates clock tick value outside (before and after) function execution.
During execution: The platform communicates clock tick value immediately during function execution.
Configure Timer Service Interfaces by Using the Code Mappings Editor
In this example, the component model references a shared coder dictionary that defines the default timer service interfaces for exported functions in the component model. To configure the timer to use something other than the default service interface, use the Code Mappings editor.
Open the component model,
ComponentDeploymentFcn
.
openExample('ComponentDeploymentFcn');
In this model, the Function-Call Subsystem block
Integrator
uses a timer service because it contains a
Discrete-Time Integrator block.
Verify that the component model references the shared coder dictionary,
ComponentDeploymentCoderDictionary.sldd
.
In the Model Configuration Parameters dialog box, verify that the Shared
coder dictionary parameter is set to
ComponentDeploymentCoderDictionary.sldd
. This dictionary defines
default service interfaces, including the timer services, of the component model.
Open the Embedded Coder app.
To configure the integrator function to use a timer service interface other than the default defined by the shared coder dictionary, use the Code Mappings editor.
To open the Code Mappings editor, in the C Code tab, click Code Interface > Component Interface.
On the Functions tab, on the table row for the
Exported Function:Aperiodic
function, click the pencil icon. The
Timer Service, is set to Dictionary default:
get_tick_outside
.
To configure the function to access clock tick value immediately during function
execution instead of before or after execution as specified in the dictionary, set the
Timer Service of Exported Function:Aperiodic
to get_tick_during
.
Configure Timer Service Interfaces Programmatically
To configure timer services of a function component programmatically, access the code mapping properties of the component model.
Open the model.
openExample('ComponentDeploymentFcn');
Get the code mappings for the model by using the
coder.mapping.api.get
function.
cm = coder.mapping.api.get('ComponentDeploymentFcn');
In this model, the exported function Aperiodic
, represented by the
Function-Call Subsystem,
Integrator
, requires timer services in the platform environment. Get
the current timer service interface configuration by using the
getFunction
function.
getFunction(cm, 'ExportedFunction:Aperiodic', 'TimerService')
ans = 'Dictionary default'
To configure the function to access timer services during function execution instead of
before or after execution as specified in the dictionary, use the
setFunction
function and set the TimerService
property to get_tick_during
, which is defined in the
dictionary.
setFunction(cm, 'ExportedFunction:Aperiodic',... 'TimerService', 'get_tick_during')
See Also
Code Mappings Editor | coder.mapping.api.CodeMapping
| getFunction
| setFunction