PicUSB-Matlab con comunicacion Bulk Transfers USB

Hola a todos!
Eh querido controlar desde matlab un microcontrolado en especial el PIC18F4550 ya que cuenta con el protocolo usb
la comunicacion que quiero establecer es la de Bulk Transfersa USB sin necesidad de emular el puerto serial(COM), por lo que este cuenta con una alta velocidad de transferencia (480MB/s) en forma bidireccional.

Para una mayor facilidad de desarrollo de aplicaciones basadas en el bus USB, Microchip ha creado un archivo dll
(mpuspapi.dll) en el que proporciona las funciones de acceso al puerto USB con un microcontrolador de la familia PIC18Fxx5x.

Entonces desde matlab encontre una funcion para llamar librerias y hacer utlidad de ella, pero a un no lo eh entendido muy bien como se utliza.

esta funcion se llama:

loadlibrary

Syntax

loadlibrary('shrlib', 'hfile')
loadlibrary('shrlib', @protofile)
loadlibrary('shrlib', ..., 'options')
loadlibrary shrlib hfile options
[notfound, warnings] = loadlibrary('shrlib', 'hfile')

si alguien que me pueda explicar como funciona esta funcion loadlibrary ya que utilizandolo de manera perfecta podremos madar y recibir datos del microcontrolador para la adquisioon de datos.
 

Adjuntos

  • loadlibrary__functions_matlab_122.pdf
    27.9 KB · Visitas: 598
holaa a todos

Encontre esta pagina donde explica con ejemplos como cargar una libreria en matlab
http://www.codeproject.com/KB/DLL/MatlabGenericDll.aspx?df=100&forumid=26247&exp=0&select=972623

pero a un no logro cargar la libreria me marca error. la otra idea es cargarla con funiones mex en matlab (Mex-file), funciona para cargar codigos realizados en C. ya eh realizado estas dos opciones
pero aun me sigue marcando error .

alguien que sepa como cargar una libreria en matlab o ejecutar codigos C en matlab seria de buena ayuda .

hasta luegoo y saludos a todos
 
este es el error que les comentaba al cargar la libreria que esta en la carpeta de \documentos\matlab

>> loadlibrary('mpusbapi.dll','_mpusbapi.h');
Warning: Warnings messages were produced while parsing. Check the functions you
intend to use for correctness. Warning text can be viewed using:
[notfound,warnings]=loadlibrary(...)
> In loadlibrary at 381
>>
 
colega la verdad intente por todas partes en matlab y no pude asi que finalmente me decidi por otros programas como labview , visual basic , labwindows
 
la verdad encontre a un amigo que ya establecio la comunicacion usb matlab con funciones mex-file
eso fue lo que me aconsejo porque no pudo cargar directamente la libreria mpusbapi.dll
 
function prueba
loadlibrary mpusbapil mpusbapil.h alias libreria
libisloaded mpusbapil
libfunctions('libreria', '-full')

%pause;

vid_pid_norm_c='vid_04d8&pid_0010';
out_pipe_c=('\\MCHP_EP1');
in_pipe_c=('\\MCHP_EP1');

vid_pid_norm = libpointer('voidPtr',[uint32(vid_pid_norm_c) 0]);
out_pipe = libpointer('voidPtr',[uint32(out_pipe_c) 0]);
in_pipe = libpointer('voidPtr',[uint32(in_pipe_c) 0]);



calllib('libreria','MPUSBGetDLLVersion')
calllib('libreria','MPUSBGetDeviceCount',vid_pid_norm)

end

con esto logre que me detectara mi dispositivo
cuando esta conectado me envia 1 y cuando esta deconectado 0. Tambien me regresa la vercion de la libreria 1.0.0.0

ahora lo que falta es abrir el dispositivo, escribir y cerrarlo.

saludos
 
Hola ! yo estoy haciendo lo mismo que tu...conseguiste comunicar matlab con tu pic? agradeceria mucho que me dijeras si lo conseguiste y lo mas importante como lo conseguiste

Gracias!
 
copia el programa que puse en el comentario pero con algunas modificaciones y ejecutalo en matlab
con eso te detectara tu dispositivo y la vercion de la libreria

tiens que tener el mpusbapi.dll y el _mpusbapi.h la tienes que tener en una carpeta
 
Hola gpoolb, estoy aprovechando esa rutina para comunicar con una interficie que utiliza el micro 18f4550. Te agradecería mucho si pudieras colgar todos los archivos necesarios para programar el micro. Ya se que tu utilizas el 18F2455....pero viene a ser lo mismo...

Yo en cuanto comunique subire el codigo.

Gracias

Salud!
 
Es practicamente lo mismo solo tienes que poner la libreria del microcontrolador que estas utilizando
en tu caso seria #include PIC18f4550 y de alli el codigo es el mismo tambien tienes que fijarte de los puertos que utiliza el micro.
 
Hi adrianjpc,

eso lo veo. A mi lo que me lía es la cantidad de compiladores que hay. Yo quiero saber exactamente que librerias son necesarias para generar el firmware. Me explico; quiero saber los headers necesarios para que comunique via usb.

Por ejemplo: el amigo gpoolb utiliza no se que compilador, creo que el PCW, o algo asi. Pero en su codigo solo aparece el main y no hace ninguna referencia a las cabeceras.

...a ver si eres capaz de acercarme a la luz ; )
 
Caballeros:

En la primera mitad del código usb.m el cual es un archivo de matlab (si no cuenta con matlab se puede usar el editor de texto para abrirlo) se encuentra el código del PIC listo para ser compilado (mismo que anexo como archivo adjunto en éste foro <<daq.c>>). Las librerias _mpusbapi.h y mpusbapi.dll son exclusivas para el manejo de matlab, no los modifiquen, el único que pueden modificar es el programa que se compila en el pic, el cual les adjunto el programa daq.c El compilador que uso es el CCS PCWH 3.227
 

Adjuntos

  • daq_984.c
    7.9 KB · Visitas: 246
  • daq_366.c
    7.9 KB · Visitas: 392
Bueno colegas yo me disculpo ante todo pues generalmente entro a los foros a buscar información y este es mi primer aporte a esta comunidad que tanto me ha brindado, espero les sirva....

yo lo monte completico y siguiendo las instrucciones al pie de l letra y funciona muy bien, entre un envio y otro se demora aprox 2 ms, si alguien lo hace funcionar mas rapido ojala publiquen la información pues es muy interesante....

gracias.
 

Adjuntos

  • bulk_matlab_original_307.rar
    393.6 KB · Visitas: 1,001
Saludos...

Se ha actualizado la liga http://www.mathworks.com/matlabcentral/fileexchange/24417 donde se publica el enlace de MATLAB con PIC, se le ha añadido un pdf con instrucciones más detalladas para su implementación, la primera parte explica el funcionamiento de la libreria mpusbapi.dll, la segunda parte se explica más a detalle la compilación del PIC y el enlace a la PC, y la última explica cómo se implementa el código en MATLAB. Si algo no se entiende pregunten con confianza.
 
Hello,

I'm sorry I don't speak spanish very well (I'm french) but I could understand more or less this thread and the installation guide. I am trying to load the mpusbapi.dll in matlab but the loadlibrary function returns a lot of warnings because of unknow variable types, example :

Type 'PCHAR' was not found. Defaulting to type error.

I've read somewhere that might be because of the compiler used by matlab (LCC) doesn't recognize these particulars variable types. I didn't try the communication with the microcontroller (my board is not ready yet) but I'm afraid it would not work because of this "defaulting type error".
Do you have the same warning messages ? If not, how did you solve this problem ?

Thank you for help and congratulations to gpoolb for his great work.
 
Atrás
Arriba