How do I make a device driver block that outputs data from a global array?
显示 更早的评论
I am using Simulink and the Simulink Support Package for Arduino Hardware to generate and run C/C++ code on an Arduino Mega 2560. Everything works great, but I would like to develop a custom device driver. I went through the "Create a Digital Read Block" and I got that working.
For my application I need the source block to output the contents of a global array instead of just a scalar value. Coder.ceval only returns a scaler value.
So my question is how do I modify this function so I can output an array
function y = stepImpl(obj) %#ok<MANU>
y = double(0);
if isempty(coder.target)
% Place simulation output code here
else
% Call C-function implementing device output
y = coder.ceval('source_output');
end
end
采纳的回答
更多回答(1 个)
Mark McBroom
2020-12-12
0 个投票
You will need create the matrix in your MATLAB function and then pass it to your C Function as an argument, encapsultated in teh coder.wref() function so that MATLAB will pass it by reference to your C code. See this link for details and example: https://www.mathworks.com/help/simulink/slref/coder.wref.html
3 个评论
Matt Griffith
2020-12-12
Mark McBroom
2020-12-12
I have never tried it, but you might be able to use coder.opaque() to define your array as volatile.
Matt Griffith
2020-12-15
类别
在 帮助中心 和 File Exchange 中查找有关 Targeting FPGA & SoC Hardware 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!