Página 1 de 7

Programación PIC

Publicado: 15 Jul 2009 01:31
por crobol
En este hilo se tratará todo aquello relacionado con el PIC, su programación y el Firmware HEX.
También podéis dejar vuestras dudas al respecto.

Gracias

Manual de programación del PIC por GABONI


1. HARDWARE

1.1 El programador

Para programar el PIC18F4550, es necesario disponer de un programador compatible con microcontroladores PIC de Microchip. Los más habituales son los programadores JDM y TE-20, aunque hay más. Estos programadores pueden encontrarse fácilmente, pero si lo deseais, podéis construiros vosotros mismo el vuestro siguiendo las indicaciones de este enlace:

http://perso.wanadoo.es/pictob/jdm.htm

Los programadores JMD y TE-20 utilizan el puerto serie del ordenador para aplicar las señales necesarias para programar el PIC. Un aspecto muy importante es que el programador necesita apróximadamente unos -9V en el puerto serie para poder alcanzar la tensión de programación, por lo que es muy probable que el PIC no pueda ser programado correctamente utilizando un conversor USB-Puerto serie RS-232. Podéis comprobar la tensión de vuestro puerto serie midiendo con un voltímetro entre los pines 3 y 5 del conector DB9 del ordenador. Con un valor de entre -9V y -12V no debería haber problema.

La conexión entre el programador y el ordenador debe realizarse mediante un cable serie plano o punto a punto.


1.2 Equivalencia entre diferentes formatos de PIC

Los PIC de Microchip pueden ser de 18, 28 o 40 patillas en su versión DIP. El PIC18F4550 es un circuito integrado de 40 pines, y es muy probable que nuestro programador sólo disponga de un zócalo de 18 o de 28 pines. Afortunadamente, las señales utilizadas en la programación de los PIC son las mismas en todos los modelos, por lo que podemos programar el PIC utilizando un zócalo diferente.

Para realizar esta adaptación será necesario disponer de una placa de tipo proto-board o similiar en la que podamos pinchar el PIC, y con la que podamos unir los pines del PIC con su equivalente en el zócalo del programador.

Este es el esquema de las equivalencias entre pines de los PIC de 18, 28 y 40 pines:

Imagen

Y este es un ejemplo de cómo hacer un adaptador para programar el PIC de 40 pines usando un programador JMD con un zócalo del 18 pines:

Imagen



2. SOFTWARE


2.1 Utilidad de programación

Existen varias utilidades para programar PIC. Nosotros hemos utilizado el programa WinPIC800 y nos ha funcionado correctamente, así que es el que recomendaríamos usar.

Podéis descargar el software aquí: http://www.winpic800.com/


2.2 Configuración del WinPIC800

Tras instalar la aplicación, es necesario configurar el programa para que funcione correctamente con el programador del que dispongamos. Para ello, seleccionamos en el menú: "Configuración" -> "Hardware". Aparecerá una ventana en la que debemos seleccionar el programador del que disponemos, y el puerto serie del ordenador en el que lo tenemos conectado:

Imagen

A continuación, debemos seleccionar el tipo de PIC que vamos a programar en dos recuadros que aparecen en la parte derecha del programa. Debemos seleccionar "PIC 18F" y "18F4550".

Imagen

Podemos realizar un test para comprobar que todo está correcto, seleccionando en el menu "Dispositivo" -> "Test Hardware".


2.3 Carga de Firmware en el PIC

Una vez tenemos el programador con el PIC en su sítio, con el cable del puerto serie conectado, y el programa configurado; podemos proceder con la carga del firmware en el PIC.

En primer lugar, seleccionar el fichero .HEX que queremos cargar, eligiendo en el menú la opción "Archivo" -> "Abrir". En la pantalla del programa aparecerá el código hexadecimal, los datos y las opciones con las que se va a programar el PIC. No tocar nada, ya que al cargar el fichero .HEX todo se configura automáticamente.

Para comenzar con el proceso, seleccionar en el menú "Dispositivo" -> "Programar Todo". Aparecerá una barra de progreso que avanzará según se vaya completando la programación del PIC, y en la que aparecerá un mensaje confirmando que el PIC se ha programado correctamente, o bien un mensaje de error en el caso de que algo haya fallado.
___________________________________________

Si encontráis cualquier error o cualquier cosita, decídmelo y lo edito.

Saludos!

Re: DisplayXR - Ayuda, Dudas y Problemas

Publicado: 27 Jul 2009 21:01
por tosti
A ver si alguien me puede ayudar... :scratchchin:

Tengo un programador T20 como el que podeis ver en las siguientes fotos...
[img]http://img195.imageshack.us/img195/408/26789803.th.jpg[/img] [img]http://img196.imageshack.us/img196/4527/12877594.th.jpg[/img]

En este hilo vi que....
willynovi escribió:En teoria cualquier programador sirve para cuaquiera de las dos clases de PIC 16F y 18F.
¿Alguien sabe si con ese programador puedo programar el PIC del Display?

Re: DisplayXR - Ayuda, Dudas y Problemas

Publicado: 27 Jul 2009 21:14
por Gaboni
tosti escribió:¿Alguien sabe si con ese programador puedo programar el PIC del Display?
Sí, pero necesitas pinchar algunos cables en el zócalo de 28 pines para hacerlos coincidir con los respectivos pines del PIC18F4550 en una protoboard externa.

Tengo pendiente hacer un tutorial de la programación del PIC, a ver si saco un rato para hacerlo.

Saludos!

Re: DisplayXR - Ayuda, Dudas y Problemas

Publicado: 27 Jul 2009 21:21
por Nye
Yo siria que si.

El mio no tiene ni tan siquiera el slot para meter el 16F (28 pins) del anterior proyecto y a base de sacar las patillas correctas y conectarlas a lo 'burro' conseguí programarlo en un zócalo de 18 pins.

Si no recuerdo mal saqué la información del PIC directamente de micorchip en la página de datasheets: http://www.microchip.com
Luego utilicé la lógica para encontrar que pins se correspondian. Aqui hay algo de información, y si te fijas, aunque el programador no es el mismo... o no exactamente el mismo, la lista de PICs soportados es muy amplia: http://www.islafria.es/blog/?p=12

A ver si willy o alguno de los cracks del tema PICS nos saca un listado de equivalencias en los pins para programar todo tipo de PIC viviente :)

Editado: Gabo se me ha adelantado :D

Re: DisplayXR - Ayuda, Dudas y Problemas

Publicado: 27 Jul 2009 21:45
por tosti
Gaboni escribió:Sí, pero necesitas pinchar algunos cables en el zócalo de 28 pines para hacerlos coincidir con los respectivos pines del PIC18F4550 en una protoboard externa.

Tengo pendiente hacer un tutorial de la programación del PIC, a ver si saco un rato para hacerlo.

Saludos!

Aqui dejo una foto con el programador y el PIC18F4550 para que si alguien sabe las patillas que hay que hacer coincidir lo indique, solo haria falta emparejar el zócalo con el PIC18F4550 con numeros sobre la foto.


[img]http://img195.imageshack.us/img195/1513/88475137.th.jpg[/img]

Re: DisplayXR - Ayuda, Dudas y Problemas

Publicado: 27 Jul 2009 22:28
por Gaboni
Mira, en esta imagen tienes la equivalencia:

http://www.fing.edu.uy/inco/grupos/mina ... amador.jpg

Si no me equivoco, la correlación es esta:

Imagen

Que alguien me corrija si lo he puesto mal.

Saludos!

Re: DisplayXR - Ayuda, Dudas y Problemas

Publicado: 27 Jul 2009 22:54
por tosti
Gracias Gaboni, dejo la imagen con las conexiones...

Imagen

Aqui mas información sobre los dos tipos de PIC...
40-Pin PDIP (600MIL)
Imagen

28-Pin SDIP, SOIC (300 MIL
Imagen

Re: DisplayXR - Ayuda, Dudas y Problemas

Publicado: 28 Jul 2009 01:04
por Nye
Tosti: Mi TE20X no tiene zócalo de 28. Solo tiene de 18.
Me podrias decir si en tu programador hay equivalencia entre la patilla numero 24 (28 pines) y alguna del zócalo de 18?
En la foto que has puesto de las pistas del programador parece que en esa patilla no hay nada???

Re: DisplayXR - Ayuda, Dudas y Problemas

Publicado: 28 Jul 2009 01:07
por Gaboni
En el pin 36 del zócalo de 40 tienes que poner una resistencia de 1K que vaya al pin 12 del mismo zócalo. En el caso del zócalo de 28, hay que poner la resistencia de 1K entre los pines 19 y 24.

Saludos!

Re: DisplayXR - Ayuda, Dudas y Problemas

Publicado: 28 Jul 2009 21:00
por tosti
Nye escribió:Tosti: Mi TE20X no tiene zócalo de 28. Solo tiene de 18.
Me podrias decir si en tu programador hay equivalencia entre la patilla numero 24 (28 pines) y alguna del zócalo de 18?
En la foto que has puesto de las pistas del programador parece que en esa patilla no hay nada???
No nye, en mi programador no la hay.

Re: DisplayXR - Ayuda, Dudas y Problemas

Publicado: 28 Jul 2009 21:22
por tosti
Gaboni escribió:En el pin 36 del zócalo de 40 tienes que poner una resistencia de 1K que vaya al pin 12 del mismo zócalo. En el caso del zócalo de 28, hay que poner la resistencia de 1K entre los pines 19 y 24.

Saludos!
¿Asi gaboni?

[img]http://img188.imageshack.us/img188/5894/39248364.th.jpg[/img]

¿O tambien tendria que poner otra en el zócalo de 28 entre los pines 19 y 24?

Editado para marcar imagen como nula.

Re: DisplayXR - Programación PIC

Publicado: 28 Jul 2009 21:38
por Gaboni
Eso es sólo en el caso de que uses un zócalo de 18 pines, en el que no está ese PIN. Si tienes un zócalo de 28 pines, sólo hay que llevar el pin 24 de el de 28 al pin 36 de el de 40.

No se he aclarado algo o lo he liado aún más... :scratchchin:

Re: DisplayXR - Programación PIC

Publicado: 28 Jul 2009 23:24
por tosti
Aclarado, gracias :oks:

Re: DisplayXR - Programación PIC

Publicado: 29 Jul 2009 22:48
por orale
Hola de nuevo,

Como Crobol y Nye ya sabrán, :blush: llevo dando la brasa varios días con el problema del reconocimiento de la placa de control de mi display por parte de mi PC ( y de todos los que he probado). Gracias a los magnificos tutoriales de Tosti :cheers: , he podido comprobar que las pistas de la placa del display están bien, y que el problema que arrastraba de unos leds azules que no se encendían los pude resolver. Después de comprobar soldaduras una y mil veces, recorrer las pistas con el polímetro otras tantas, sólo me queda la posibilidad de probar otro PIC, no fuera cosa que el mío estuviese frito. Para ello, y volviendo a ser pedigüeño, solo se me ocurre si habría la posibilidad de disponer de otro PIC ya programado, cueste lo que cueste, envío , etc.

GABONI, no te lo quería pedir a ti directamente para no ponerte en el compromiso, pero no se me ocurre nadie mejor. No tengo prisa como ya comenté en un post de algunos días atrás, tan solo quiero ver funcionar mi display.
Gracias y saludos

Re: DisplayXR - Programación PIC

Publicado: 29 Jul 2009 22:57
por tosti
Yo tengo nuevos problemillas, al arrancar el icprog me da el siguiente error...
[img]http://img193.imageshack.us/img193/9840/11435713.jpg[/img]

La configuracion del hardware me deberia dejar seleccionar el COM1, pero este me aparece deshabilitado...
[img]http://img18.imageshack.us/img18/2278/91944580.jpg[/img]

Como podeis ver en el administrador de dispositivos el COM3 y COM4 son de un dispositivo bluetooth...
[img]http://img33.imageshack.us/img33/8291/29343973.th.jpg[/img]

¿alguna sugerencia? :faint:

Re: DisplayXR - Programación PIC

Publicado: 29 Jul 2009 23:19
por Gaboni
tosti escribió:¿alguna sugerencia? :faint:
Yo también tuve problemas con el ICPROG, al final me recomendaron el WinPic800 en el foro y ese me ha funcionado bien.

En cualquier caso, ese problema que comentas creo que es porque te falta una librería para que funcione en Windows XP. A ver si el viernes por la tarde, que no curro, hago el manual de programación del PIC.

Orale, te mando privado.

PD: Cuidado con los puertos serie por USB... no dan la tensión necesaria para programar el PIC!

Re: DisplayXR - Programación PIC

Publicado: 30 Jul 2009 21:21
por tosti
He borrado el PIC y lo he vuelto a programar con el Winpic800, ahora al enchufarlo ademas de Xtreme Racers me muestra los creditos de Calvorota/nye/Gaboni pero el sistema operativo sigue sin detectarme el dispositivo. :?

Re: DisplayXR - Programación PIC

Publicado: 30 Jul 2009 21:50
por Gaboni
Eso suena a USB del PIC jodido o algo así... :? Porque me imagino que las conexiones D+ y D- del USB las habrás revisado ya, verdad?

Pon un mensaje con el problema de tu placa aquí para que podamos organizar las reparaciones:

viewtopic.php?f=84&t=6025

Saludos!

Re: DisplayXR - Programación PIC

Publicado: 30 Jul 2009 22:06
por tosti
Imagino que ya habras leido esto en el hilo de los problemas...
tosti escribió:Comprobaciones realizadas Síntoma1 : He montado el PIC del conjunto1 sobre la placa de control del conjunto2 y detecta el dispositivo, esta misma prueba sobre la placa de control de conjunto1 con el mismo resultado(esto me inclina a que el problema esta en el PIC y no en la placa de control). He reprogramado el PIC pero sigue igual.
Supongo que tendre que comprar un PIC y programarlo a ver que depara, ¿no?

Re: DisplayXR - Programación PIC

Publicado: 30 Jul 2009 22:12
por Gaboni
tosti escribió:Supongo que tendre que comprar un PIC y programarlo a ver que depara, ¿no?
Si, en este caso está bastante claro que lo que ha cascado ha sido el PIC... :(

Así que ya sabes, si te haces de otro y lo programas, seguro que te funcionará.

Saludos!

Re: DisplayXR - Programación PIC

Publicado: 31 Jul 2009 22:31
por geloton
Hola.
Alguien podría decirme los 4 pasos para programar el PIC con el Winpic800, es que nunca he programado un PIC y no tengo ni idea de como hay que hacerlo.

Os pido esto porque he llevado los dos PIC´s que me he comprado a que me los programase un amigo y resulta que los he puesto en el circuito y cuando lo conecto al ordenador no hace absolutamente nada, ni el ordenador detecta nada, y ni siquiera se enciende ningún led, vamos, que estoy que :irked: :irked: , no tengo ni idea de que puede ser, pero solo se me ocurre que el PIC esté mal grabado, así que me he decidido a intentar programar uno de los PIC con un programador T-20 que me han dejado para ver si es culpa de que lo han grabado mal, aunque el ordenador debería de detectar que se ha conectado algo al puerto USB aunque esté mal programado, ¿no creeis?..., es que no se me ocurre nada.

Por cierto, ¿si el cristal no es de 20 Mhz es posible que no funcione nada?, es que he pedido el cristal a Farnell y en la página ponía que era de 20 Mhz y en la factura pone 20.0000M, con lo cual no tengo muy claro si es el correcto.

Si se os ocurre cualquier otra cosa que pueda ser os agradecería que me ayudáseis, porque después de gastarme una pasta en las PCB´s (300 euros) la verdad es que no me gustaría quedarme a las puertas.

Saludos
Gelo

Re: DisplayXR - Programación PIC

Publicado: 31 Jul 2009 23:27
por vincebc
Y que ponia en el cristal?
En el mio, ponia 20.000, y es un 20MHz.

Re: DisplayXR - Programación PIC

Publicado: 01 Ago 2009 03:06
por geloton
vincebc escribió:Y que ponia en el cristal?
En el mio, ponia 20.000, y es un 20MHz.
Pone R200NKB8n, es lo único que pone el cristal, aunque me da que el cristal no es.

Re: DisplayXR - Programación PIC

Publicado: 01 Ago 2009 11:25
por Gaboni
La programacion del PIC es poco probable que sea.

Me decantaría por un problema del cristal o de alimentación. Los cristales de cuarzo se rompen con mirarlos, y no descartaría que fuese eso, porque los síntomas de un cristal roto son los que describes.

Yo me aseguraría en primer lugar que la conexión de los 4 hilos del USB están bien, y si es así, cambiaría de nuevo el cristal por otro de 20 MHz, con mucho cuidado de no darle ningún golpecito ni dejarle puesto el soldador más de 5 segundos. Si en el cristal pone 20.000, es de 20 MHz.

Saludos!

Re: DisplayXR - Programación PIC

Publicado: 01 Ago 2009 12:54
por geloton
Gaboni escribió:La programacion del PIC es poco probable que sea.

Me decantaría por un problema del cristal o de alimentación. Los cristales de cuarzo se rompen con mirarlos, y no descartaría que fuese eso, porque los síntomas de un cristal roto son los que describes.

Yo me aseguraría en primer lugar que la conexión de los 4 hilos del USB están bien, y si es así, cambiaría de nuevo el cristal por otro de 20 MHz, con mucho cuidado de no darle ningún golpecito ni dejarle puesto el soldador más de 5 segundos. Si en el cristal pone 20.000, es de 20 MHz.

Saludos!
Pues he reprogramado el PIC y ahora si enciende y lo reconoce el SO, pero ahora tengo otro problema, resulta que haciendo el test de los leds con tu programa a medida que voy encendiendo los leds uno a uno empezando por la izquierda, a cada led que enciende se enciende tambièn un segmento del segundo dígito empezando por la derecha, y los leds azules no encienden, además hay otra cosa curiosa, cuando le doy a encender los leds de de las esquinas (los de derrape), en el software marco los de la izquierda y se encienden los de la derecha y viceversa :? :? :llorar: :llorar: :llorar: :llorar: , la verdad es que ya no se que hacer, he repasado todas las soldaduras y no veo nada raro (sería la primera vez que tengo problemas soldando, he soldado mucho y nunca he tenido problemas, aunque siempre hay una primera vez)..., ¿se os ocurre algo?, yo ya estoy bloqueado. :( :(