How do I make a device driver block that outputs data from a global array?
Mostrar comentarios más antiguos
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
Respuesta aceptada
Más respuestas (1)
Mark McBroom
el 12 de Dic. de 2020
0 votos
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 comentarios
Matt Griffith
el 12 de Dic. de 2020
Mark McBroom
el 12 de Dic. de 2020
I have never tried it, but you might be able to use coder.opaque() to define your array as volatile.
Matt Griffith
el 15 de Dic. de 2020
Categorías
Más información sobre Targeting FPGA & SoC Hardware en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!