TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: Alquimus en 30 de Diciembre de 2008, 01:03:54

Título: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: Alquimus en 30 de Diciembre de 2008, 01:03:54

DATALOGGER USANDO UN VDIP1

Hace ya un par de años, FTDI saco al mercado circuitos integrados capaces de funcionar como HOST de USB.
Con ello, la capacidad de almacenar datos en una memoria USB por ejemplo, se hizo mucho mas sencilla.
La pagina oficial del dispositivo, llamado VNC1L-1A - VINCULUM, es la siguiente:

http://www.vinculum.com/ (http://www.vinculum.com/)

Dentro de los productos Vinculum, existen modulos, los cuales nos facilitan la tarea de integrar estos maravillosos integrados a nuestras aplicaciones. Existen los siguientes modulos:

 VNC1L      :   Vinculum VNC1L USB host controller IC (RoHS compliant)
 V-Eval      :Vinculum development board based on the VNC1L
 VDIP        : DIP format VNC1L USB host controller development module
 VF2F         :Digital media backup to USB Flash drive - reference design
 VDRIVE    : Module easily adds USB Flash drive interface to MCU I/F via UART or SPI interface
 VMUSIC    : Module easily adds USB Flash drive Interface plus MP3 playback to MCU I/F via UART or SPI interface
 DLP-VLOG :Module to allow data logging directly to a USB Flash drive using a VNC1L device with a microcontroller

Estos modulos nos facilita la integracion a nuestros sistemas, para el siguiente proyecto, pienso utilizar el VDIP1 que adquiri hace un par de semanas de mouser, en realidad, se podria comprar solamente el IC, pero elegi el VDIP1 porque viene con todo lo necesario (cristal, capacitores, zocalo DIP) como para empezar a hacer prototipos.
Ahora, cada IC tiene la capacidad de soportar hasta 2 dispositivos USB, el VDIP1 viene con un conector USB integrado en el modulo con la posibilidad de usar el segundo dispositivo a través de los pines del zocalo DIP. Existe tambien el VDIP2 que viene con 2 conectores USB integrados.

VDIP1 en Mouser (http://www.mouser.com/Search/Refine.aspx?Keyword=VDIP1)

EL VDIP1

Bueno, entonces se trabajara con el VDIP1, aqui una pequeña foto:

(http://www.vinculum.com/images/vdip1-001.jpg)

Veamos algunas de sus caracteristicas:

► Jumper selectable UART, SPI or FIFO MCU Interfaces
► Uses FTDI's VNC1L device
► USB "A" type socket to interface with USB peripherals
► 2nd USB Interface available via module pins if required
► Single 5V supply input
► Auxiliary 3.3V/200mA power output to power external logic
► Power Good and Traffic Indicator LEDs
► RESET# and PROG# signals allow device programming via the UART interface if required.

Para aquellos que quieran un poco mas de detalle, pueden visitar la pagina web oficial del producto donde podran encontrar esquematicos, datasheets, firmware, especificaciones e incluso ejemplos.

Vinculum : VDIP1 (http://www.vinculum.com/prd_vdip1.html)

LA IDEA GENERAL

Bueno, para resumir, el VDIP1 es un modulo que funciona como USB HOST, con esto pretendo hacer un datalogger para almacenar los datos en una memoria USB de alta capacidad 2GB. El VDIP1 necesita un dispositivo que controle sus funciones, para lo cual pienso emplear un PIC, tengo en mi poder varios PICs 18F4550 asi que sera este el que empleare. La comunicacion entre PIC y el VDIP1 se puede realizar en 3 formas, para este proyecto pretendo utilizar el puerto SPI del VDIP1.
Para empezar, me gustaria lograr almacenar el valor capturado en un canal analogico del PIC cada cierto tiempo en un archivo que luego podamos ver en nuestras PC's digamos un TXT por ejemplo.

Bueno, esta es la idea principal del proyecto.

Para desarrollarlo basicamente necesito ayuda en la parte de programacion del PIC, pues como veran mas adelante, existe codigo hecho para este dispositivo, pero esta hecho usando un compilador que no es familiar para mi:

SourceBoost C compiler

Si bien es cierto que es tambien un compilador en C, se me hace un poco dificil usarlo. Por eso necesito su ayuda, para PORTAR el codigo a un compilador quizas mas familiar para todos nosotros, el CCS.

Eso es todo por hoy. Veamos como va el proyecto.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 30 de Diciembre de 2008, 02:28:39
Estimado señor Alquimus:

Hace tiempo que vengo descubriendo que en esta vida no existen las casualidades, sino las causalidades.

La empresa en la cual trabajo me acaba de encargar un par de semanas atrás algo muy parecido a lo que usted quiere hacer.
En mi caso se trata de una caja negra para una grua de construcción , la cual va grabando los movimientos de la misma (25LC1024) junto con la cantidad en minutos/horas de dicho movimiento (TMR0 del PIC)  y la fecha en la cual se ha realizado (DS1305/DS1302).
Tengo pensado almacenar temporalmente en la eeprom interna del pic dicho/s movimiento/s con su respectivo tiempo en la eeprom interna, para luego al cabo de unos segundos que el movimiento haya finalizado volcarlo a la eeprom externa junto con la fecha, hora, etc actual.
En estos momentos tengo finalizado el esquema, elegido los componentes , he hecho pruebas simulando en el proteus con el DS1302 (creo que lo cambiaré por el DS1305 que posee una salida de alarma diaria/mensual para interrumpir al micro) y la 25LC256 (que creo me va a quedar chica y la cambio por otra de mayor capacidad) así como el pic 16f877A (que también lo cambiaré por uno de gama alta tipo 18f4550, por tener mas cantidad de interrupciones externas y mas cantidad de registros).

También tengo adquirido 2 VDIP1 desde Farnell.

con esto pretendo hacer un datalogger para almacenar los datos en una memoria USB de alta capacidad 2GB.

Los datos almacenados en una memoria EEPROM externa al PIC serán volcados , cuando el usuario así lo requiera, a un pendrive de cualquier capacidad.

El VDIP1 necesita un dispositivo que controle sus funciones, para lo cual pienso emplear un PIC, tengo en mi poder varios PICs 18F4550 asi que sera este el que empleare.

También me acabo de despertar pensando en cambiar al 18f4550 que tengo 2 , llenos de polvo :P

La comunicacion entre PIC y el VDIP1 se puede realizar en 3 formas, para este proyecto pretendo utilizar el puerto SPI del VDIP1.

También me comunico con el DS1302/05 y la E2rom externa por SPI.

Para empezar, me gustaria lograr almacenar el valor capturado en un canal analogico del PIC cada cierto tiempo en un archivo que luego podamos ver en nuestras PC's digamos un TXT por ejemplo.

En mi caso, también debo capturar una de las entradas que es analógica, junto con varias (unas 20) señales digitales y volcarlo al pendrive en formato legible por el usuario. Por el momento TXT , pero al finalizar debería hacer (o encontrar) algún programa (Excell?) que sea más ameno a la vista.

Para desarrollarlo basicamente necesito ayuda en la parte de programacion del PIC, pues como veran mas adelante, existe codigo hecho para este dispositivo, pero esta hecho usando un compilador que no es familiar para mi:

SourceBoost C compiler

Si bien es cierto que es tambien un compilador en C, se me hace un poco dificil usarlo. Por eso necesito su ayuda, para PORTAR el codigo a un compilador quizas mas familiar para todos nosotros, el CCS.

Eso es todo por hoy. Veamos como va el proyecto.


Aquí es donde diferimos, ya que yo codifico unicamente en assembler :( y he visto que Vinculum tienen un ejemplo en C.

Me gustaría que nos mantuviésemos en contacto y nos ayudásemos mutuamente. Yo estoy , como podrás imaginarlo, más de 8 horas diarias dedicado exclusivamente a este proyecto y sentado frente al ordenador con todas las hojas de datos, simulando, estudiando, codificando y arrancándome de a poco los pelos :)

Espero que ambos , junto con el resto de los foreros podamos sacar adelante nuestros proyectos antes que tengamos que usar peluca , jajaja.

Un saludo desde España
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: RICHI777 en 30 de Diciembre de 2008, 10:48:09
Hola, como dijo "Pibe" los dos proyectos son bastantes similares. Para este tipo de aplicaciones donde el costo no es el principal factor el VDPI1 es una solución elegante y viable. Suerte a los dos y espero que posteen sus xps asi aprendemos algo más.

Saludos !
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: Alquimus en 30 de Diciembre de 2008, 14:34:53
Que tal amigos, gracias por sus posts, vamos Pibe que el proyecto de todas maneras sale, aunque sinceramente nunca programe en assembler los PIC, solo los ATMEL o los MOTOROLA cuando estudiaba en la universidad, una vez que me tope con el CCS, cambio por completo mi perspectiva de programacion. Y es cierto que existen bastantes ejemplos en C para el VDIP1, ejemplos que veremos en el desarrollo de este proyecto.

EMPEZANDO CON EL VDIP1

Antes de adquirir el VDIP1 me estuve informando de las caracteristicas que posee.

Basicamente, es tambien un digamos "Microcontrolador" que lleva un "Firmware" y que dependiendo de la version del Firmware, desempeñara distintas funciones, tantas como vimos en los distintos modulos que tiene VINCULUM. Veamos los distintos tipos de "Firmware" que nos provee VINCULUM:

• VDAP (disk and peripherals)
• VDIF (disk and FTDI Interface)
• VMSC (music player)
• VDPS (disk, PC monitor and slave port)
• VCDC (communication class device)
• VDFC (disk and file copier)

Para este proyecto, en el cual usaremos el VDIP1, el firmware utilizado sera el VDAP que maneja 2 tipos de dispositivos como veremos en la figura:

(http://img379.imageshack.us/img379/2223/vdip1dispona9.jpg)

BOM's : (Bulk Only Mass Storage) o memorias USB.
Como vemos, tambien tenemos la posibilidad de conectar algun periferico que se conecte por USB a nuestro VDIP1.
En el VDIP1, el conector disponible es el que esta conectado al "PUERTO 2", es decir, en el que podemos conectar BOM's o memorias USB. Ahora, no estoy seguro si uno puede conectar indistintamente los dispositivos USB en el Puerto 1 o 2, pero segun veo por las tablas y por lo poco que lei, al parecer uno tiene que utilizar el tipo de puerto para el dispositivo apropiado, es decir, al usar el VDIP1, solo podremos conectar BOM's en el Puerto 2, que es el que tenemos habilitado con conector en nuestro modulo.

La siguiente tabla, describe la posibilidad de conexion de distintos dispositivos USB para los distintos tipos de "Firmware" que provee Vinculum:

(http://img223.imageshack.us/img223/268/vdip2pc0.jpg)

EL MONITOR DE COMANDOS

La comunicacion con el VNC1L (IC incluido en el VDIP1) se realiza enviando instrucciones al Monitor de Comandos e interpretando sus respuestas.
Es decir, para poder comunicarnos con el VDIP1 y utilizar sus funciones, la idea es enviar comandos al llamado "Monitor de Comandos" e interpretar sus respuestas. (bueno, creo que no hice mas que repetir lo que dice el datasheet).
Esta parte la veremos un poco mas adelante, veamos antes los primeros pasos para trabajar con nuestro VDIP1, solo queria definirles este concepto, pues es el mas importante de todos. En realidad la idea central del proyecto conciste en escribir un codigo para el PIC que utilice este monitor de comandos para enviar y recibir respuestas.

EL VDIP1

Veamos la descripcion de pines del VDIP1

(http://img132.imageshack.us/img132/4808/vdip3gv1.jpg)

Bueno, vemos los pines claves del VDIP1, para empezar, lo alimentamos con 5 voltios DC en el PIN1, y el PIN24 es un pin que nos entrega 3.3V para manejar algun dispositivo externo que requiera este voltaje. Ademas de eso, tenemos 2 pines de tierra que son el PIN7 y el PIN18.

Una vez alimentado, solo nos queda seleccionar que tipo de comunicacion queremos efectuar y configurarla:

Es mi eleccion particular utilizar el puerto SPI, sus ventajas y desventajas podran ser discutidas mas adelante, basicamente lo hago porque en el futuro me convendra incluir un puerto serial al proyecto, asi que el PIC manejara un puerto SPI y un puerto serial, se que tambien es posible hacer que el PIC maneje 2 puertos seriales (hay pics que tienen 2 puertos USART en hardware) uno en hardware y otro en software.

Para utilizar el puerto SPI en el VDIP1, tenemos que configurar los jumpers que vemos en el modulo, para ello, basta con referirnos al datasheet:

(http://img405.imageshack.us/img405/3548/vdip4tc4.jpg)

Una vez configurados los Jumpers, solo necesitamos identificar que pines usaremos para utilizar el puerto SPI:

PIN6 - AD0 - SCLK
PIN8 - AD1 - SDI
PIN9 - AD2 - SDO
PIN10 - AD3 - CS

Bueno, ya estamos llegando al punto de que seria necesario postear un esquematico para identificar el circuito basico a utilizar para empezar con nuestro proyecto, sin embargo, antes de hacer esto, hay un paso MUY, pero MUYYYY importante que debemos seguir: LA ACTUALIZACION DEL FIRMWARE.

LA ACTUALIZACION DEL FIRMWARE

Cuando uno busca en internet proyectos que utilicen el VDIP1 o en general el VNC1L, encontraremos diversos comentarios y experiencias, quiero compartir con ustedes las que me sirvieron a mi.

Cuando uno compra el VDIP1, este viene con una version del firmware incluido, con el paso del tiempo VINCULUM ha ido mejorando ciertos problemas relacionados justamente con la comunicacion SPI con el VNC1L, es por esto que si quieremos usar el puerto SPI, primero debemos actualizar el firmware y como hacer esto?, a continuacion algunos tips.

Para actualizar el firmware de nuestro VDIP1, podemos referirnos al manual de usuario del del firmware V205 que podemos encontrar en la pagina oficial de vinculum.
Concretamente encontramos este punto en la seccion 3.1.3 o pagina 10 del manual.

El metodo que utilice fue el de usar una memoria USB para actualizar el Firmware, veamos los pasos uno por uno.

1) Un punto muy importante, que tambien esta detallado en el Manual de Usuario del Firmware, es que el firmware maneja SOLAMENTE BOMS formateados en los sistemas de archivos FAT12, FAT16 y FAT32 y SOLO cuando el tamaño del cluster es de 512 Bytes. Si bien es cierto que esta limitante es algo incomoda al principio, una vez que formatemos nuestra memoria USB, no tendremos ningun problema porque windows (al menos el XP con el que trabajo) no tiene ningun problema para trabajar con este tipo de formato.
Primero, para saber que tipo de formato tiene nuestra memoria USB, se puede hacer lo siguiente:
- Con nuestra memoria USB conectada, vamos a INICIO - EJECUTAR y escribimos cmd para ir a la ventana de comandos que tiene el Windows
- Una vez alli, para chequear que tipo de formato tiene nuestra memoria, podemos usar el comando CHKDSK F: (donde F es la unidad asignada a la memoria) donde veremos algo parecido a esto:

(http://img164.imageshack.us/img164/1456/vdip5fo7.jpg)

Notese en el circulo rojo (que no se nota muy bien jejeje) el tamaño de asignacion para cada unidad, vemos en este caso que es de 1,024 bytes, con este tipo de formato por ejemplo, el VDIP1 no podra trabajar, lo que tenemos que hacer es formatear el disco con la unidad se asignacion adecuada, para lo cual usaremos el siguiente comando (siempre desde la ventana de comandos de windows):

>format f: /A:512  (enter)

donde "f:" es la unidad asignada a la unidad
Una vez formateado el disco, vemos la siguiente imagen, donde distinguimos el tamaño de asignacion para cada unidad con el valor correcto:

(http://img175.imageshack.us/img175/9004/vdip6rk8.jpg)

Bien, eso fue todo, verdad que no dolio?? jajaja.

2) Ahora si vamos a actualizar el firmware de nuestro VDIP1. Para ello, bajamos la ultima version del mismo desde la pagina de vinculum, debemos elegir el firmware adecuado para el dispositivo que estemos manejando en nuestro caso necesitamos el VDAP que es el firmware que usa el VDIP1. En la pagina siguiente encontraremos el firmware:

Downloads de Vinculum (http://www.vinculum.com/downloads.html)

En este caso vamos a bajar el archivo reflash(FTD) que corresponde al firmware VDAP, una vez bajado el archivo, tiene este nombre:

ftrfb_main_03_66VDAPF.ftd

Lo que debemos hacer es renombrar el archivo al siguiente:

FTRFB.FTD

3)Una vez renombrado, lo copiamos al directorio raiz de nuestra memoria USB.

4)Ahora viene la parte importante: para actualizar el firmware, insertamos la memoria USB con el archivo del firmware en nuestro modulo VDIP1, y necesitaremos solamente ENERGIZAR el modulo para que se realize la actualizacion correspondiente. Es muy importante ser pacientes en este punto, pues de interrumpir el proceso de actualizacion del firmware podriamos causar un daño muy grande a nuestro modulo. Lo mas importante es ser pacientes, los leds incluidos en el modulo parpadearan mientras se este realizando la actualizacion y se detendran una vez completada la misma. Al ser pacientes estoy hablando de no menos de 1minuto y no mas de 5 minutos.

Bien , eso es todo,  el firmware esta actualizado y ahora si podremos trabajar con el puerto SPI.

Una pregunta muy importante seria: COMO SABER QUE VERSION DEL FIRMWARE tiene nuestro modulo VDIP1?

Hay una manera sencilla de saberlo, necesitaremos conectar directamente el VDIP1 a nuestra PC, y para ello utilizaremos  el pueto UART del VDIP1, para ello configuramos los jumpers y realizamos un circuito muy sencillo:

(http://img72.imageshack.us/img72/9783/vdip7lb6.jpg)

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.

Quiero hacer referencia a 2 enlaces que me sirvieron mucho mientras hice la actualizacion del firmware, veanlas ustedes mismos y encontraran algunos detalles mas:

Trabajando con VDIP1 (http://u3x.net/al-karem/?m=200810)

Usando el VMUSIC2 (http://www.instructables.com/id/Getting-started-with-VMUSIC2/)

Bueno amigos, eso fue todo por hoy, continuaremos el proximo año. Saludos!!!


Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: RICHI777 en 30 de Diciembre de 2008, 15:11:49
Alquimista, excelente data estas posteando :-)

Saludos !
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 31 de Diciembre de 2008, 07:15:17
Excelente señor Alquimus. Muy didáctico, completo y prolijo su post.

Aquí le dejo un avance de lo que es a día de hoy el esquema de mi proyecto:

cajanegra.DSN (http://www.4shared.com/file/78317670/53f4cd9/cajanegra.html)

Como podrá apreciar aún tengo algunos dispositivos que no corresponden con mi idea final, los cuales son:

PIC 16f877A: Pensaba pasarme a gama alta pero teniendo en cuenta que lo conozco muy bien , pasarme ahora a otro micro con otros parámetros y configuraciones me va a requerir un estudio del nuevo micro. Y no tengo demasiado tiempo para ello. Así que decido quedarme con el viejo 877A.

25LC256 : Esta será cambiada por la 25AA1024 que posee 1m bit de capacidad. Mi proteus no tiene ésta ultima.
DS1302:  Este será cambiado por el DS1305 que es SPI y compartirá las mismas lineas que el  VDIP y la 25AA1024. Mi proteus no tiene DS1305.

Como puede ver, también he dibujado el modulito VDIP con todas sus patillas. Por supuesto que no es funcional sino simplemente gráfico.

Tengo pensado implementar el VDIP al final de mi proyecto. Mis prioridades ahora son la recopilación de cada subprograma (que ya tengo completados en un 90%) para controlar el DS1305 , la memoria 25AA1024 y el programa principal (A éste aún le queda bastante y me falta aclararme varias ideas).
Aquí le dejo una muestra de mi avance en el programa principal. En él puede verse la configuración del micro, junto con algunas variables y la puesta en marcha del DS1305.
ESTE CODIGO NO ESTA TESTEADO AUN.
Iré actualizando éste mismo a medida que vaya codificando.

Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: MGLSOFT en 31 de Diciembre de 2008, 08:18:29
Citar
También posee una entrada analógica externa :
; Célula de carga para pesaje por RA0

Si es lo que imagino, deberas tomar la señal de peso de varias toneladas alli, disponiendo en el mejor de los casos de 10 bits (9 bits en la practica) de resolucion con vref a 5 volts, tendras 1024 o 512 cuentas de display.
Vas a pesar de 100 en 100 kg en el mejor de los casos, eso te servira??? :shock:
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 31 de Diciembre de 2008, 08:27:42
La carga máxima que puede levantar una grúa torre normalmente es de 7 tns.
Los medidores de pesaje se hacen de 10tns.
Por lo tanto 10.000 kgs / 256 (para resolución 8 bits) = 39 kgs de resolución. Con eso me iría fantástico.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: MGLSOFT en 31 de Diciembre de 2008, 08:32:33
No tiene peso la cuba o el recipiente en el cual se traslada la carga??
Ten en cuenta que eso te quita mas resolucion, ya que si bien lo pesas, debes descartarlo como peso muerto o como offset de la medicion.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 31 de Diciembre de 2008, 09:09:47
No tiene peso la cuba o el recipiente en el cual se traslada la carga??
Ten en cuenta que eso te quita mas resolucion, ya que si bien lo pesas, debes descartarlo como peso muerto o como offset de la medicion.

Es verdad, lo tendré en cuenta. Gracias :)
Igualmente , supongo que querrán medir el peso "completo" con cuba y todo.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: micro_cadaver en 31 de Diciembre de 2008, 12:23:52
gracias a Alquimus y a Pibe por sus aportes, será genial tener 2 versiones del firmaware en C y en ASM.

seguire de cerca sus pasos. :-/
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: Alquimus en 08 de Enero de 2009, 14:14:34
Que tal amigos, Feliz Año 2009, despues de un pequeño periodo de descanzo, vuelvo al trabajo.

Como vas Pibe, veo que tu proyecto tambien ha avanzado en gran medida. Veamos como nos va.

Sigamos con el VDIP1

Bueno, como vimos anteriormente, ya tenemos todo listo para poder trabajar con el VDIP1 :
- en primer lugar nuestra memoria USB formateada como debe ser.
- en segundo lugar nuestro VDIP1 con la ultima version del firmware instalada VDAP 3.66 (esto para que pueda soportar la comunicacion SPI)

Bien, eso es todo. Ahora si empecemos a hacer funcionar nuestro VDIP1.

PONIENDO A TRABAJAR EL VDIP1

Vayamos por partes. Queria empezar con algo sencillo y partir de alli ir acercandome al datalogger que queria. En la pagina oficial de vinculum, encontraremos bastantes ejemplos de aplicacion con codigos escritos en C para PIC's, el unico problema es el compilador que usan:

El SourceBoost C compiler : SourceBoost C compiler Home Page (http://www.sourceboost.com/)

Una version gratuita puede ser descargada desde la pagina, todo lo necesario para compilar los programas que nos da de ejemplo Vinculum.

Hay 2 Ejemplos que me interesaron mucho en la pagina de VINCULUM:

1. PIC SAMPLE - HELLO WORLD : Sample code in C for PIC 16F688 to write a file called "Hello.txt" to a Flash disk. Requires SourceBoost C compiler.
El cual puede ser descargado desde esta direccion:

Downloads en Vinculum (http://www.vinculum.com/downloads.html)

2. DATA-LOGGING USING THE VINCULUM VNC1L : Describes methods for using a VNC1L device for data logging applications.
Nuevamente, el documento (muy completo por cierto) y los codigos de ejemplo pueden ser descargados desde este link:

Vinculum Application Notes (http://www.vinculum.com/documents.html)
 
Bien, estos 2 ejemplos nos deberian servir para empezar a andar nuestro VDIP1. El que mas me interesa es el segundo, puesto que es exactamente lo que busco.
Asi que vamos a darle a este segundo ejemplo.

Antes de seguir, les sugiero que le den una leida completa al documento que mencione.

En el documento, se mencionan 2 proyectos:

- Un data logger que utiliza un sensor que se conecta via USB al VDIP1 como fuente de datos.
- Un data logger que utiliza un canal analogico del PIC como fuente de datos.

Me interesa mucho mas el segundo, pues el data logger que pienso implementar utilizara como fuente de datos uno o mas canales de nuestro PIC.
Veremos en el documento, que para implementar el ejemplo que nos plantean, necesitaremos tarjetas de prueba tanto de Microchip, la PICDEM4 como de Vinculum, la VEval Board.
Para nosotros sera suficiente un protoboard, un PIC de la serie 18F, el VDIP1, un potenciometro y algunos cables. (obviamente un programador y tamb el cristal y las resistencias para el funcionamiento basico del PIC)

Notas Importantes:  

- Lo que busco con este ejemplo es hacer trabajar el VDIP1, el ejemplo que nos da VINCULUM en este caso, utiliza el puerto USART del VDIP1 para hacer la comunicacion entre el PIC y el VDIP1, lo que se pretende es utilizar el puerto SPI del VDIP1 para hacer la comunicacion, para eso hacermos algunas modificaciones en el codigo que nos entregan.
- El PIC mencionado en el ejemplo es el 18F1320, el cual no poseo, sin embargo tengo algunos 18F4550, asi que el codigo tamb sera modificado para implementar este PIC.
- La discucion del codigo, pretendo hacerla al final de este ejemplo, pues uno de los objetivos principales es "PORTAR" o "TRADUCIR" este codigo para que pueda ser usado con el compilador CCS.

EL HARDWARE

Bien, aqui les dejo un esquema de como esta implementada esta placa de prototipos. Ojo que es solo un esquema, nada esta simulado.

(http://img107.imageshack.us/img107/7268/vdip8xd0.jpg)

Bien, en vivo y en directo se veria algo asi:

(http://img259.imageshack.us/img259/3793/vdip9wk0.jpg)

Bien, ya estamos listos para empezar a trabajar. Regreso mas tarde. Saludos!!!


Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: droky en 08 de Enero de 2009, 14:37:26
Hola,
Te pego las imágenes, que no salen...
El esquema:
(http://www.idivimage.com/files/ltjjzxmmnzfuzmh3mmz2.jpg)

En vivo y en directo:
(http://www.idivimage.com/files/z2z3jny5zyywmo2iymqt.jpg)

Sigo con atención los avances.
Salu2

Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: Alquimus en 08 de Enero de 2009, 14:40:32
Gracias Droky, a ver si me enseñan por favor a subir imagenes, el servidor que usaba parece ser no muy bueno
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 09 de Enero de 2009, 11:05:47
Señor Alquimus:

Usted debería estar dando cátedras en alguna universidad. La verdad que cada vez que leo uno de sus post me quedo perplejo de lo prolijas, sencillas y amenas que son sus explicaciones.

No sé si colgar el trabajo que estuve haciendo en el tiempo que colgué el último código, ya que he avanzado mucho y son 84kbytes (y subiendo) de asembler y llenarían toda la página de este post.
Os dejo un link.

CAJA6.ASM (http://www.4shared.com/file/80912795/969e7070/CAJA6.html)

ACTUALIZADO AL 15/1/09

El programa no está terminado ni mucho menos, pero ya va teniendo ojos y orejas :P

Calculo (y según le dije a mi jefe) que para fin de este més podría ya tener un prototipo funcionando.

En estos momentos estoy arrancandome los pelos de como sumar los tiempos de actividad, guardarlos en la EE interna, pasarlos al cabo de unos 3 minutos a la EE externa. Pero bueno, ya tengo mas claro de lo que globalmente debe hacer el proyecto.

Para subir los datos yo uso
http://www.4shared.com

Ahí puedes colgar tus archivos y copiar los links que te da para que salgan en el foro.

Buen trabajo colega. Ya nos vamos acercando.

PD: Por cierto, ese pulsador es para lo que yo creo que es? Es para indicarle al micro que grabe datos en el VDIP? Y el led? es para indicar que ha terminado la escritura?
No se olvide de ponerle los condensadores al cristal que no los veo :)
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: Alquimus en 09 de Enero de 2009, 12:52:18
Pibe como vas!! Gracias por tus comentarios, y tus sugerencias.

Acabo de darle un vistaso a tu codigo en ASM, es muy bueno, te felicito por tan arduo trabajo, poco a poco se llega a Roma.

El Pulsador es para iniciar y detener el logeo de datos.
El led cumple varias funciones, indicar si hay memoria USB presente en el VDIP, indicar que estamos listos para grabar e indicar que se esta logeando datos.
Los capacitores no son necesarios en una placa de prototipos, ya hace algun tiempo lei que la capacitancia generada entre los contactos de la placa de prototipos, era suficiente para hacer trabajar el mismo. Para el diseño final ciertamente los pondre.

La nota de aplicacion que esta en Vinculum explica muy bien lo que se hara con este ejemplo basico. Asi que la idea es darle un vistazo antes de continuar. De todas maneras estare posteando los puntos clave del mismo, asi como el codigo para el PIC modificado.

Saludos!!! Ya vuelvo...
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: Alquimus en 09 de Enero de 2009, 14:10:03

Bien amigos, vamos a continuar con nuestra primera experiencia con el VDIP1.

EL CODIGO

Bien, aqui empezaremos con la parte interesante, ya tenemos el hardware listo para trabajar, asi que sumerjamonos en el codigo. Empecemos!!

Bueno, habiamos dicho que existen 3 formas de comunicarse con el VDIP1: UART, SPI y FIFO

El objetivo de este proyecto es implementar el loggeo de datos por el puerto SPI. Asi que vamos a modificar el codigo que nos da la nota de aplicacion para poder trabajar con SPI en vez de UART.

Lo primero que haremos sera bajarnos lo necesario para empezar a trabajar con el codigo:

Nota de Aplicacion para este Ejemplo (http://www.vinculum.com/documents/appnotes/AN_102_Data_Logging_Using_the_Vinculum_VNC1L(FT_000058).pdf) (Para los que aun no leyeron el documento oficial)

El Codigo en C (SourceBoost C Compiler) (http://www.vinculum.com/downloads/samples/vlogger_V101.zip) (El codigo fuente en C)

El Compilador: SourceBoost C Compiler (http://www.sourceboost.com/CommonDownload.html) (Para trabajar con el codigo fuente y compilarlo)

Nota del Autor
Bien, la verdad no estoy seguro que tan popular sea este compilador, sinceramente antes de empezar este proyecto no habia oido hablar de el, sin embargo imagino que los señores de VINCULUM lo eligieron basicamente porque es de libre distribucion, lo cual no ocurre con el CCS por ejemplo y sin embargo los propios señores de CCS ofrecen entre sus productos, placas de prototipo basadas en el VNC1L, pero no he encontrado informacion o codigo escrito en CCS para trabajar con el VNC1L.
Asi que no queda mas que darle una mirada a este compilador y acostumbrarse un poco, la verdad no es tan dificil de usar, sin embargo desde mis inicios trabaje con el CCS, por eso se me hace algo dificil algunas veces, como mencione anteriormente, la idea es portar este codigo al CCS, esa es una de mis metas principales, asi que espero me ayuden amigos mios.


Sigamos con el Codigo

Una vez descargado el codigo fuente, encontramos varios archivos, dejenme contarles a groso modo que hacen los mismos:

ADC.c           : Rutinas y funciones para trabajar con el conversor ADC del PIC
ADC.h           : Cabeceras y definiciones referentes al ADC
monitor.c       : Rutinas y funciones para trabajar con el VDIP1
monitor.h       : Cabeceras y definiciones referentes al monitor
SPI.c             : Rutinas y funciones que manejan la comunicacion SPI con el VDIP
SPI.h             : Cabeceras y definiciones referentes a la comunicacion SPI
UART.c          : Rutinas y funciones que manejan la comunicacion USART con el VDIP
UART.h          : Cabeceras y definiciones referentes a la comunicacion SPI
vacq.c            : Programa principal que logea datos directamente de un puerto ADC del PIC
vlogger.c        : Programa principal que logea datos desde un sensor con interfaz USB.


Bien, esos son todos los archivos, como mencione anteriormente, la idea de este primer ejemplo es trabajar con el logeo de datos directamente desde un canal del PIC, asi que usaremos el archivo de programa principal: VACQ.C, ademas mencionamos que trabajaremos con la interfaz SPI asi que obviamente tambien usaremos estos 2 archivos.

Me gustaria en este punto, explicar un poco la estructura de este codigo, antes de hacer las variaciones al mismo:

El programa principal VACQ.C, es el que hace todo, para comunicarse con el VDIP1 llama a funciones que se encuentran en el MONITOR.C, a su vez, el monitor utiliza la interfaz UART.C para establecer la comunicacion con el modulo. Asi que nuestra primera tarea sera modificar el archivo MONITOR.H para indicarle que usaremos la interfaz SPI en vez de la UART.

Para ello, abrimos el archivo MONITOR.H , en las primeras lineas del codigo encontramos lo siguiente:

Código: [Seleccionar]
// monitor is connected via SPI
//#include "SPI.h"
// monitor is connected via UART
#include "UART.h"

Asi que basta con modificar el codigo para que usemos la interfaz SPI, quedando de la siguiente manera:

Código: [Seleccionar]
//monitor is connected via SPI
#include "SPI.h"
// monitor is connected via UART
//#include "UART.h"

Sencillo, no es cierto? jejeje  :P

Bueno, sigamos, ahora vamos a modificar los pines usados por la interfaz SPI para que correspondan con el Hardware que anteriormente se posteo. Para ello abrimos el archivo SPI.C en el cual encontraremos la siguiente porcion de codigo que define los pines a utilizar:

Código: [Seleccionar]
//***************************************************************************
// 
//  Pin definitions for SPI
// 
//***************************************************************************

// NOTE: pin names are relative to the VDIP2 device

#define PORT_SDI  portb.1 // SDI is RB1 (Port B bit 1)
#define TRIS_SDI  trisb.1

#define PORT_SDO  portb.2 // SDO is RB2 (Port B bit 2)
#define TRIS_SDO  trisb.2

#define PORT_SCLK portb.4 // SCLK is RB4 (Port B bit 4)
#define TRIS_SCLK trisb.4

#define PORT_CS   portb.3 // CS is RB3 (Port B bit 3)
#define TRIS_CS   trisb.3

//***************************************************************************

Todo lo que tenemos que hacer, es modificar los pines, asi que el codigo quedaria de la siguiente forma:

Código: [Seleccionar]
//***************************************************************************
// 
//  Pin definitions for SPI
// 
//***************************************************************************

// NOTE: pin names are relative to the VDIP2 device

#define PORT_SCLK portd.4      // SCLK (on VDIP1) is RD4 (Port D bit 4)
#define TRIS_SCLK trisd.4

#define PORT_SDI  portd.5      // SDI  (on VDIP1) is RD5 (Port D bit 5)
#define TRIS_SDI  trisd.5

#define PORT_SDO  portd.6      // SDO  (on VDIP1) is RD6 (Port D bit 6)
#define TRIS_SDO  trisd.6

#define PORT_CS   portd.7      // CS   (on VDIP1) is RD7 (Port D bit 7)
#define TRIS_CS   trisd.7

Bien, con eso ya tenemos la comunicacion SPI y los pines definidos, solo nos basta modificar el programa principal para ajustar nuestro led y pulsador, asi como el PIC a utilizar. Para ello abrimos el archivo VACQ.C.
En primer lugar modificaremos los pines del led y pulsador para que correspondan con nuestro hardware, solo basta buscar en el archivo el siguiente pedazo de codigo:

Código: [Seleccionar]
// ACTIVE LED is RB5 (Port B bit 5)
#define PORT_LED_ACTIVE portb.5
#define TRIS_LED_ACTIVE trisb.5

// START BUTTON is RA4 (Port A bit 4)
#define PORT_S1 porta.4
#define TRIS_S1 trisa.4

Y modificarlo, quedando de la siguiente forma:

Código: [Seleccionar]
// ACTIVE LED is RB5 (Port B bit 5)
#define PORT_LED_ACTIVE portb.5
#define TRIS_LED_ACTIVE trisb.5

// START BUTTON is RD1 (Port D bit 1)
#define PORT_S1 portd.1
#define TRIS_S1 trisd.1

Bien, ahora solo nos falta cambiar el PIC a utilizar, recuerden que el codigo originalmente esta escrito para trabajar con el PIC18F1320.

Para ello, veamos la parte inicial del archivo VACQ.C, en la cual nos interesa esta parte del codigo:

Código: [Seleccionar]
// PIC18F1320
#ifdef _PIC18F1320
#pragma DATA  _CONFIG1H, _IESO_ON_1H & _FSCM_ON_1H & _INTIO2_OSC_1H; // internal OSC
//#pragma DATA  _CONFIG1H, _IESO_ON_1H & _FSCM_ON_1H & _EC_OSC_1H; // external OSC
#pragma DATA  _CONFIG2L, _PWRT_OFF_2L & _BOR_OFF_2L & _BORV_27_2L;
#else
#error "Only PIC18F1320 devices supported"
#endif // _PIC18F1320

Bien, aqui trate de buscar otro ejemplo escrito para un PIC18F4550 que es el que tengo a mano, asi que lo unico que hice fue copiar la parte inicial, y reemplazando la que mencione, para que quede de la siguiente forma:

Código: [Seleccionar]
#ifdef _PIC18F4550
#pragma DATA _CONFIG1H, _FOSC_HS_1H
#pragma DATA _CONFIG2H, _WDT_OFF_2H
#pragma DATA _CONFIG4L, _STVREN_OFF_4L & _LVP_OFF_4L & _DEBUG_OFF_4L & _XINST_OFF_4L
#pragma DATA _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
#pragma DATA _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
#pragma DATA _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
#else
#ifdef _PIC18F452
#pragma DATA _CONFIG2L, _BOR_OFF_2L & _PWRT_ON_2L
#pragma DATA _CONFIG4L, _STVR_OFF_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
#pragma DATA _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
#pragma DATA _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
#pragma DATA _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
#else
#error "Only _PIC18F4520 and _PIC18F452 devices supported"
#endif // _PIC18F452
#endif // _PIC18F4550

Bien, pero eso no es todo, el codigo ya esta casi listo, pero nos falta indicarle al compilador con que PIC vamos a trabajar, para ello haremos lo siguiente:

Vamos al menu SETTINGS y dentro de el buscamos la opcion TARGET donde definimos el PIC que deseamos usar.

Ahora si, estamos listos para compilar, al compilar me sale un error, que hasta ahora no entiendo, que tiene que ver con las interrupciones que pueda presentar el MONITOR de comandos, al analizar un poco el codigo, me di cuenta que en realidad esta parte no se utiliza, fue por ello que decidi comentar la parte problematica y listo; para ello buscamos la parte problematica:

Código: [Seleccionar]
//***************************************************************************
// Name: interrupt
//
// Description: Handle interrupts from all sources and call required modules.
//
// Parameters: None.
//
// Returns: None.
//
// Comments: None.
//
//***************************************************************************
void interrupt( void )
{
// handle timer1 interrupt
    if (tmr1Interrupt)
{
tmr1InterruptHandler();
}

// handle interrupts (if any) from monitor
if (monInterrupt)
{
monInterruptHandler();
}

// handle interrupts from ADC
if (adcInterrupt)
{
adcInterruptHandler();
}
}

Y lo unico que hacemos es comentar las interrupciones generadas por el MONITOR quedando asi:

Código: [Seleccionar]
//***************************************************************************
// Name: interrupt
//
// Description: Handle interrupts from all sources and call required modules.
//
// Parameters: None.
//
// Returns: None.
//
// Comments: None.
//
//***************************************************************************
void interrupt(void)
{
// handle timer1 interrupt
    if (tmr1Interrupt)
{
tmr1InterruptHandler();
}

// handle interrupts (if any) from monitor
/* if (monInterrupt)
{
monInterruptHandler();
}
*/
// handle interrupts from ADC
if (adcInterrupt)
{
adcInterruptHandler();
}
}

Nota del Autor

- Esta libertad de comentar esta porcion del codigo me la tome por un pequeño analisis que hice a todo el codigo, no estoy 100% seguro de si esta modificacion afectara otras funcionalidades del codigo, sin embargo en las pruebas realizadas no parece tener algun efecto. Si alguien descubre la importancia de esta interrupcion en este codigo en particular, por favor agradecere mencionarlo.

Bueno amigos, eso es todo, una vez mas vamos a compilar el codigo y listo!! Obtenemos con exito los archivos para grabar en nuestro PIC.

Bien, para facilitarles las cosas, aqui les dejo todo el proyecto comprimido, incluidas las modificaciones mencionadas, asi como el archivo listo para grabar en nuestro PIC18F4550 para trabajar con el hardware posteado:

vlogger_V101modificada.rar (http://www.4shared.com/file/79801032/5f6b1958/vlogger_V101modificada.html)

Bien amigos, publicare los resultados de la primera prueba en unas horas, es hora de almorzar!!! Provecho!!!  :-/ :mrgreen:



Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: Alquimus en 09 de Enero de 2009, 16:08:23
Bueno, terminado el almuerzo (Un Lomo Saltado, que bueno que estuvo!!  :P)

Veamos los resultados de nuestra primera prueba con el VDIP1:

- Una vez grabado el hexadecimal en el PIC, y alimentado el circuito, inicialmente hace una inicializacion, luego, hay varios estados que se pueden ver:

1: Circuito sin Memoria USB conectada: El Led parpadea rapidamente
2: Circuito con Memoria USB y listo para logear: El Led parpadea lentamente, aproximadamente cada 2 segundos
3: Circuito logeando: El led parpadea lentamente.

Entonces, una vez conectada nuestra memoria y confirmando que el led parpadea aprox cada 2 segundos, no tenemos mas que presionar el boton.
Al presionarlo, confirmamos que el mismo parpadea lentamente ademas de ver actividad en los leds del modulo VDIP1 asi como en el led presente en la Memoria USB, indicativo de que efectivamente se esta grabando.

Para fines practicos, la entrada analogica del modulo la conecte a 0V y de rato en rato la cambiaba a 5V, el uso de un potenciometro tambien esta contemplado, tan solo queria notar la diferencia de datos en el archivo generado, por eso use solo 0V o 5V.

Una vez pasados unos ... 60 segundos, es hora de presionar nuevamente el boton. Y de esta manera se detiene el logeo.

Bien, eso es todo, vamos a ver que tenemos en nuestra memoria, para eso la llevamos a nuestra PC.

Efectivamente, vemos que se ha creado un directorio llamado VLOG
Dentro del directorio encontramos un archivo: VLOG0000.BIN con un tamaño de 26624 bytes. (26k)
(Recordemos que el muestreo programado para este ejemplo estaba en 5ms, es decir, cada 5ms el PIC tomaba una muestra)

La idea es abrir el archivo VLOG0000.BIN con un editor hexadecimal para poder ver los resultados obtenidos. Pueden usar el de su preferencia, particularmente yo utilizo el HEXPLORER, que lo pueden bajar de este link:

Editor Hexadecimal de archivos (http://hexplorer.sourceforge.net/)

Una vez instalado este pequeño programita, procedemos a abrir nuestro archivo:

Interpretemos un poco los valores que aparecen al ver el archivo:

- El programa de ejemplo graba datos en bloques de 512 bytes, es decir, una vez que hayan disponibles 512 bytes recien los escribe a la memoria USB, y al inicio de cada bloque exiten 4 bytes que muestran un contador de milisegundos de funcionamiento, eso para ver si se ha perdido alguna muestra. Los siguientes 508 bytes, son muestras.

Veamos una imagen:

(http://img413.imageshack.us/img413/7366/vdip91qn5.jpg)

Interpretemos esta imagen: marcados en circulos rojos, vemos los inicios de los bloques de 512 bytes, los 508 bytes restates todos estan e FF (256) porque el pin del PIC lo tenia conectado a 5V en este periodo.

Ahora veamos que paso cuando hicimos el cambio de 5V a 0V, vemos tambien marcado en un bloque rojo el inicio del segmento de 512 bytes, seguido de datos correspondientes a otros tipos de lecturas

(http://img108.imageshack.us/img108/3493/vdip92kb5.jpg)

Y bien, eso es todo. Con esto hemos puesto a trabajar a nuestro modulo VDIP1. Queda ahora mucho por hacer, pero creo que se ha avanzado algo.

Saludos!!

Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 09 de Enero de 2009, 18:49:36
 :shock: no se ve nada
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: Alquimus en 09 de Enero de 2009, 20:22:42
Cuestion de paciencia Pibe, las imagenes si cargan, solo hay que darles click derecho y mostrar imagen. Pero de que estan, estan!!  :)
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 14 de Enero de 2009, 16:30:57
Ya son 63kb de assembler y subiendo  :mrgreen:

Ya tengo la parte donde leo las entradas, cada un segundo le sumo 1 segundo a su correspondientes contadores si la entrada estaba activa.
A los 10 minutos sumo todos los minutos de actividad de cada maniobra que tenia en la RAM con los datos que tenía en la EEPROM interna correspondiente a cada entrada.

Hago unas comparaciones para pasar 60 minutos a horas y de 256 horas pasar a un segundo byte alto de horas (257 horas en adelante, ya que luego guardaré todos estos datos una vez al mes en la EE externa).
Luego actualizo los datos de la EE con los nuevos datos sumados.
También he hecho una verificación de que si el dato que tenia guardado en la EE es el mismo que el que le voy a grabar (o sea que no hubo maniobra) que no lo grabe y saltee esa dirección para preservar vida útil de la EEPROM.
Al final , borro la RAM de datos de maniobras para volver a empezar.

Ahora me toca incluirle el resto de incidencias , ajenas a las maniobras, como son la veleta, etc etc.

He actualizado el link al programa que había posteado arriba

Mas noticias en breve.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: Leon Pic en 14 de Enero de 2009, 17:55:54
Que buen post. Ya está en mis favoritos  :-/.

Cuestion de paciencia Pibe, las imagenes si cargan, solo hay que darles click derecho y mostrar imagen. Pero de que estan, estan!!  :)

En mi caso, algunas andan, y otras no. :(
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: Alquimus en 15 de Enero de 2009, 15:01:21
Tienen razon, las imagenes se ven unas veces y otras no, mis disculpas por esto, lo que pasa es que no conocia un buen servidor de imagenes. Puedo subir todas las imagenes a un mejor servidor que ya encontre, pero como hago para modificar los posts anteriores? imagino que tendria que hablar con un administrador.
Saludos, ya viene el analisis de la comunicacion SPI y a empezar a trabajar en la traduccion del codigo a CCS.

Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 15 de Enero de 2009, 16:11:49
Alqui, solo tienes que volver a tu post anterior, pinchas en el botoncito "modificar" , modificas a gusto y le das a "guardar". Y listo.

Me estoy volviendo majara, loco, deprimido, no se si cortarme las venas o dejármelas largas, ya no tengo uñas que comerme.
El sistema de envio de direccionamiento de 24 bits de la eeprom externa me hace sudar mares. Las sumas de 24 bits, las restas, las comparaciones para que no exceda la página, para que no exceda el bloque. AAAAAAAAAAAAAAAHHHHHHHHHHHHHHH , UNA CAMISA DE FUERZA !!!! :? :? :?

Estoy empezando a tener dudas que la memoria de programa del 877 me alcance. SOCOOORROOOOO!!! :-) :-)

Cuando tenga que imprimir el programa para mostrárselo a mi jefe, mejor empezar a talar el amazonas porque voy a necesitar muuucho papel :P
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: Alquimus en 15 de Enero de 2009, 19:43:09
Listo Pibe!, gracias por el dato.
Me parece que ahora las imagenes cargan mucho mejor. Y ahora, como hago para borrar un post? hay un par de ellos que ya no serian utiles,pude corregir casi todos. Si se puede, pasenme la voz.

Saludos!!!
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 15 de Enero de 2009, 20:42:28
Solo un admin puede borrarlos. A lo sumo lo que podrias hacer es dejarlo sin texto con la opcion de modificar.

80kb y subiendo
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: droky en 15 de Enero de 2009, 21:46:27
Mamma mía... como sigas subiendo vas a acabar como tu avatar.. que no pase nada...
Muy currado todo.
Salu2
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 21 de Enero de 2009, 18:09:31
Me parece que la empresa en la que trabajo no va a sobrevivir hasta que termine el proyecto. Por el momento sigo codificando. Mañana empiezo mis primeras pruebas de debugeado en hardware y ya saben; cambiar codigo y volver a grabar, meter leds de por medio para saber donde se para, etc etc
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: Alquimus en 22 de Enero de 2009, 19:45:09
Animo Pibe!, las cosas no estan bien en todas partes, por ahora estoy con poco tiempo y no he podido continuar con mi desarrollo, ni bien tenga un tiempito estare posteando denuevo. Saludos!!
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 27 de Enero de 2009, 09:54:35
Recién hoy me llegaron los materiales que me faltaban. La empresa se tardó 7 dias en mandar el pago de facturas atrasadas, así que mira que mal les va.

Bueno, ya tengo el 877 conectado al DS1305 por via SPI.
AL principio le grabé la fecha actual con minutos y segundos , lo volvía a leer y lo mostraba por el puerto D.
Todo contento!
Pero...
Siempre me mostraba lo mismo. Caray. Y los segundos siempre me los mostraba en 00
Luego de pasearme 10 minutos en circulos con el lápiz reglamentario en la boca mordisqueándolo, con mirada perdida y mascullando me vuelvo a sentar , mido el oscilador del ds1305 y nada... ni la sombra de una onda. Cambio otro xtal y nada.... voy y busco en la "zona de guerra" donde tengo cientos de placas de vaya a saber Dios donde salieron y encuentro un xtal aplicado a un PCF8563 que es otro RTC, lo conecto y BINGO!
Lee los segunditos y los muestra un lujo.
Así que ya sabeis, se deja grabar, se deja leer incluso si no funciona su oscilador .

Mañana toca lidiar con la 25AA1024.
Más noticias mañana.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 29 de Enero de 2009, 09:17:29
Ya he logrado poner en marcha la eeprom externa.
 Leo el RTC con la fecha , minutos, etc y lo guardo en la eeprom para luego leerlos y mostrarlos por un puerto.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 06 de Febrero de 2009, 06:57:39
Bueeeno.

Como veo que mi colega Alquimus me ha abandonado... paso a postear el estado de mi caja negra.

El programa principal está casi completado a falta de :

- Logeador de caídas de tensión (me falta un diodo zener para ponerlo en marcha y hacer su subrutina)
- Logeador de pesaje (me falta la célula de carga y hacer el hardware para que le envie al micro la señal analógica)
- Conexión con el VDIP (acabo de actualizarle el firmware y voy a leer sus hojas de datos)

El resto está todo implementado y probado.
- Toma decisiones si el hardware es nuevo o ya contiene datos y de ser nuevo borra E2int, E2 ext , resetea punteros EEexterna, Graba tiempo en DS1305
- Toma de decisiones acorde al mes o dia actual
- Lectura del DS1305
- Guarda fecha en E2interna
- Lee entradas de todas las maniobras e incidencias
- Acumula datos en RAM de cada maniobra/incidencia
- Cada 10 minutos graba tiempo y duración maniobras/incidencias en E2interna o en E2 externa segun sea el caso
- Actualiza punteros de E2externa para futuras grabaciones.

Ahora bien... tengo varias dudas:

1- Puedo formatear el USB en sectores de 256 bytes en lugar de 512? (me vendría genial ya que cada página del 25aa1024 es de 256)

2- Tenía planeado conectar el VDIP por SPI, pero si fuese así me vería complicado cuando deba descargar la E2externa al VDIP:
 
    -Debería leer una pagina de 256 bytes de la E2externa, cargarlos a la RAM del micro y no ando muy holgado de RAM con el 16f877
    -Seleccionar el VDIP y abrir un archivo en el USB.
    -Cargarle los 256 bytes que acabo de leer (se puede sólo 256 o deben ser 512 bytes?
    -Cerrar archivo (se puede dejar abierto hasta meterle otros 256 bytes? )
    -Vuelta al principio hasta descargar toda la E2externa

3- Al grabar el nuevo firmware del VDIP los leds me han parpadeado por 1-2 segundos solamente. Es normal?
Por las dudas lo he dejado conectado 30 minutos :P

4- Y más profunda duda: No está el mismo ejemplo para el VDIP en assembler? No me refiero al asm compilado , porque no se entiende nada. Sino a un asm fuente o algún link de alguien que haya controlado el VDIP con asm. He mirado por la web pero nanín.

Dicho esto voy a sacarme otro café y a seguir leyendo el datasheet de vinculum que son unas sabrosas 77 páginas.

PD: Alquimus, vueeeelveeee a casa vueeelveeee por navidaaaad :P
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: micro_cadaver en 06 de Febrero de 2009, 12:08:06
Hola pibe, converse con Alquimus y me dijo que estaba con mucho trabajo que le tenia alejado del proyecto, pero ya se esta dando tiempo.

Gracias a ti tambien pibe por seguir con el hilo.  :-/

saludos
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 06 de Febrero de 2009, 13:11:19
He conectado el VDIP a un max232 y éste la PC.

El VDIP enciende sus leds, el pendrive también indicando que está listo para ser vejado sexualmente  :mrgreen:

Abro el hyperterminal con el set 9600 no hardware pero no puedo escribir nada en la ventana. A que se debe?
Que hago? me corto las venas o me las dejo crecer?  :D

Bueno, ya si eso el Lunes sigo molestando. Ahora toca jugar al X3 terran conflict que me tiene más preocupado que el proyecto  :-/
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 09 de Febrero de 2009, 09:17:25
Puesta en marcha del VDIP:

1- Formatear dispositivo pendrive conectádolo a una pc, en FAT32

2- Entrar en ejecutar- CMD - y poner format G: /A:512 (donde G es la letra del pendrive)

3- Bajar último flash de vinculum desde http://www.vinculum.com/downloads.html , archivo para VDAP, reflash FTD.

4- Renombrar el archivo a FTRFB.FTD

5- Copiar archivo en pendrive

6- Para poder testear el VDIP ,CONECTAR EL VDIP A LA COMPU CON CABLE RS232 Y MAX232:

   PIN 10 DEL VDIP A MASA
        PIN 7 VDIP A MASA
        PIN 1 VDIP A +5V
        PIN 6 VDIP AL PIN 11 MAX232
        PIN 8 VDIP AL PIN 12 MAX232
   PIN 13 MAX 232 AL PIN 2 HEMBRA DB9
   PIN 14 MAX232 AL PIN 3 HEMBRA DB9
        PIN 5 HEMBRA DB9 A MASA

        COMPONENTES EXTERNOS DEL MAX232 : 3 CONDENSADORES (VER HOJA DATOS MAX232)
   AMBOS JUMPERS DEL VDIP ENTRE PIN 1 Y 2

7- ABRIR EL HYPERTERMINAL DE WINDOWS Y ESCOGER EL puerto COM QUE CORRESPONDA, PONERLO EN MODO 9600 8-1-N NINGUNO

8- PROPERTIES-  PESTAÑA SETTINGS - ASCII SETUP - TODAS OPCIONES MARCADAS EXCEPTO FORCE INCOMING DATA 7 BITS
    Y SEND LINE ENDS WITH LINE FEED

9- Alimentar VDIP

10- CONECTAR EL PENDRIVE AL VDIP Y ESPERAR ACTUALIZACIÓN , VER LEDS VDIP E HYPERTERMINAL INDICANDO EL FINAL

11- DESCONECTAR EL PENDRIVE Y BORRARLE EL ARCHIVO .FTD Y VOLVER A CONECTARLO AL VDIP

12- ENTRARLE AL HYPERTERMINAL FWV Y NOS DA LA VERSION ACTUAL DEL FIRMWARE

13- IPA (ENTER) (Configura el VDIP de comandos para trabajar con valores en ASCII.)

13- OPW TEST.TXT (ENTER) (ABRE/CREA UN ARCHIVO CON NOMBRE TEST.TXT (NO ACEPTA NOMBRES DE MAS DE 8 CARACTERES!))

14- WRF 12 (ENTER y ESPERA LE INGRESEMOS LA PROXIMA LINEA) (LE INDICAMOS QUE VAMOS A ESCRIBIRLE 12 CARACTERES AL ARCHIVO)

15- Hello World! (ENTER AUTOMATICO AL LLEGAR AL LLEGAR AL LIMITE DE CARACTERES INDICADOS EN LA LINEA ANTERIOR)         

16- CLF TEST.TXT (ENTER) (CERRAMOS ARCHIVO)

Ya podemos desconectar el pendrive del VDIP y enchufarlo a la compu para comprobar con una sonrisa de oreja a oreja que ha creado un archivo
llamado TEST.txt y dentro de él podemos ver la frase Hello World!  :-/ :-/ :-/

Existen muchos más comandos interesantes. Ver ésta página en portugués: http://www.rogercom.com/Microcontrolador/Pag03.htm

También podemos darle una extensión .BIN y leerlos con el WINHEX, que es un programita que va de lujo.


Ahora toca descubrir como hago para controlarlo con el PIC. Toca darme cabezasos contra el teclado  :mrgreen:
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: micro_cadaver en 09 de Febrero de 2009, 19:09:22
hola pibe, felicitaciones ya lo hicistes arrancar  :-/

espero no incomodarte con mi pregunta algo básica, es sobre el vdip1 es que pienso usarlo en modo spi y sera controlado por un chip de 3.3V PIC24HJ256GP210 el inconveniente es si el bus SPI del VDIP1 tiene la salida en niveles 5V TTL o en 3.3V?

no encontre dicha informacion en el datasheet derepente tu la conoces.

gracias  :-)
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 12 de Febrero de 2009, 16:35:38
Querido cadaver:

Precisamente hoy me he topado de morros contra una bonita pared: El SPI del dichoso VDIP no es un SPI como tal. Si ves la datasheet del VDIP podrás ver que el maldito quiere primero 3 bits, luego los 8 bits de datos, luego mas reloj para poder leer un bit 1/0 de status por el SDO, y mas reloj antes de cerrar el CS. Si eso es SPI... yo soy Mozart. Tuve que ponerme con toda la paciencia china a hacer el programa SPI por software, ya que los niños de vinculum sólo programan en C y lo compilan con un programa que se los debe vender algún pariente suyo.
Así que, a pelo, bit a bit, mirando el osciloscopio y simulando en Proteus pude hacer una rutina de lectura y escritura por los mismos pines que uso para SPI por hardware y que los comparto con el DS1305 y la 25AA1024.
A última hora de trabajo le di marcha, le mandé un caracter "E" y esperaba recibir un "e" del VDIP como respuesta, pero nada. Al ir llegando a casa y rumeando lo que podía estar mal me he dado cuenta que me he olvidado de mandarle el "CR" (carriage return) despues de cada comando.
Mañana lo pruebo y les cuento.

Respecto a los niveles... por lo que creo es 5v. Los 3,3 creo son para alimentar un posible segundo USB en caso de necesitarlo, no lo se. No tengo las hojas de dato en casa.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: Alquimus en 12 de Febrero de 2009, 16:45:16
Asi es mi estimado Pibe, eso: NO ES SPI  :lol:
Yo me atore en esa parte, es decir, no compile codigo propio, mas bien puse a trabajar el que ellos te daban en el dichoso compilador suyo. Pero ya vamos acercandonos, creo que ya estamos en el punto donde debemos remangarnos las manos y trabajar a mano.
Lamento haber descuidado el tema, el trabajo me ha tenido viajando de un lado a otro estos dias y bueno, el timpo es cruel con todos.
Aun asi, si puedo apoyar en algo, aqui estamos.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 13 de Febrero de 2009, 08:39:11
Alqui, necesito tu ayuda porque no puedo lidiar con el SPI por software. Lo he probado y me encuentro en la disyuntiva si no recibe porque fallo al hacer el bit bang del SPI por software o si fallo con los datos que le mando.

He "intentado" comprender que hace para comunicarse por software con el programa original en C. Modificarlo para quedarme solamente con las rutinas que manejan el el VDIP en SPI y descartar la comunicación entre el pic y la PC por UART.
Para peor el manual del VNC1 son de 77 páginas pero de las 77 páginas sólo 2 realmente despejan alguna duda. El resto parece estar escrito en arameo, no contiene información importante de como, cuando y donde enviar los comandos. Es el peor manual de usuario que he leído en mi vida.

Aqui el link de ejemplo en C del VDIP usando un 16f688 en modo uart para comunicarse con la PC y en modo SPI por software para comunicarse con el VDIP.

http://www.vinculum.com/projects/vnc1l-spi.zip

He logrado compilarlo con el boostC, me ha dado un archivo ASM pero es ininteligible como podrás imaginar. Además que al compararlo con los comandos del C es tan cómico !... Por ejemplo: en asm para poner un pin a 1 haces "bsf PIN" y el asm que me ha compilado el boostC me hace lo mismo pero haciendo MOVLW, AND, IORLW, BTSC, cambio de bancos etc etc. Inaceptable.

He simulado el HEX que me da el boostc y funciona. Por el proteus puedes ver como manda señales SPI constantemente al VDIP porque recibe 00 por UART constantemente. Se puede notar en el osciloscopio claramente definidos los 13 pulsos de clock al mandar cada dato por el SPI. (Recuerda que son 3 bits de R/W, 8 de datos , 1 Read status, 1 salida.)

En resumen:

Necesito por favor , tu que sabes de C, me modifiques el programa fuente del link de arriba. Sólo necesito las rutinas SPI, descartar todas las del UART. Yo lo he intentado pero entre whiles, ifs, breaks me pierdo , al compilarlo no deja de darme errores  y no tengo idea de como corregirlos.
Lo suyo sería que pudiese mandarle al VDIP por SPI uno o dos datos de variables (casi siempre son 2: 1 de comando y otro de carriage return) , y luego poder leer por SPI la respuesta a ese comando y guardarlos en otras 2 variables.

Te crees capáz de hacerlo?  :-/

Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: micro_cadaver en 13 de Febrero de 2009, 11:51:01
el problema no es si alguien se crea capaz de hacerlo, el problema para muchos (entre los que me incluyo) es el tiempo disponible para estos proyectos, pues como dicen por ahi no solo de PICs vive el hombre.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 13 de Febrero de 2009, 14:04:40
Para uno que sepa C será coser y cantar. Hasta yo , que no sé nada de C entiendo que hace la rutina.
 El tema es que para poder "pelarla" y dejar las rutinas SPI solas para poder usarlas sin que me de 500 errores debo saber que he hecho mal, y ahí es donde se necesita saber C  :mrgreen:
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: MGLSOFT en 13 de Febrero de 2009, 15:50:17
Primer paso:
Esas rutinas estan hechas para un cristal de 20 mhz.

Esa es la frecuencia del cristal que utilizas??
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 13 de Febrero de 2009, 20:57:51
Sip
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: MGLSOFT en 13 de Febrero de 2009, 21:02:29
Ya te cambiaste al 18F ??
Hay que cambiar dos registros al manejar las salidas en ese pic...
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 14 de Febrero de 2009, 05:13:25
Si, ya uso el 18f4550.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 14 de Febrero de 2009, 06:21:40
Mira lo que he encontrado pululando por la web  :-/

I have implemented SPI to the Vinculum VDIP.  It is a little tricky, I did it by bit shifting.  See code below...

I am using a PIC18F4550:


/*
** SPI_Write_Char
*/
void SPI_Write_Char(char spi_data)
{
   char temp1,temp2;
     
   temp1 = (spi_data >> 3) | (0b10000000);
   temp2 = ((unsigned int)spi_data << 5);

   SPI_CS = 1;

   SSPBUF = temp1;
   while(!SSPIF); //wait until transmitted
   SSPIF = 0;
   SSPBUF = temp2;
   while(!SSPIF);
   SSPIF = 0;
   SPI_CS = 0;
}
/*
** SPI_Read_Char
*/
char SPI_Read_Char(void)
{
   unsigned char temp,temphi,templo;
   SPI_CS = 1; //set CS high
   SSPBUF = 0x60; //send read command
   while(!SSPIF); //wait until transmitted
   SSPIF = 0;
   temphi = SSPBUF;
   SSPBUF = 0; //send dummy value
   while(!SSPIF); //wait until transmitted
   SSPIF = 0;
   templo = SSPBUF; //read data
   SPI_CS = 0; // set CS low
   status = templo & 0x10;  //needs to verify
   temp = ( ((unsigned int)temphi) << 3) | (templo >> 5); //shift to make temp = D7-D0
   return temp;
}

Hope this helps





Ahora, se puede poner este trozo de código C dentro de un asm?
 Cómo hago para llamar a la rutina "SPI_write_char" y "SPI_read_char"?
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: MGLSOFT en 14 de Febrero de 2009, 08:24:55
Hay un error conceptual en tu pregunta.
Desde C se pueden introducir lineas en assembler, pero a la inversa no.

Todas esas rutinas utilizan el modulo SPI interno, si lo hacen en C, hacerlo en assembler es una papita.
Yo leeria y reeleria como usar el SPI en assembler y traduciria estas rutinas a assembler. :mrgreen:
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 14 de Febrero de 2009, 08:43:44
Si, ya se que usa parte bit shift y parte hardware SPI. EL tema es cómo mete los 3 primeros bits sin el SPI hardware, o sí lo hace por hardware?
 Ves que no entiendo de C?  :mrgreen:

Cómo compilo este pedacito de código para que me de un output .asm? qué me falta? Cómo declaro las variables en C? Cómo le declaro las directivas para el 18f4550? Son muchas preguntas?  :mrgreen:
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: MGLSOFT en 14 de Febrero de 2009, 09:01:04
A ver si te ayudo.
El shift bit que hace en realidad no va al SPI, es una preparacion del dato a enviar por SPI.

/*
** SPI_Write_Char
*/
void SPI_Write_Char(char spi_data)   <<<< el byte a transmitir se pasa al llamar la funcion, equivale a cargarlo en W y llamar a la rutina en assembler
{
   char temp1,temp2;          <<<<<<<    Aqui declara dos datos de un byte cada uno
     
   temp1 = (spi_data >> 3) | (0b10000000); <<<<  prepara el dato, rota 3 posiciones a la derecha y hace un OR para dejar activo el bit de mayor peso.

   temp2 = ((unsigned int)spi_data << 5); <<<< formatea el dato a un byte luego de una rotacion de 5 posiciones

   SPI_CS = 1;  <<<< pone el pin chip select del SPI en 1 (recien aqui empieza la comunicacion)

   SSPBUF = temp1;  <<<< Carga el dato en el buffer del SPI por hardware
   while(!SSPIF); //wait until transmitted  <<< espera a que el hardware termine de transmitir
   SSPIF = 0;  <<<< creo que limpia la bandera de interrupcion (ver documentacion)
   SSPBUF = temp2;  <<<<< ahora carga el segundo byte que preparo al principio para enviarlo por SPI
   while(!SSPIF);  <<< espera a que el hardware termine de transmitir
   SSPIF = 0; <<<< creo que limpia la bandera de interrupcion (ver documentacion)
   SPI_CS = 0; <<<< pone el pin chip select del SPI en 0 (aqui termina la comunicacion)
}
/*
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 14 de Febrero de 2009, 11:02:13
 :shock:

Pero, en teoría debería enviar 3 bits que indican si se escribe o se lee  100 o 110 , luego manda o recibe el byte de datos, luego hace 1 clock mas para poder leer un bit de status por SDI si la lectura/escritura es correcta y cierra CS, luego debería hacer otro clock más antes de repetir la operación que se desee.
Esa es la teoría y lo que indica el datasheet. Aquí entonces no sé que hace enviando 16 bits en 2 datos  :?
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: MGLSOFT en 14 de Febrero de 2009, 11:45:00
No se puede enviar solo 3 bits por SPI por hardware, hay que enviar el byte completo.
Lo que no se es porque poner el bit de mayor peso en 1 al enviarlo.
El byte de datos es de 5 bits, para escribir que??
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 14 de Febrero de 2009, 17:02:34
A menos que esté tratando de engañar al VDIP. O sea que puede que mueva el byte inicial al SSPBUF , cuente 5 pulsos de reloj y ENTONCES active el CS para que el VDIP comience a leer desde el 5 bits en adelante. O sea que el VDIP lea solo 3 bits. Puede ser?
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: MGLSOFT en 14 de Febrero de 2009, 18:48:26
Ahi vas a tener que conocer si el Vdip lo admite, y hacer tu rutina a mano...
No usarias el SPI por hardware.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 15 de Febrero de 2009, 06:15:25
Esto va a terminar mal.
Ya me veo haciendo la rutina de comunicación por EUSART.  :(
Pero es que esta gente es tonta o que?
No podrían haber hecho un firmware que le mandes 1 byte entero de comando como se hace para manejar las E2prom SPI? Al que diseñó el integrado habría que colgarlo de una plaza pública.  :x
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: MGLSOFT en 15 de Febrero de 2009, 22:36:34
Podrias tomarte el trabajo de publicar aqui como es el tema de comunicacion SPI con el VDIP, segun su manual??

Eso ayudaria a que pudieramos ayudarte mejor. :mrgreen:
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 16 de Febrero de 2009, 04:47:05
Como no, señor ser supremo !

En este puedes observar el ciclo de escritura:
(http://img.photobucket.com/albums/v165/carlyvalente/Dibujo2-1.jpg)




y en este el de lectura
(http://img.photobucket.com/albums/v165/carlyvalente/Dibujo1.jpg)


Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 16 de Febrero de 2009, 09:48:20
Ya he abandonado la idea de hacerlo por SPI, he probado de mil maneras y nada.
 Podría seguir intentando pero tampoco voy sobrado de tiempo. Voy a probar por UART y os cuento.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 16 de Febrero de 2009, 15:28:48
Bueeno. Al menos ahora inicializa cuando le conectas el pendrive, cosa que en el modo SPI no hacía ni aunque le amenazase de tirarlo por la ventana  :mrgreen:

Ahora bien, ahora creo que el problemita que tengo es "entenderme" con él. O sea los comandos que si son cortos, que si extendidos, que si ascii , que si hex. Pero ya casi lo tengo, me falta un pelín.  :-/
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: MGLSOFT en 16 de Febrero de 2009, 15:38:37
Ese VDIP, para que tiene el USB??
Ademas de hacer la funcion de guardado de datos que cosa te ofrece que no puedas hacer desde el 4550 sin el VDIP?? :shock:
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 16 de Febrero de 2009, 15:49:29
Que el 4550 no es HOST. No puedes meterle un pendrive así como si nada al 4550 porque ambos ,tanto el pendrive como el 4550 ,son USB slaves.
Por eso el VDIP es un USB host que te permite comunicarte con un periférico slave cualquiera .
Por ejemplo: Una PC tiene USB host . EL VDIP (con su integrado y su firmware) simula un host de una PC, por así decirlo.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: MGLSOFT en 16 de Febrero de 2009, 15:59:00
Ahora entendi!!
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: RICHI777 en 16 de Febrero de 2009, 21:44:12
Hola Pibe, veo que no te das por vencido !!!, un consejo de un viejo, se nota de sobra que la tenes clara y mucho empuje, pasate a "C" que vas a sacar mas provecho del tiempo y perdes poca potencia.

Saludos !
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: MGLSOFT en 16 de Febrero de 2009, 22:44:57
Estoy 100% de acuerdo con Richi... :mrgreen:
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 17 de Febrero de 2009, 04:49:08
Posi  :lol:
Ya cuando termine con ésto me meto en C
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 17 de Febrero de 2009, 12:43:14
E U R E K A !

Lo he logrado!!!

Ya puedo comunicarme con el maligno, el innombrable VDIP !!  :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/

He abierto un archivo con el mismísimo PIC, le he puesto datos , lo he cerrado y ahí estaba!  :-/ :-/ :-/

Ahora voy a putearlo metiéndole 131k byte por cabrón! jajajaja

A ver cuanto tarda.
Ah, por cierto; lo estoy manejando por euart a una impresionante velocidad de 115.000  :-)
También con la interrupcion por RX de la uart puedo detectar cuando conectan un pendrive sin necesidad que el micro esté mirando por él. Asimismo al conectar chequeo el prompt y mando un ECHO y espero su respuesta para sincronizar
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 17 de Febrero de 2009, 15:38:24
Que cosa rara.... :shock:

Resulta que le mando el comando de abrir archivo, cantidad de datos a archivar, poner el dato X en el archivo, cerrar archivo y todo bien.

Por ejemplo:
1- Comando abrir/crear archivo
2- Comando "te voy a enviar 4 bytes" para que agregues al archivo
3- Agregar "H" al archivo abierto
4- Agregar "o" al archivo abierto
5- Agregar "l" al archivo abierto
6- Agregar "a" al archivo abierto
7 - Comando cerrar archivo

Esto lo hace de maravillas.


 Pero por ejemplo si le hago:
1- Comando abrir/crear archivo
2- Comando "te voy a enviar 255 bytes" para que agregues al archivo
3- Agregar X all archivo abierto
4- Llegamos a 255?
5- No, vamos a punto 3
6- Si, Comando cerrar archivo

Esto ya no le gusta.  :shock: .Ni siquiera me crea el archivo.
Le he dado vueltas y vueltas, y a no ser que sea porque me demore 4 microsegundos en las comparaciones, o que el contador se me vuelva loco y me cierre el archivo y que entonces no me cree ningún archivo... pues no sé...
Por las dudas voy a ir a la Madre María a que me cure el mal de ojo  :mrgreen:
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: MGLSOFT en 17 de Febrero de 2009, 15:46:55
Eso es porque el micro espera una cadena, cada vez que interactuas para ver si cumpliste la cantidad de datos, provocas una demora, tal vez no visible en 9600BPS pero si en 115200 bps... :mrgreen: :mrgreen:
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 17 de Febrero de 2009, 15:52:35
Lo he bajado a 56k y nada. Mañana lo bajaré a 9600 a ver que tal.
Aún así, tu crees que un 18f4550 corriendo a 20mhz puede tardarse 3-4 us en hacer la comparación y que el maldito UART del VDIP no pueda esperar 3-4 us?
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: MGLSOFT en 17 de Febrero de 2009, 15:58:07
Creo que lo que pasa es que la UART del Vdip detecta frame error y se lo devuelve al PIC, si tu software no tiene manejo de errores se bloque la comunicacion...
No es tan sencillo usart la UART desde assembler... :mrgreen:
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 17 de Febrero de 2009, 16:03:23
AAAAAHAAM!
Por ahi vienen las papas!
Una colición de datos, eso tiene sentido.
Pero... por que no me lo hace cuando le meto los datos de a uno?
El pic envia un dato, el vdip lo recibe, el pic envia un dato el vdip lo recibe, y cuando no le hacen falta mas datos el vdip espera que le mandes el comando de cerrar archivo. Y si por ahi el Pic sigue mandandole datos al vdip dice "escuchá , tarado! que ya tengo los datos que me dijiste que me ibas a mandar!" y el pic le manda el dato de cerrar archivo mientras el vdip protestaba y no escuchó que le dije que cerrara archivos.

Me has iluminado, oh! ser supremo!

PD: Y ya no me jodás más con C! que ya sé que C es mejor, más bonito , más fácil, mas hermoso, mas todo. Pero tengo que terminar con esto!  :mrgreen:
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: MGLSOFT en 17 de Febrero de 2009, 16:13:53
Bueno, ya C que tenes que terminar, que C yo, queria ayudar... :D :D
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: micro_cadaver en 17 de Febrero de 2009, 17:14:19
solo C que nada C, pero que bien que C que con uart funciona.

gracias pibe por tu sacrificio!!!  :5}
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 17 de Febrero de 2009, 19:21:40
gracias pibe por tu sacrificio!!!  :5}

Eso suele decir mi jefe. Pero de subirme el sueldo nada de nada!  :mrgreen:
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 18 de Febrero de 2009, 07:53:54
Bien. He bajado a 9600 bps y la cosa a mejorado. Ya puedo abrir un archivo y meterle hasta 2048 bytes. No puedo meterle más de eso de un solo tirón porque inexplicablemente no me lo acepta.
Me da igual, total iré leyendo la 25AA1024 en bloques de 256 bytes y metiéndolos en el pendrive. Así que para vaciar la memoria de 131.072 bytes tendré que abrir el archivo y cerrarlo unas 512 veces.

Guay, no?  :mrgreen:
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: RICHI777 en 18 de Febrero de 2009, 13:20:29
Hola pibe, perdon pero creo que me perdi, al final la comunicacion las haces atravez de SPI o UART ?

Saludos !
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 18 de Febrero de 2009, 13:23:42
No hubo manera de hacerla por SPI. Y por UART me está haciendo sudar lo suyo para poder meterle más de 2048 bytes en un mismo archivo sin que la muy idiota me tome las ordenes de comando como datos :)

Con 2400bps no tengo problemas, si subo a 9600 empieza a meter palabras de comando creyendo que le mando datos dentro del archivo. Ahora estoy probando con 4800bps , a ver que pasa.

en algún punto al azar dentro del archivo que crea me mete una palabra del comando cerrar archivo + abrir archivo como si fuesen datos. Hmmm voy a revisar el contador de 256 bytes.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: RICHI777 en 18 de Febrero de 2009, 13:35:18
Ok, la pregunta ahora es como estas interconectado la UART solo con TX y RX ?

Saludos !
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 18 de Febrero de 2009, 13:39:35
No, también uso CTS y RTS
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: RICHI777 en 18 de Febrero de 2009, 13:51:49
Joya, segun mi modesto punto de vista, posiblemente no este funcionando bien la sincronización entre el PIC y el dispositivo, es decir de alguna manera el VDIP deberia indicarte cuando este listo para que le envies otro comando, si el VDIP esta bien diseñado deberia indicarte de alguna manera ( posiblemente con RTS/CTS ) que esta ejecutando una operacion interna y liberar a los pines cuando completo el comando, seguramente tambien deberia tener un comando de status que sirve para indicarte si la ultima operación termino correctamente o no. Por los menos todos los dispositivos de almacenamiento masivo de informacion que use ( Compact Flash, SD, Nand Flash ) hacen eso.

Saludos !
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 18 de Febrero de 2009, 14:05:46
Si, es que ya me duele la cabeza de tanto darle vueltas. Lo próximo será chequear las lineas CTS / RTS para ver que hacen cuando les mando un comando.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: RICHI777 en 18 de Febrero de 2009, 14:27:33
Una de las pruebas que podrias hacer para verificar que la comunicacion entre el PIC y el VDIP es correcta, es crear en el VDIP desde la PC un archivo binario y calcularle el checksum o CRC, cuanto mas grande el archivo mejor. Despues lees el archivo desde el PIC y le calculas el checksum o CRC si los valores coniciden es que todo el proceso es correcto.

Saludos !
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 18 de Febrero de 2009, 15:29:55
Hay algo mal y no se que es.
Curiosamente he cambiado de pendrive y me funciona! Pruebo el anterior y me hace lo mismo, errores. Vuelvo a probar el otro y no hay dudas: el que me da errores necesita pausitas entre escrituras para que no cometa errores. Pero entre byte y byte imagínate que me tiro 10 minutos para grabar 10k bytes.
Mañana probaré de escribirle sectores completos de 512 bytes en lugar de 256.
Y el RTS me lo da el VDIP, y el pic antes de mandar un dato controla esta línea y si está activa no manda nada hasta que el VDIP la baja , indicando que está listo para recibir.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: MGLSOFT en 18 de Febrero de 2009, 15:33:46
Ambos pendrives son de misma marca, modelo y capacidad ?? :shock: :shock:
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 18 de Febrero de 2009, 15:38:59
NO, el que me da errores la empresa quiso comprar 600 unidades para el proyecto a un costo de 3,5 euros y es de 1gb marca "ETE PEN ESUNA KK".
El que me va bien es de 512mb marca "CHOKISI KIENME ICHO" que tenía mi jefe para guardar sus facturas en negro :P
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: RICHI777 en 18 de Febrero de 2009, 15:44:52
jajajajaaja al menos no perdes el humor !!!!, lo del RTS, esta perfecto !

Saludos !
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: MGLSOFT en 18 de Febrero de 2009, 15:47:58
El primero es un PENEDrive...
El segundo esta acostumbrado a escribir rapido y esconder todo!!! :D :D :D
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 18 de Febrero de 2009, 16:02:28
Es algo extraño realmente.
A 2400bps ambos me graban bien
A 4800 bps el PENEdrive me comienza a meter palabras de comando como si fuesen datos. El otro pen no comete errores.
A 9600 ambos cometen errores
A 115.000 bps ambos ni siquiera crean un archivo.

yo no puedo creer que un pendrive no pueda aceptar transmisiones de tan baja velocidad sin equivocarse. Entonces cuando tenemos que grabar con la PC unos 100mb que hacemos? Lo ponemos a descargar y le dejamos dicho a nuestro hijos que cuando sean bisabuelos le digan a sus bisnietos que ya pueden desconectar el pendrive del arcaico ordenador?

Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: micro_cadaver en 18 de Febrero de 2009, 19:31:39
barbaro pibe es para hacerte un monumento!!!  :shock:

se que lo conseguiras , vamo vamo  :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 19 de Febrero de 2009, 10:09:38
Después de un arduo combate donde el vdip me tuvo entre las cuerdas ,he podido comenzar a golpear en algunos puntos claves (poner pequeños retardos aqui, quitar otros de allá, poner verificación de prompt en cada envío de comando, en caso de fallo borrar el archivo y volver a empezar, etc etc) y al fin ha caído noqueado en el décimo asalto.

Ahora puedo transmitirle datos a 56kbaud , creando un archivo de 62k (que equivale a lo que tendré entre todos los bancos de datos de la 25aa1024) y sin que dé muestras de errores.
Tarda EXACTAMENTE 2 minutos en llenar 62k.
Ahora toca hacer la rutina de volcado de la 25aa1024 al pendrive.

Ah, por cierto: el penedrive de 1gb me sigue dando errores , en cambio el de 512mb me funciona sin problemas.

NOTA IMPORTANTE: Formatear el pendrive Entrando en Ejecutar- CMD - y poner format G: /FS:fat32 /A:512 (donde G es la letra del pendrive)
Antes lo había hecho desde el format del windows pero parece que era el responsable que me diese errores de vez en cuando.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: RICHI777 en 19 de Febrero de 2009, 10:18:52
Felicitaciones Pibe !!!

Saludos !
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: micro_cadaver en 19 de Febrero de 2009, 12:57:50
Tarda EXACTAMENTE 2 minutos en llenar 62k.

ese tiempo no es demasiado? como se puede optimizar?

bravazo pibe ya estás dominando a la bestia  :-/ :-/ :-/
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 19 de Febrero de 2009, 14:02:24
Si hombre, supongo que se puede mejorar muchisimo porque 62k en 2 minutos es una bestialidad de largo. El tema es que llego a la disyuntiva de optimizar y arriesgarme a perder datos o tocar algo que luego me tire 3 dias en encontrar que ha fallado. Como dice un dicho: Si funciona, no lo toques  :mrgreen:
Ya cuando lo haya acabado veré si tengo tiempo de optimizar, llevo mucho atraso y aún me quedan hacer la rutina ADC o comparador para la caida de tensión, hacer las rutinas para el volcado de datos e2externa al VDIP.

Recién acabo de activar ambas interrupciones: La de alta prioridad para el RX de la USART y la de baja prioridad para el TMR0. Es una pasada!
Ahora toca reacomodar todo, llevar todas las rutinas del VDIP y llamarlas cuando corresponda. Y sino que se quede en el menu principal testeando entradas y haciendo lo que toda caja negra debe hacer.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 19 de Febrero de 2009, 15:32:12
Tengo el problema de colición entre dos pines: EL pin salida TX del VDIP va a la supuesta entrada RX del pic. Pero es que esa misma patita del PIC la uso eventualmente como SDO (salida) para la comunicación SPI. Así que cuando intento manejar el pin SDO (salida ) para enviarle datos al RTC o a la memoria , la salida activa del VDIP me está tirando la señal a positivo.
Mañana intentaré colocarle una resistencia de 100k o 1m de la pata del VDIP al pin del micro y ver si eso soluciona las cosas.
Y sino me tocará hacer el SPI por software y utilizar otras patas del micro.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: micro_cadaver en 19 de Febrero de 2009, 17:08:35
estas mezclando SPI y UART ?  :shock:
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 02 de Marzo de 2009, 18:46:44
Bueno.
He utilizado un pic18f452 que tiene uart y SPI por separado porque era físicamente imposible manejar ambas señales con el mismo pin.
Pero sigo teniendo problemas de fiabilidad del dato guardado en el pendrive.
A veces me abre el archivo y grabo 65k bytes sin  problemas y sin perder un solo dato, pero la mayoría de las veces ocurre lo siguiente: Me escribe una palabra de comando dentro de los datos.
Eso quiere decir que el vdip espera más datos cuando yo ya le he mandado todos los bytes correspondientes y al mandarle el comando de cerrar archivo me lo toma como dato, el de crear otro archivo me lo toma como dato , me coje más datos que estaban destinados al segundo archivo hasta llenar su cantidad de bytes que le habia dicho anteriormente que le mandaría, se queda en la parra esperando el comando cerrar mientras el pic sigue enviándole mas datos para el segundo archivo. Hasta que le llega el comando cerrar archivo y cierra el primer archivo.
Claro que el segundo archivo nunca existirá.

El pic hace lo siguiente:

1- manda comando crear archivo #1
2- manda comando "te voy a mandar 15322 bytes" (por ejemplo)
3- manda datos (15322 bytes)
4- manda comando cierro archivo #1

pausa

5- manda comando crear archivo #2
6- manda comando "te voy a mandar 10521 bytes" (por ejemplo)
7- manda datos (10521 bytes)
8- manda comando cierro archivo #2

Hay algo que no alcanzo a comprender, he estado probando con distintas pausas entre bytes de datos, entre apertura y cierre de archivos, bajando la velocidad de transmisión, pero nada...
Pierde datos , en algún punto pero no sé donde ni por qué.
Ya mañana seguiré investigando
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 03 de Marzo de 2009, 13:20:26
He dominado a la fiera  :-/


Aquí puede observarse cómo graba 62464 bytes sin rechistar, probado 20 veces sin fallos.

(http://img.photobucket.com/albums/v165/carlyvalente/P3030143.jpg)


Aqui se ve el archivito creado

(http://img.photobucket.com/albums/v165/carlyvalente/Dibujo-1.jpg)


Y aquí el archivo abierto, donde podemos observar que la mayoría son 00 y hay un dato que tenia guardado en la 25AA1024 que corresponde a una fecha y hora.


(http://img.photobucket.com/albums/v165/carlyvalente/dibujo2.jpg)

 :-/ :-/ :-/ :-/ :-/ :-/

EUREKAAAAA

Todo era cuestión de alargar un pelin más los tiempos de pausa entre comandos.

Ahora toca hacer el medidor de bajada de tensión y comenzar a logear de a poco.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 03 de Marzo de 2009, 13:47:01
Producciones Cinematográficas "Pibe"

         
P R E S E N T A



Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 03 de Marzo de 2009, 14:58:35
Ah! maravilloso!
Ahora me encuentro con que tengo que usar el modulo compare del 18f452 , lo busco, lo busco, lo busco y no está!  :shock:
El 4520 sí lo trae, cagonsu... y yo no tengo 4520.
Sus muelas...
El día que me compre una fábrica de sombreros los crios nacerán sin cabeza  :?
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: micro_cadaver en 03 de Marzo de 2009, 18:00:15
fabulosooooooooooooooooooooo

te lo dije que lo ibas a lograr !!!!

 :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: doppel en 03 de Marzo de 2009, 21:30:42
felicitaciones!! sencillamente impresionante!!!  :-/ :-/ :-/ :-/ muy bueno el proyecto!!! :-/
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 10 de Marzo de 2009, 11:03:23
Y así concluye el proyecto caja negra.

He aquí el esquema.

(http://img.photobucket.com/albums/v165/carlyvalente/cajanegra.jpg)


Como podráis imaginar y debido a que trabajo para una empresa el software completo está restringido . Pero si algunos de vosotros teneis alguna duda o si os hace falta rutinas que he empleado , no repareis en preguntar.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: micro_cadaver en 10 de Marzo de 2009, 11:29:00
felicitaciones por culminar el proyecto  :-/ :-/, yo estoy en duda si usar el VDIP por su costo de 25$, encontre una alternativa con el chip MAX3421E el cual cuesta 10$ y no necesita muchos dispositivos extras, lo unico malo es para generar las capas FAT para le escritura en las fichas usb que se inserten; además que necesito usarlo como controlador de peripheral y host a la vez, el primero para que se comunique con una laptop, y el otro para descargar información en un pendrive.

el vdip es solo HOST controller o tambien hace las veces de PERIPHERAL controller?

saludos  :-)
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 10 de Marzo de 2009, 11:43:05
Tienes la opción de saltear el chip del VDIP y mandar sólo datos crudos.

Para la que tu quieres creo que hay otros modulitos de Vinculum. Incluso el VDIP2 (que trae 2 puertos USB) puedes usar uno como BOM y otro como conexion USB al PC
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: micro_cadaver en 10 de Marzo de 2009, 12:01:46
hola pibe, gracias por responder,

estoy leyendo el datasheet del chip VNC1L y dice lo siguiente:

4.1  Key Features
The VNC1L has the following key features:
•  Two independent USB Host ports.
•  8 or 32#bit V#MCU Core.
•  Dual DMA controllers for hardware acceleration.
•  64k Embedded Flash Program Memory.
•  4k internal Data SRAM.
•  2 x USB 2.0 Slow speed or Full speed Host or Slave ports.
•  Automatic Low or Full Speed selection.
•  UART, SPI and Parallel FIFO interfaces.
•  Up to 28 GPIO pins depending on configuration.
•  Low power operation (25mA running/2mA standby).
•  FTDI firmware easily updated in the field.
•  Multi#processor configuration capable.
 

la caracteristica 2 x USB 2.0 Slow speed or Full speed Host or Slave ports es la que necesito para que mi pic conectado al puerto usb a través del VNC1L se pueda comunicar con una PC o laptop?
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: micro_cadaver en 10 de Marzo de 2009, 12:18:56
estuve revisando la alternativa de utilizar el max3421E y como no maneja el protocolo FAT (cosa que si hace el VDIP1) o bien lo montas tu mismo (uff...) o usas un chip que te ayude con eso y la ficha de ajedrez ideal para el asalto es uALFAT - FAT file system IC y cuesta nada menos que 16$, haciendo cuentas:
max3421e------10$
uALFAT----------16$
total                26$

sale lo mismo que el VDIP1  :shock:, y sin ensamblar, todo apunta a que el VDIP es la mejor solución tanto en costos como en tiempo de salida al mercado del producto final.

lo unico que me falta es concretar si el vdip1 puede hacer las 2 cosas, comunicarse a una pc e intercambiar información por USB, y descargar un archivo txt en un pendrive. lo ultimo ya lo hace.

saludos  :-/
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 10 de Marzo de 2009, 14:17:56
VNC1L es el chip que traen los módulos.


El VDIP1 y el VDIP2 son iguales , a diferencia que el VDIP2 trae una hembra más USB. Pero al VDIP1 le puedes añadir una sin problemas.

http://www.vinculum.com/prd_vdip1.html

Mírate el link. Ahíi dice que te sirve para periféricos


Y mira esto
(http://img.photobucket.com/albums/v165/carlyvalente/vdap.jpg)

Eso significa que si adquieres un VDIP2 puedes hacer lo que deseas
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: micro_cadaver en 10 de Marzo de 2009, 14:58:31
te lo digo en peruano: eres el papi
te lo digo en argentino: sos groso
te lo digo en español: eres la leche

gracias, luego vuelvo con más preguntas, saludos  :-/
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: micro_cadaver en 12 de Marzo de 2009, 18:45:33
ya volvi con mas preguntas  :mrgreen:

según lo que he leido de los datasheets del VDIP1 y del VNC1L, el modulo VDIP1 pide un VCC de 5V pués con dicho voltaje alimenta a la ficha USB que sea insertada, luego este voltaje de 5V pasa por un regulador para obtneer 3.3v que son aplicados al controlador VNC1L, lo que no entiendo es porque dice que sus pines son de 5v I/O, extraño para mi.

los incomodo por esto pues en mi aplicación habrá un dspic de 3.3v que gobernará al VDIP1, sin embargo el puerto UART de este módulo parece funcionar con 5V, tendré que compatibilizar voltajes?

luego en el datasheet del VNC1L encontre este circuito...
(http://img266.imageshack.us/img266/3279/fijaoso.jpg)

ese es el modo en que debo conectar el puerto UART del dspic de 3.3V con el puerto UART del VDIP1 de 5V?

gracias y saludos a todos  :-/ :-/
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 12 de Marzo de 2009, 18:53:47
Son 3,3v . Pero si miras el "datashit"  :mrgreen: dice que admite 5v sin problemas.


Por ejemplo:
13 ADBUS 6 AD6 I/O 5V safe bidirectional data / control bus, AD bit 6
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 12 de Marzo de 2009, 18:57:40
No hace falta conectar RST ni PROG

RXD, TXD, CTS, RTS.
El prog es para si quieres programar un nuevo firmware al VNC1L via rs232. EL reset es para.. bueno, ya te imaginarás  :mrgreen:

Pero, tu vas a trabajar con el integrado o vas a comprar el VDIP armado? Yo para evitarme dolores de cabeza pillaría al menos 1 vdip para hacerlo funcionar y probarlo que tal. Y luego si tienes que fabricar muchooos módulos entonces armaría mi propia plaquita con el VNC1L y lo que lleve alrededor.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: micro_cadaver en 12 de Marzo de 2009, 19:21:01
hola pibe, denuevo sos la leche chichoooooooooooo  :-)

pienso adquirir el modulo VDIP1, el ya armado para defrente hacer pruebas y hacerlo cantar.

en tu diagrama no colocas nada en el reset, se lo puede dejar al aire? y los pines que dicen LED1 LED2 estan de adorno o que? o ya están cableados en la plaquita pues veo 3 foquitos.

entonces todas las señales en el VDIP1 son 3.3v pero tolerantes de 5V, de tal manera que lo puedo conectar a cualquier pin de 3.3v del dspic. ese dato especifico de que los pines del VdIP1 sean 3.3v no lo encuentro en el datachin, medistes las salidas o de sus pines?

gracias pibe, si algún día caes por LIMA PERU te recibo con una caja de chelas.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 12 de Marzo de 2009, 19:35:13
hola pibe, denuevo sos la leche chichoooooooooooo  :-)

 :oops: Me sonrojo. No es pa tanto.

pienso adquirir el modulo VDIP1, el ya armado para defrente hacer pruebas y hacerlo cantar.

Excelente elección  :-/

en tu diagrama no colocas nada en el reset, se lo puede dejar al aire?

Si, tiene una pullup a +

y los pines que dicen LED1 LED2 estan de adorno o que? o ya están cableados en la plaquita pues veo 3 foquitos.

El Vdip1 trae 2 leds SMD en la plaquita. El Vdip2 trae 3. Son leds de estado y cada uno indica que está haciendo el VDIP.

The VDIP1 module has 3 LEDs: LED1 – Green; LED2 – Green; LED3 – Yellow . On the VDIP2
module there are just 2: LED1 – Green; LED2 – Green.  (aqui se han esquivocado y lo han puesto al inverso)

EL VDIP1 trae 2 leds, el VDIP2 trae 3

The behaviour of the LEDs is described
in Table 7.1.
Operation LED Behaviour
Power On
LED1 and LED2 flash alternately for 2 seconds
Repeated until monitor connects
USB Disk Initialisation LED1 on, LED2 off
USB Disk Ready LED1 off, LED2 on
USB Disk Removed LED1 off, LED2 off
Commands from monitor Port to USB
Disk
LED1 off, LED2 flashes
Commands from monitor Port with USB
Disk removed
LED1 off, LED2 off

(esta información está en http://www.vinculum.com/documents/fwspecs/UM_VinculumFirmware_V205.pdf que me parece es la que te falta deglutir  :mrgreen:

entonces todas las señales en el VDIP1 son 3.3v pero tolerantes de 5V, de tal manera que lo puedo conectar a cualquier pin de 3.3v del dspic. ese dato especifico de que los pines del VdIP1 sean 3.3v no lo encuentro en el datachin, medistes las salidas o de sus pines?

No, pero he leido en foros que la gente tenia miedo de contectar un dspic al VDIP por la misma razón que tu. Y la respuesta fue que no problem, que es 3,3-5v compatible.
Mira el apartado 6-1
http://www.vinculum.com/documents/datasheets/DS_VNC1L_V200(FT_000030).pdf
En realidad el integrado es 3,3v. Salida de datos 3,3v (suficiente para que un pic de 5v te tome salida alta) y las entradas puedes meterle hasta 5v. O sea, compatible tanto para 5v como para 3,3v de datos.

gracias pibe, si algún día caes por LIMA PERU te recibo con una caja de chelas.

No sé qué son la chelas pero por las dudas mejor una caja de cervezas  :mrgreen:
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: micro_cadaver en 12 de Marzo de 2009, 21:22:47
CHELAS= RUBIAS=HELENAS=cerveza en botella de 620ml.

tomar es dañino para la salud. te buelbe vruto.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: micro_cadaver en 12 de Marzo de 2009, 21:25:32
en conclusion,

se clava directamente a un micro de 3.3v
reset puede ir al aire y se activa con nivel bajo.
 
me falta leer ese documento que indicastes. comentaré mis dudas al respecto.

salute. :-)
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: Javicho en 14 de Marzo de 2009, 14:04:02
Felicitaciones Pibe, muy buen trabajo, te sigues tardando 2minutos en grabar 62K?

Cuando conectas este dispositivo a la PC se crea una nueva unidad (por ejemplo unidad F)? y desde el explorador al copiar cualquier archivo a esta unidad el dispositivo se encarga de la sincronización USB y al pic le envia el mismo archivo pero en formato RS232 .. es asi?

Javicho.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 14 de Marzo de 2009, 15:33:14
Uy Javi, yo lo de slave usb no lo he usado. Sólo he usado la parte host para grabar datos en el pendrive.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: Javicho en 14 de Marzo de 2009, 16:16:10
Ah ok, no hay problema, y sobre el tiempo de grabado de archivo llegaste a mejorar el tiempo de 2' para 64K? hay limites de velocidades de grabación en el mismo?

Javicho.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 14 de Marzo de 2009, 17:10:45
Si, ahora grabo 64k en menos de 1 minuto. Y sin errores.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: ascii en 14 de Marzo de 2009, 19:08:44
Hola pibe que tal saludos...mira me compre este famoso modulo el año pasado y no he tenido tiempo de meterle mano, el año pasado hice un gps datalogger usb con el modulo ualfat-usb de ghielectronics el cual me daba la posibilidad de comunicacion con i2c, ahora he visto que has tenido problemas con el spi, mi duda es la siguiente la puerta rs232 la tengo ocupada para el gps, como puedo hacerlo para comunicarme con el vdip1 y necesitaria 1 micro que tenga 2 puertas rs232  :? ??
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: Javicho en 14 de Marzo de 2009, 20:04:02
Hola Pibe, que bueno que hayas mejorado el tiempo de grabación.

Hola pibe que tal saludos...mira me compre este famoso modulo el año pasado y no he tenido tiempo de meterle mano, el año pasado hice un gps datalogger usb con el modulo ualfat-usb de ghielectronics el cual me daba la posibilidad de comunicacion con i2c, ahora he visto que has tenido problemas con el spi, mi duda es la siguiente la puerta rs232 la tengo ocupada para el gps, como puedo hacerlo para comunicarme con el vdip1 y necesitaria 1 micro que tenga 2 puertas rs232  :? ??

Un multiplexor te servirá?

Javicho.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: ascii 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.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe 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.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: dalefa 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
;--------------------------------------------------------------------------------------------------------
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: micro_cadaver en 31 de Marzo de 2009, 11:13:48
gracias por compartir  :-/ :-/
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe 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.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: The_Chosen 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  :(
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe 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 .
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: The_Chosen 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"
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe 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.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: micro_cadaver 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.  :-)
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe 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.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: micro_cadaver 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....
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe 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.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: PHLAKO en 17 de Abril de 2009, 16:14:11
felicidades por el proyecto...(y uno atorado con un CRC) :mrgreen:

saludos,

chaos :)
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: bellcrow64 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
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: Suky en 10 de Mayo de 2009, 15:02:13
Una pequeña consulta:
Yo soy de argentina, alguien ha comprado el VDIP en este pais?

Muchas Gracias

En cika tienen, esto es un pedido de cotización de hace 2 semanas:

1810VDIP1    VDIP1    KIT DE DESARROLLO PARA VNC1L    FTDI         1    U$ 135    10.5%
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 11 de Mayo de 2009, 07:40:04
Joder, eso es un robo!

Si en Farnell (que son unos asesinos) está a 24 euros!
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: Suky en 11 de Mayo de 2009, 10:49:58
Joder, eso es un robo!

Si en Farnell (que son unos asesinos) está a 24 euros!
Es cierto! Por eso lo deje de lado...  :(
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: MGLSOFT en 11 de Mayo de 2009, 14:57:20
Y si lo pedis a traves de Farnell??
Electrocomponentes es el representante local....
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: Suky en 11 de Mayo de 2009, 16:06:48
Y si lo pedis a traves de Farnell??
Electrocomponentes es el representante local....
Gracias por la data, voy averiguar.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: josemyzm en 11 de Mayo de 2009, 19:01:09
Felicidades, un proyecto fantastico.

Tengo una duda, se usa un módulo VDIP1 por el Host USB ? o por que facilita otras tareas también?  Lo digo por que Microchip tambien incorpora Host USB en algunos chips y puesto que se usa un Pic a parte del VDIP1 me parece que el módulo éste podría suprimirse. (pregunto por que no he leido nada al respecto)

Gracias y a seguir así.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 12 de Mayo de 2009, 03:15:42
Al comenzar el proyecto y en la etapa de investigación de los materiales he estado mirando las opciones de MMC/SD o USB. Al ver que el sistema fat para las SD aún tenía algunas fallas, o estaba semiacabado y encontrar la facilidad del VDIP pues me volqué por este último. Necesitaba acabar cuanto antes con el proyecto y me pareció la manera mas rápida y fácil.
Ahora , no se si los microchips traen el modulo hardware host usb o solo es embebido por software (El USB OTG es realmente hardware o software?)
 A dia de hoy y con la paciencia (y la ley de Murphy) pude encontrar varias alternativas como algunos chips de Cirrus y otros.

Bueno, me piro a currar que se me hace tarde  :mrgreen:
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: josemyzm en 12 de Mayo de 2009, 10:41:10
gracias por la aclaracion.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 10 de Febrero de 2010, 10:03:06
El tiempo pasa... nos vamos poniendo viejos  :D

Mira que ha pasado tiempo... y recién ahora me dieron luz verde para fabricar la placa final para comercializar la caja negra.
Y claro, tenía la lista de materiales e hice el pedido.
Hostias... y cual de todos los .asm era el bueno? Tengo 100 asm ! Mirando la fecha de la ultima modificación y rogando que no lo hubiese perdido o borrado (tuve que formatear PC en este lapso) pude encontrarlo.
Grabo el pic, pongo en marcha la placa y ... aparentemente funciona.
Inserto el pendrive y me dice... nanín.
Claro ! Tenía que grabarle el ultimo firmware!
Y como era que se hacía?
Pues tuve que venirme a este foro para releer mis propias instrucciones!
Listo. Actualizado entonces le doy arranque e inserto el pendrive. Verifico los datos del fichero creado y ... alli no hay nada, solo 00!
Vaya... reviso reviso... reviso programa... o bien la EE externa no graba los datos del micro, o bien al volcarlos al pendrive no los lee...
Me acerco al 25AA1024 y veo un pin sospechosamente soldado. Lo repaso y VOILA !
Es lo bueno de tener este foro. Sino me hubiese tocado exprimirme de como hacer para volver a ponerla en marcha

 :D
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: micro_cadaver en 10 de Febrero de 2010, 16:11:13
El tiempo pasa... nos vamos poniendo viejos  :D

Mira que ha pasado tiempo... y recién ahora me dieron luz verde para fabricar la placa final para comercializar la caja negra.
Y claro, tenía la lista de materiales e hice el pedido.
Hostias... y cual de todos los .asm era el bueno? Tengo 100 asm ! Mirando la fecha de la ultima modificación y rogando que no lo hubiese perdido o borrado (tuve que formatear PC en este lapso) pude encontrarlo.
Grabo el pic, pongo en marcha la placa y ... aparentemente funciona.
Inserto el pendrive y me dice... nanín.
Claro ! Tenía que grabarle el ultimo firmware!
Y como era que se hacía?
Pues tuve que venirme a este foro para releer mis propias instrucciones!
Listo. Actualizado entonces le doy arranque e inserto el pendrive. Verifico los datos del fichero creado y ... alli no hay nada, solo 00!
Vaya... reviso reviso... reviso programa... o bien la EE externa no graba los datos del micro, o bien al volcarlos al pendrive no los lee...
Me acerco al 25AA1024 y veo un pin sospechosamente soldado. Lo repaso y VOILA !
Es lo bueno de tener este foro. Sino me hubiese tocado exprimirme de como hacer para volver a ponerla en marcha

 :D

wou, que contrariedad que tuvistes, me sucede lo mismo cuando tengo que volver a proyectos pasados.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: Alquimus en 16 de Febrero de 2010, 12:06:20
Vale Pibe, que buenas anecdotas, que levante la mano a aquel que no le paso lo mismo jaja.
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: psicowifi en 17 de Abril de 2010, 07:50:33
Saludos....
E visto que este tema esta muy bueno y espero que tengan exito en su proyecto final...
yo uso el modulo vdrive2 con resultados exelentes pero no estoy tan adelantados como ustedes usando spi me dedico a usar mas puerto serial con el vdrive2 no se si este modulo tiene esa posibilidad ustedes me diran...
Actualmente uso el vdrive2 y e tenido algunos contratiempos con la programacion para que el modulo cambie su configuracion de 9600 8N1 a 9600 8 EVEN 1
si alguien tiene informacion al respecto seria bueno la desplegara.

Seria interesante que pusieramos un hiloo con este modulo para que pongamos nuestras experiencias en español jaja ya que ufff puro ingles mata la vista

saludos...
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: The_Chosen en 30 de Abril de 2010, 14:19:47

Seria interesante que pusieramos un hiloo con este modulo para que pongamos nuestras experiencias en español jaja ya que ufff puro ingles mata la vista

saludos...

Parece que he llegado algo tarde  :D. Hace poco he terminado de programar una librería 1 wire para un atmega16 y ahora estoy escribiendo un tutorial respecto del mismo (como los que uno ve en avrfreaks  :P). Cuando termine, empezaré a programar una librería para el VNC1L usando un puerto SPI por software. He reunido material para hacerlo y me enfocaré en el algoritmo, ya que me he fijado que la mayoría sólo publica las líneas de código y no la estructura de la programación.  :mrgreen:
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: pibe en 19 de Julio de 2010, 08:30:36
Luego de diseñar, rediseñar y recontrarediseñar la placa y mandar a hacer prototipos de 10 unidades (unos 300 euros) por cada vez que el jefe quería una nueva implementación, la CRIATURA está a punto de nacer. Bueno... es un decir... porque:

Ha pasado mucha agua bajo el puente; se ha ampliado el circuito para que pueda registrar datos de todas las maniobras de la grúa en cada velocidad, hasta 5 velocidades. Se ha cambiado de micro por quedarse corto en cantidad de pines de entrada, por lo que tuve que readaptar no sólo el código sino el circuito impreso en su totalidad.
He tenido que agregar una segunda eeprom externa , ya que necesitaba más espacio al registrar el doble de datos.
Hemos adquirido un osciloscopio digital de HAMEG que vale unos 4000 euros, para éste y futuros diseños. Es un ordenador....una locura de instrumental.
Tuve que reeditar mi código para mejores prestaciones, incluído el poder extraer los datos con el pendrive en cualquier momento y poder dejarlo insertado sin riesgo que reescribiera el archivo al detectar el pendrive.
El software para el ordenador del cliente ya no me servía, al tener más registros. Además la relación con el programador de java ha terminado muy mal. Por ello tuvimos que contratar otro programador y deberá hacer el programa desde 0.
En resumen: Montones de variaciones. Ahora listo para comercializar cuando.... al jefe se le ocurre que OPCIONALMENTE quiere poder enviar dichos datos via GPRS a un ordenador y OPCIONALMENTE tenga un módulo para poder pesar la carga máxima levantada en el día.

Si seguimos así , el que acabará el proyecto será mi hijo que tiene 10 años de edad  :mrgreen:

Por suerte ya tenemos pedidos pendientes de entrega no sólo en España sino en Suecia y Rumanía.
A ver si nace ya! Que necesito un aumento de sueldo!  :-/ :mrgreen: :mrgreen:
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: javierdavid2006 en 24 de Enero de 2011, 15:59:37
Hola a todos, necesito su ayuda para un proyecto de tesis, en donde uso el mismo MemoryStick Dataloger que tu usas Pibe, gracias a ti y a esteforo, ya lo puse a funcionar por medio del Hiperterminal y por medio del Pic (16f877a),usando CCS(que es un leguaje que estoy aprendiendo. He creado archivos en .TXT y en excel (.xls), ingresando varios datos en una pen de marca Kington.

Aqui va mi problema:

- Yo tengo que crear una base de datos en el pen, que contenga la fecha y hora en que ingresa un profesor a un laboratorio (DS1307), el profesor entrarpor medio de tarjtas RFID para lo cual uso un sensor ID12 de Innovation, y el detalle es que en el archivo de excel solo puedo ordenar los datos moviendome hacia abajo, por medio de dar ENTER (Hiperterminal) y hacia la derecha por medio del boton TAB (Hiperterminal), pero no me puedo mover hacia arriba o a la izquierda, lo queme impide crear una base de datos ordenada en filas y columnas . Si presiono una tecla direccional me envia comandos "A]-", pero no me permite realizar el movimiento.

En tu foro dijiste que ibas a ordenar tus datos en Excel o algo entendible por el cliente, asi que espero me puedas ayudar.

Gracias

David Nunez

 
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: signori en 18 de Noviembre de 2011, 11:37:58
hola  Pibe,


En mi proyecto he leído 16 sensores de presion y le escribo a un EEPROM 24LC512, y luego los envio  a el VDIP1 con un botón llamado "send to pen drive"

Bueno, lo que pasa es que cuando envío a pen drive un archivo que genera menos de 900 bytes el archivo es generado  perfecto, pero si el envío de más de 900 bytes no genera nada.

Estoy usando sólo el RX y TX de VDIP1 , conectado directamente en pic 18f4520.

¿Qué puede estar pasando?


¡Salud!
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: signori en 18 de Noviembre de 2011, 23:38:55
UP
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: mizar en 08 de Marzo de 2012, 06:42:29
Hola chic@s,


Estoy montando un sistema con varios sensores el cual quiero que vaya guardando las medidas cada X en un USB. Para ello, y influenciada por este foro que en su momento me pareció una iluminación divina, estoy utilizando un VDIP1 y también el 18F4520.

Vistas las experiencias de la gente con el SPI , me he decantado directamente por usar UART. La cuestión es que soy 100% novata y no me estoy apañando muy bien... utilizo C y el compilador CCS. Estoy siguiendo el par de ejemplos que proporcionan los de Vinculum pero al usar librerias propias de ese compilador suyo , sinceramente no me aclaro.

Alguien se anima a echarme un cable? o alguien que esté igual de perdido que yo i quizás podamos ayudarnos mutuamente como en su momento hicieron el pive y Alquimus  :)

Un saludo y muchas gracias con antelación
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: lycans2005 en 30 de Julio de 2013, 13:16:44
Alguien ya tiene el "hello world"  para ccs  :(
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: MGLSOFT en 30 de Julio de 2013, 15:28:20
Tienen que instalar los ejemplos del USB Master, alli hay librerias para ese dispositivo... :mrgreen: :mrgreen:

Asi lo dicen aqui:

http://www.ccsinfo.com/forum/viewtopic.php?t=40170&highlight=vdip1 (http://www.ccsinfo.com/forum/viewtopic.php?t=40170&highlight=vdip1)

Aqui su placa desarrollo:

http://www.ccsinfo.com/product_info.php?products_id=usb_master (http://www.ccsinfo.com/product_info.php?products_id=usb_master)
Título: Re: Datalogger de 2GB con PIC usando un Host USB: El VDIP1
Publicado por: lycans2005 en 30 de Julio de 2013, 15:52:46
Tienen que instalar los ejemplos del USB Master, alli hay librerias para ese dispositivo... :mrgreen: :mrgreen:

Asi lo dicen aqui:

http://www.ccsinfo.com/forum/viewtopic.php?t=40170&highlight=vdip1 (http://www.ccsinfo.com/forum/viewtopic.php?t=40170&highlight=vdip1)

Aqui su placa desarrollo:

http://www.ccsinfo.com/product_info.php?products_id=usb_master (http://www.ccsinfo.com/product_info.php?products_id=usb_master)

Gracias, pero sabes donde descargarlos los ejemplos... he buscado pero no los encuentro