Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

05/05/2009 #1


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.
06/05/2009 #2


holaa a todos

Encontre esta pagina donde explica con ejemplos como cargar una libreria en matlab
http://www.codeproject.com/KB/DLL/Ma...&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
06/05/2009 #3


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
>>
06/05/2009 #4

Avatar de jokelnice

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
08/05/2009 #5


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
09/05/2009 #6


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_n orm)

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
13/05/2009 #7

Avatar de jagarciauceda

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!
13/05/2009 #8


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
12/06/2009 #9

Avatar de gpoolb

Solución de comunicación Matlab USB mpusbapi.dll
Acabo de publicar lo siguiente en http://www.mathworks.com/matlabcentr.../authors/60191 espero que te sea útil, espero tus comentarios. Ya habia logrado comunicacion con LabView 8.2, usando el mismo protocolo y con el segmento de código en matlab que amablemente compartiste me ayudó a concluirlo. Gracias.
13/06/2009 #10


gracias por tu aportacion gpoolb probare lo que acabaste de publicar

oajla ayude a resolver este problema..

saludos
17/06/2009 #11

Avatar de jagarciauceda

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!
17/06/2009 #12


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.
17/06/2009 #13

Avatar de jagarciauceda

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 ; )
18/06/2009 #14

Avatar de gpoolb

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
Archivos Adjuntos
Tipo de Archivo: c daq_366.c (7,9 KB (Kilobytes), 387 visitas)
Tipo de Archivo: c daq_984.c (7,9 KB (Kilobytes), 239 visitas)
18/06/2009 #15

Avatar de jokelnice

bueno colegas les confieso que en matlab habia intentado pero habia sido imposible bueno el aporte .
saludos ..........
21/07/2009 #16


Si se puede......
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.
Archivos Adjuntos
Tipo de Archivo: rar bulk_matlab_original_307.rar (393,6 KB (Kilobytes), 990 visitas)
21/07/2009 #17


el retardo obedece a que entr una tx y otra el sistema tiene 1ms como minimo y si se le quita no funciona
21/07/2009 #18

Avatar de gpoolb

Saludos...

Se ha actualizado la liga http://www.mathworks.com/matlabcentr...exchange/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.
21/07/2009 #19

Avatar de jokelnice

excelente
22/07/2009 #20


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.
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.