Lo que hago simplemente es crear una funcion en un archivo .m y luego lo llamo desde el simulink con el bloque matlab function, y se corre la simulacion en simulink con el tiempo de simulacion en inf=infinito, acontinuacion les posteo el programa en matlab
function salida=funcion(entrada)
global data_in data_out
loadlibrary mpusbapi _mpusbapi.h alias libreria
data_in = eye(1,1,'uint8');
data_out = eye(1,1,'uint8');
vid_pid_norm = libpointer('int8Ptr',[uint8('vid_04d8&pid_000b') 0]);
out_pipe = libpointer('int8Ptr',[uint8('\MCHP_EP1') 0]);
in_pipe = libpointer('int8Ptr',[uint8('\MCHP_EP1') 0]);
[Esta_conectado] = calllib ('libreria','MPUSBGetDeviceCount', vid_pid_norm);
if(Esta_conectado)
data_out=uint8(entrada);
[my_out_pipe] = calllib('libreria','MPUSBOpen',uint8(0), vid_pid_norm,out_pipe, uint8(0), uint8 (0));
[my_in_pipe] = calllib('libreria','MPUSBOpen',uint8(0), vid_pid_norm,in_pipe, uint8 (1), uint8 (0));
calllib('libreria', 'MPUSBWrite',my_out_pipe, data_out, uint8(1), uint8(1), uint8(10)); % Se envia el dato al PIC
[aa,bb,data_in,dd] = calllib('libreria', 'MPUSBRead',my_in_pipe, data_in, uint8(1), uint8(1), uint8(10));
salida=double(data_in)*5/255;
calllib('libreria','MPUSBClose',my_in_pipe);
calllib('libreria','MPUSBClose',my_out_pipe);
end
end