%% Multirate Modeling in Multitasking Mode (Bare Board, no OS)
% This model shows the code generated for a multirate discrete-time model
% configured for a multitasking bare-board target (one with no operating system).  
%% Open Example Model
% Open the example model |rtwdemo_mrmtbb|.

% Copyright 2015-2019 The MathWorks, Inc.

open_system('rtwdemo_mrmtbb')
%% Explore Example Model
% The model contains two sample times.  Inport block 1 and Inport block 2 specify 1-second 
% and 2-second sample times, respectively, which are enforced by the setting of
% model configuration parameter *Periodic sample time constraint*.  The solver is set for 
% multitasking operation, which means a rate transition block is required to ensure that 
% data integrity is enforced when the 1-second task preempts the 2-second task.  
% Proper rate transitions are always enforced by Simulink and Simulink Coder.  
% This model specifies an explicit rate transition block.  Alternatively, this block could
% be automatically inserted by Simulink setting model configuration parameter 
% *Automatically handle rate transition for data transfer*. 
%
% The model is configured to display sample-time colors upon
% diagram update.  To see them, after opening the model, update the diagram by 
% pressing *Ctrl+D*. To display the legend, press *Ctrl+J*. Red represents 
% the fastest discrete sample time in the model, green represents the second fastest, and 
% yellow represents mixed sample times.
% 
%% Data Transfer Assumptions
% 
% Basis of operation for data transfers between tasks:
% 
% * Data transitions occur between a single reading task and a single writing task.
% * A read or write of a byte sized variable is atomic.
% * When two tasks interact through a data transition, only one of them can preempt the other. 
% * For periodic tasks, the faster rate task has higher priority than the slower rate 
% task; the faster rate task always preempts the slower rate task.
% * Tasks run on a single processor. Time slicing is not allowed.
% * Processes do not crash and restart (especially while data is being transferred between tasks)
 
