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에서 General Applications에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!