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 VDIP1Antes 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:
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:
EL MONITOR DE COMANDOSLa 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 VDIP1Veamos la descripcion de pines del VDIP1
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:
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 FIRMWARECuando 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:
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:
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 VinculumEn 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:
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 VDIP1Usando el VMUSIC2 Bueno amigos, eso fue todo por hoy, continuaremos el proximo año. Saludos!!!