Autor Tema: Datalogger de 2GB con PIC usando un Host USB: El VDIP1  (Leído 69317 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado ascii

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 131
Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
« Respuesta #120 en: 14 de Marzo de 2009, 20:43:22 »
Puede ser con un selector, pero veo mas factible implementar una puerta uart por software, saludos.

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
« Respuesta #121 en: 14 de Marzo de 2009, 20:52:42 »
Hay gente que han logrado (alabados sean)  comunicarse con el VDIP via SPI. Yo lo intenté de muchas formas pero nada, me apremiaba terminarlo como sea y la opción UART fué la más fácil y rápida. Otra opción que te deja es puerto FIFO paralelo. Esa ni la he probado.
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado dalefa

  • PIC10
  • *
  • Mensajes: 1
Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
« Respuesta #122 en: 31 de Marzo de 2009, 10:23:28 »
hace mas de 1 año trabajé con el vdip1 en modo spi y luego de renegar mas de 1 mes los de ftdi me dijeron que con el firmware cdc no trabajaba en modo spi. pero probé con otros firmwares y mis rutinas andaban bien. Ya no las uso (ahora trabajo con la uart) por lo que se las paso. (pueden optimizarlas un poco sacando algunos nop)(mi ciclo de reloj es de 0,16666666 us). Antes les quiero decir que el vdip1 trabaja con 3,3v. Tiene una entrada de 5v pero enseguida pasa por un regulador de 3,3v. A estos 3,3 v los pueden utilizar ustedes para alimentar un micro, pero teniendo en cuenta de no cargar demasiado pues el regulador es pequeño.
De todas formas, el VNC1L es tolerante a los 5v (se puede hacer trabajar derecho con un micro de 5v)
Acá van las rutinas
;--------------------------------------------------------------------------------------------------------
;rutina para escribir un BYTE de datos desde el micro SPI virtual al módulo VDIP1 SPI slave. El byte a TX viene en "W_VDIP1"
;para TX (escribir en el VDIP1) un dato se debe transmitir 1ero 100 y luego el dato. Se debe leer el ultimo bit de lo recibido (STATUS)
R_TX_DATO_VDIP1            BCF         VDIP1_STAT,0
               BSF         VDIP1_CS   ;habilita VDIP1
               BSF         SDO
               BSF         SCK      ;WRITE "1"
               BCF         SCK
               BCF         SDO
               BSF         SCK      ;WRITE "0"
               BCF         SCK
               BSF         SCK      ;WRITE "0"
               BCF         SCK
               BCF         SDO
               BTFSC      W_VDIP1,7
               BSF         SDO
               BSF         SCK      ;WRITE "bit7"
               BCF         SCK
               BCF         SDO
               BTFSC      W_VDIP1,6
               BSF         SDO
               BSF         SCK      ;WRITE "bit6"
               BCF         SCK
               BCF         SDO
               BTFSC      W_VDIP1,5
               BSF         SDO
               BSF         SCK      ;WRITE "bit5"
               BCF         SCK
               BCF         SDO
               BTFSC      W_VDIP1,4
               BSF         SDO
               BSF         SCK      ;WRITE "bit4"
               BCF         SCK
               BCF         SDO
               BTFSC      W_VDIP1,3
               BSF         SDO
               BSF         SCK      ;WRITE "bit3"
               BCF         SCK
               BCF         SDO
               BTFSC      W_VDIP1,2
               BSF         SDO
               BSF         SCK      ;WRITE "bit2"
               BCF         SCK
               BCF         SDO
               BTFSC      W_VDIP1,1
               BSF         SDO
               BSF         SCK      ;WRITE "bit1"
               BCF         SCK
               BCF         SDO
               BTFSC      W_VDIP1,0
               BSF         SDO
               BSF         SCK      ;WRITE "bit0"
               BCF         SCK
               BCF         SDO      ;pone un "0"
               BSF         SCK
               BTFSC      SDI         ;lee bit de STATUS
               BSF         VDIP1_STAT,0
               BCF         SCK
               BCF         VDIP1_CS   ;deshabilita VDIP1
               RETURN
;--------------------------------------------------------------------------------------------------------
;rutina para leer un BYTE de datos desde el módulo VDIP1 (el byte leido retornará en "R_VDIP1"). (El bit de estado retornará en VDIP1_STAT,0)
;para RX (leer desde el VDIP1) un dato se debe transmitir 1ero 110 0000 0000 0 Y LEER EL DATO
R_RX_DATO_VDIP1            CLRF      R_VDIP1         ;
               BCF         VDIP1_STAT,0   ;limpia variables
               BSF         VDIP1_CS      ;habilita VDIP1
               NOP
               NOP
               BSF         SDO
               NOP
               NOP
               RCALL   R_SPI_CLK_PULSO         ;WRITE "1"
               NOP
               RCALL   R_SPI_CLK_PULSO         ;WRITE "1"
               NOP
               BCF         SDO
               NOP
               RCALL   R_SPI_CLK_PULSO         ;WRITE "0"
               BTFSC      SDI         ;leo el 1er bit
               BSF         R_VDIP1,7
               RCALL   R_SPI_CLK_PULSO
               BTFSC      SDI
               BSF         R_VDIP1,6
               RCALL   R_SPI_CLK_PULSO
               BTFSC      SDI
               BSF         R_VDIP1,5
               RCALL   R_SPI_CLK_PULSO
               BTFSC      SDI
               BSF         R_VDIP1,4
               RCALL   R_SPI_CLK_PULSO
               BTFSC      SDI
               BSF         R_VDIP1,3
               RCALL   R_SPI_CLK_PULSO
               BTFSC      SDI
               BSF         R_VDIP1,2
               RCALL   R_SPI_CLK_PULSO
               BTFSC      SDI
               BSF         R_VDIP1,1
               RCALL   R_SPI_CLK_PULSO
               BTFSC      SDI
               BSF         R_VDIP1,0
               RCALL   R_SPI_CLK_PULSO
               BTFSC      SDI         ;lee bit de STATUS
               BSF         VDIP1_STAT,0
               NOP
               NOP
               BCF         VDIP1_CS   ;deshabilita VDIP1
               NOP
               RETURN
;
R_SPI_CLK_PULSO            BCF         SCK
               NOP
               NOP
               BSF         SCK
               NOP
               NOP
               BCF         SCK
               NOP
               RETURN
;-------------------------------------------------------------------------------------------------
;rutina para leer buffer de RX del módulo VDIP1 y guardarlos en ram posiciones desde H'400'
;cont3 es la cantidad de bytes que se quiere leer
R_RBUF_VDIP1            MOVLW      d'20'
               MOVWF      CONT3         ;número de posiciones a leer
               LFSR      FSR1,h'0400'      ;posicion de USB_1
R_RBUF_VDIP1_S1            RCALL      R_RX_DATO_VDIP1
               BTFSS      VDIP1_STAT,0      ;DATA NEW or OLD?
               RETURN               ;OLD
               MOVFF      R_VDIP1,INDF1      ;NEW
               DCFSNZ      CONT3,1
               RETURN
               INCF      FSR1L,1
               BRA      R_RBUF_VDIP1_S1
;--------------------------------------------------------------------------------------------------------
;rutina para escribir el buffer del VDIP1 con un comando que estará depositado en memoria RAM (por ahora)
;tanto CONT3 (cant bytes a escribir) como FSR1 vienen cargados según el comando que se desee transmitir
R_WBUF_VDIP1            MOVF      INDF1,W
               MOVWF      W_VDIP1
R_WBUF_VDIP1_S1            RCALL   R_TX_DATO_VDIP1
               BTFSC      VDIP1_STAT,0      ;se aceptó el dato?
               BRA      R_WBUF_VDIP1_S1      ;NO.
               DCFSNZ      CONT3,1         ;SI.
               RETURN
               INCF      FSR1L,1
               BRA      R_WBUF_VDIP1
;--------------------------------------------------------------------------------------------------------

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
« Respuesta #123 en: 31 de Marzo de 2009, 11:13:48 »
gracias por compartir  :-/ :-/
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
« Respuesta #124 en: 01 de Abril de 2009, 18:51:04 »
Cagonto, Dalefa. Lo que hubiese dado por esta rutina hace un mes atrás!  :D

Pero ya lo tengo hecho todo en uart, no hay vuelta atrás.
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado The_Chosen

  • PIC12
  • **
  • Mensajes: 51
Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
« Respuesta #125 en: 13 de Abril de 2009, 01:17:58 »
Hola amigos, hace algún tiempo adquirí el modulo VDIP, y recién tuve el valor de energizarlo  :lol:. Leí atentamente cada uno de los post escritos y me imbuí con su sabiduría. Sin embargo, parece que algo no estoy haciendo bien, porque al energizarlo junto con el pendrive que tenía la actualización, empezó a parpadear alternadamente y rápidamente el led 1 y el led 3. Siguiendo las instrucciones de alquimus esperé y esperé, pero tuve que sacar el pendrive porque mi paciencia ya se agotaba y cual fue mi sorpresa al constatar que los leds seguían prendiéndose y apagándose, así que opté por seguir las instrucciones siguientes que indicaban la manera más rápida de saber el firmware del VDIP. Así que puse los jumpers en su lugar, lo conecté a un MAx233 y revisé si efectivamente el módulo enviaba alguna respuesta............... NADA, así que estoy a oscuras, y decepcionado. ¿Podrían darme una mano para solucionar mi problema? A lo mejor estoy ahogándome en un vaso con agua, o lo mejor simplemente dejé morir el VDIP  :(

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
« Respuesta #126 en: 13 de Abril de 2009, 14:52:42 »
No , a ver:

Eso me pasó a mi la primera vez.
Primero , asegúrate que el pin 10 del vdip está a masa antes de meterle el pendrive para actualizarlo.
Al actualizar, el led (no recuerdo cual) se queda fijo solo por 2 segundos, mas o menos.
Si no actualiza es porque quizas ya tengas la ultima versión en el chip.
Mira que no hayas puesto el archivo dentro de una carpeta.
Mira que los jumpers del vdip estén ambos a masa o a positivo.
De última conéctalo via rs232 con hiperterminal y con el comando correspondiente (ahora no lo recuerdo porque estoy en casa) mira que versión tiene el chip.
Ve haciendo pruebas de a poco, con comandos sencillos y mira como responde.
Cualquier cosa pregunta, estaré al tanto de novedades en este post .
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado The_Chosen

  • PIC12
  • **
  • Mensajes: 51
Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
« Respuesta #127 en: 13 de Abril de 2009, 19:05:40 »
No , a ver:

Eso me pasó a mi la primera vez.
Primero , asegúrate que el pin 10 del vdip está a masa antes de meterle el pendrive para actualizarlo.
Al actualizar, el led (no recuerdo cual) se queda fijo solo por 2 segundos, mas o menos.
Si no actualiza es porque quizas ya tengas la ultima versión en el chip.
Mira que no hayas puesto el archivo dentro de una carpeta.
Mira que los jumpers del vdip estén ambos a masa o a positivo.
De última conéctalo via rs232 con hiperterminal y con el comando correspondiente (ahora no lo recuerdo porque estoy en casa) mira que versión tiene el chip.
Ve haciendo pruebas de a poco, con comandos sencillos y mira como responde.
Cualquier cosa pregunta, estaré al tanto de novedades en este post .

Hola pibe, muchas gracias por responder:
a) ¿Porque el pin 10 tiene que estar conectado a GND?
b) Es posible que tenga la última versión del firmware, ya que lo compré en octubre o noviembre del año pasado. Si no me equivoco el comando que permite ver el firmware es FWV+return. Lo único malo es que necesito enviar los comandos por SPI, porque el puerto USART de mi proyecto está ocupado. Viendo muchas páginas relacionadas con el SPI y el VNC1L, son pocos los que lo han logrado. Además no me queda claro si usan el SPI embebido de los microcontroladores o simplemente crean un SPI virtual a través de software. ¿Qué piensas de ello?
c) Según alquimus:
"Usando el Hyperterminal y configurando la conexion a 9600 baudios sin control de flujo, al encender el VDIP1 nos muestra en la terminal la version de firmware que esta incluida en el modulo. "
¿Lo anterior es correcto?
¿O sea, al conectar el módulo se muestra inmediatamente la versión del firmware, sin enviar previamente el comando FWV?

d) Acabo de comprarme un pendrive de 2 GB y cuando lo formateé para cambiar el tamaño del cluster a 512 Bytes, me lanzó un error:
"El tamaño de cluster es demasiado pequeño para FAT16/12"
« Última modificación: 13 de Abril de 2009, 19:12:59 por The_Chosen »

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
« Respuesta #128 en: 14 de Abril de 2009, 05:28:58 »
No has leído todo el post, donde explicamos detalladamente y paso a paso como lograr que funcione.

a) El pin 10 del VDIP es CTS o sea RTS del pic, que le indicaría al VDIP que el pic ya está listo para recibir datos. Por lo tanto si esa pata está al aire el VDIP detecta que no puede establecer comunicación y se queda en la parra esperando que ese pin se ponga a 0.
Mira la página 1 de este post y verás que incluso en el dibujo a mano alzada el pin 10 está a masa.
b) para hacer pruebas y comprobar el software y comandos te recomiendo lo conectes via MAX232 e hiperterminal como muestra en la primera página (verifica que el pin TX del MAX232 vaya a RX del PC y TX del PC al RX del MAX232 porque creo que en el dibujo están invertidos).
Yo particularmente estuve 1 semana intentando comunicarme por via SPI, pero el tiempo se me agotaba y no veía resultados aunque simulé paso a paso los 13 ciclos de reloj con sus datos , etc. Así que descarté SPI y me puse a trabajar por UART. No creo que puedas hacerlo via hardware SPI, porque como ves, son solo 13 ciclos de reloj con unos datos iniciales de 3 bits. Si logras hacerlo funcionar será por via software SPI.
c) Si, es correcto. Siempre y cuando el firmware que trae de fábrica tenga marcada la opción de mostrar la versión del firmware al darle alimentación.
Puedes usar el programa VncFwMod.exe de la página de Vinculum que sirve para modificar el archivito .FTD y te deja por ejemplo variar la velocidad de comunicación por UART, si al arrancar te muestre la versión del firmware, si al arrancar te muestre "DISK PRESENT", etc etc. Luego le grabas este archivito modificado al VDIP en lugar del original.
d) No has leído la parte donde explico que al formatear el pendrive debes hacerlo en FAT32.

Aqui te explico todo paso por paso: http://www.todopic.com.ar/foros/index.php?topic=24289.msg201847#msg201847

No desfallezcas!. El maldito VDIP te hace sudar para ponerlo en marcha, pero una vez arranca lo siguiente es coser y cantar. Claro, siempre y cuando lo hagas por UART porque por SPI... vas a quedar como mi avatar :P aunque Dalefa afirma que lo ha hecho funcionar con la rutina que está un poco más arriba.
« Última modificación: 14 de Abril de 2009, 05:34:57 por pibe »
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
« Respuesta #129 en: 14 de Abril de 2009, 11:31:35 »
maestro pibe vdipX, permitame una consulta:

según vuestra experiencia para poder actualizar el firmware del vdip es necesario darle un archivo mediante una memoria usb formateada en FAT32.

despues de esto, en el momento de utilizar el módulo ya como dispositivo host, le puedo colocar cualquier memoria usb o tienen que ser todas en FAT32? o eso del FAT32 era solo para la actualizacion del módulo?

gracias.  :-)
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
« Respuesta #130 en: 14 de Abril de 2009, 12:06:26 »
No. Debe ser formateada fat32 porque los clusters deben ser de 512 bytes. Es una desgracia pero la hoja de datos es muy específico en ésto.
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
« Respuesta #131 en: 14 de Abril de 2009, 19:46:25 »
mmm eso no le va a gustar a los usuarios finales...  :shock:

señor tiene que insertar una ficha usb previamente formateada en FAT32....
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
« Respuesta #132 en: 15 de Abril de 2009, 03:43:45 »
Posi.
En mi caso no me trae problemas ya que le entregaremos la caja negra con su correspondiente pendrive ya formateado.
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado PHLAKO

  • PIC10
  • *
  • Mensajes: 49
Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
« Respuesta #133 en: 17 de Abril de 2009, 16:14:11 »
felicidades por el proyecto...(y uno atorado con un CRC) :mrgreen:

saludos,

chaos :)
SIEMPRE TE RECORDARE AMADO Y FIEL COMPAÑERO "LOBO"

Desconectado bellcrow64

  • PIC10
  • *
  • Mensajes: 1
Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
« Respuesta #134 en: 10 de Mayo de 2009, 14:38:46 »
Una pequeña consulta:
Yo soy de argentina, alguien ha comprado el VDIP en este pais?

Muchas Gracias


 

anything