How do I make a device driver block that outputs data from a global array?
Afficher commentaires plus anciens
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
Réponse acceptée
Plus de réponses (1)
Mark McBroom
le 12 Déc 2020
0 votes
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 commentaires
Matt Griffith
le 12 Déc 2020
Mark McBroom
le 12 Déc 2020
I have never tried it, but you might be able to use coder.opaque() to define your array as volatile.
Matt Griffith
le 15 Déc 2020
Catégories
En savoir plus sur Targeting FPGA & SoC Hardware dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!