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

Temas similares

03/03/2015 #1


Osciloscopio USB
Hola les cuento que estoy intentando hacer una especie de osciloscopio USB, jajaja muy ambicioso para alguien con mis pocos conocimientos de electronica.

Estoy utilizando un PIC24FJ64GB002 y C# para dibujar, la idea es utilizar comandos SCPI.

Para la transmisión por USB me base en el MLA de Microchip USB hid_custom

Voy avanzando hasta el momento puedo configurar un par de velocidades, cambiar la cantidad de puntos a capturar y solicitar los datos de la memoria.

Ahora si envío por ejemplo 2 mil bytes (un byte por punto ADC en 8 bits) todo perfecto

Mi problema es que cuando quiero enviar por ejemplo 4 mil bytes, se pierden paquetes.

la transmición la realizo en la función APP_DeviceCustomHIDTasks() cada vez que entra tan solo envio 64 bytes y espera entrar otra vez para enviar otros 64 bytes hasta completar la cantidad de puntos.

Los bytes del buffer que tiene los puntos los copio en la variable ToSendDataBuffer y antes de enviar siempre hay un while esperando que este desocupado así:

while(HIDTxHandleBusy(USBInHandle));
USBInHandle = HIDTxPacket(CUSTOM_DEVICE_HID_EP, ToSendDataBuffer,64);


Por favor podrán ayudarme a quitar este interrogante de mi cabeza
03/03/2015 #2
Moderador general

Avatar de DOSMETROS

Zipea y subí lo que llevas hecho para recibir ayuda

¿Cómo subo imágenes y archivos?
04/03/2015 #3


Osciloscopio USB
Hola DOSMETROS subo lo que hice y una imagen de algunos comandos que envio y como se ve.

nota: la onda de la imagen es cuadrada pero pasa que para depurar y detectar que se me saltean paquetes cada 64 bytes envio un contador que es la linea
ToSendDataBuffer[63] = (idxBufferTransmit - 64) / 64 + 48;
en la función TxData, con comentarla se ve una onda cuadrada que es lo correcto.

saludos
Imágenes Adjuntas
Tipo de Archivo: png OsciloscopioWin.PNG (53,8 KB (Kilobytes), 43 visitas)
Archivos Adjuntos
Tipo de Archivo: rar Osciloscopio.rar (957,3 KB (Kilobytes), 36 visitas)
04/03/2015 #4

Avatar de papirrin

Prueba al revés.

En lugar de...
while(HIDTxHandleBusy(USBInHandle));
USBInHandle = HIDTxPacket(CUSTOM_DEVICE_HID_EP, ToSendDataBuffer,64);

Pon:
USBInHandle = HIDTxPacket(CUSTOM_DEVICE_HID_EP, ToSendDataBuffer,64);
while(HIDTxHandleBusy(USBInHandle));

O sea, que continúe el programa hasta que el buffer esté enviado.
04/03/2015 #5


Hola Papirrin. Me gustó tu idea pero sigue pasando lo mismo.

En el programa hago esto para ver los paquetes que recibe:

System.Diagnostics.Debug.Write(respuesta[1]);
System.Diagnostics.Debug.Write(':');
System.Diagnostics.Debug.WriteLine(respuesta[64]);

El carácter 64 es el contador que envío desde el PIC, comienza en 48 hasta 255, vuelve a comenzar y siempre se saltan muchos paquetes, principalmente al comienzo.

Recibe el primero pero luego se saltea muchos (varía la cantidad)
Por ejemplo: 48, 95, 96, 97... Etc. Se salta unas decenas y luego sigue bien.
04/03/2015 #6

Avatar de papirrin

Pues descomprimí tu archivo para ver si veía algo raro en el código del PIC,
pero no encontré dónde está el archivo entre tantas carpetas.
Supongo que usas mikroC. ¿Por qué no pones el código fuente del PIC, aquí?
05/03/2015 #7


Hola, Papirrin. Uso XC16 y esa cantidad impresionante de carpetas lo hizo el MPLABX al empaquetar el ejemplo HID custom del MLA de Microchip.

El proyecto del firmware está en: Osciloscopio\OsciloscopioPic\apps\usb\device\hid_c ustom\firmware\MPLAB.X\

El de Windows está en: OsciloscopioWin es en C# con Visual Studio 2010

¿Puede ser que los paquetes se pierdan porque uso HID? ¿Debería utilizar algún otro tipo como CDC?
06/03/2015 #8

Avatar de papirrin

¿puede ser que los paquetes se pierdan porque uso HID?
yo estoy haciendo un analizador logico con HID y manda paquetes de 64bytes uno tras otro y no tengo ningun problema, yo estoy utilizando Basic en el pic y java para un androide ...pero no creo que el lenguaje tenga algo que ver con el protocolo.

en pocas palabras no creo que sea eso, aunque podrias probar haciendo un pequeño retardo entre el envio de paquetes.
06/03/2015 #9


Muchísimas gracias Papirrin dio resultado
Respuesta
¿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.