Matlab function into simulink: variable declaration

2 views (last 30 days)
Hi, I'm programming an arduino due using a matlab function into simulink. As a test, i try to let the on board let blink and count how many times the led has blinked using the matlab function with the folowing code:
function [LED,counter]= blink(pulse)
%#codegen
counter=0;
LED=0;
while true
if pulse == 1
LED=1;
counter=counter+1;
else
LED=0;
end
end
In this code, pulse is a pulse generator, LED goes to the pin of the on board led. With this code, the led doesn't blink because i guess the function doesn't end because of the while loop so i tried another function
function [LED,counter]= blink(pulse)
%#codegen
counter=0;
if pulse == 1
LED=1;
counter=counter+1;
else
LED=0;
end
with this code, the led will blink, but the counter resets after every loop, but without 'counter=0' there is an error because counter isn't initialized. I tried with the model properties, StartFcn to initialize the counter but that doesn't work, anyone who can help me? Thanks!

Answers (1)

Walter Roberson
Walter Roberson on 15 Jan 2016
Use "persistent" ? Though in that particular context I am not sure what the value would initialize to.
  2 Comments
Thogoe
Thogoe on 15 Jan 2016
Thanks for the answer, but i still get the folowing error
The PERSISTENT declaration cannot be used on function outputs.
Function 'MATLAB Function' (#36.47.57), line 3, column 1:
"persistent"
Launch diagnostic report.
Component: MATLAB Function | Category: Coder error
guess because the persistent command creates an empty matrix, so 'counter' is still undefined.
Walter Roberson
Walter Roberson on 15 Jan 2016
Do not persistent the output variable, persistent the counter variable and copy the counter variable to the output variable.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!