# Problema ICSP y fuente externa



## Manunet (Feb 16, 2013)

Hola a todo, tengo un problema que me lleva de cabeza casi una semana.

Tengo un programador, el Quark Pro 2 JDM, el cual vá muy, muy fino, pero por circunstancias y comodidad me he hecho un programador ICSP:







Nota del programador:
Por falta de existencias he tenido que cambiar los bc337 por bc548 y c2 no es de 100uf sino de 22uf ya que con el de 100uf no vá de ninguna de las maneras y así funciona .

Despues de mucho pelear con el he conseguido programar el pic 16f877a sin problemas en una protoboard, la prueba la he hecho poniendole un led a RD2 y que se encienda cada 500ms, luego cambio el programa y el led se enciende cada 250ms, la alimentación la coje del propio programador, hasta ahí todo bien, peeero... ( siempre hay un pero.. jeje )

El primer problema es que la mayoría de las veces tengo que tocar el cristal para que el pic arranque con el nuevo programa, ese es el menor de los problemas, el problema grave es que, con el programador desconectado y alimentando el pic con una fuente externa ( una fuente de pc "tuenada" ) el programa corre bien, pero a cuando le meto el programador el pic se para y el ventilador de la fuente se acelera debido a algun consumo que se me escapa de las mediciones, bien, he probado a quitar el Vcc del programador y GND comun del programador con la fuente, en el positivo de la fuente un 1n4007 para evitar daños por si acaso, en el MCLR del pic, pues lo normal, vcc - res 10k - 1n4148 - MCLR, aún así el WinPic800 no es capaz de reconocer el pic y claro, ni puedo programarlo ni leerlo.

He buscado info por internete referente a este problema y por ahora sólo he visto el tema de aislar vpp ( ya está hecho ), vcc del programador ( directo al pic ) y aislar vcc de la fuente ( con el diodo 4007 ).

Todo esto lo estoy probando en la proto porque a la hora de montar el circuito no me quiero llevar sorpresas, soy consciente que la misma proto mete mucho ruido por eso he acortado los cables todo lo que he podido.

Lo que busco es que el pic esté trabajando normalmente y poder cambiarle el programa, vamos... la funcion del ICSP.

Si se necesita más info pedirmela, os diré todo y como lo tengo montado, y si hacen falta fotos pues se ponen tambien 

Saludos y muchas gracias.


----------



## mcrven (Feb 16, 2013)

Manunet dijo:


> Hola a todo, tengo un problema que me lleva de cabeza casi una semana.
> 
> Tengo un programador, el Quark Pro 2 JDM, el cual vá muy, muy fino, pero por circunstancias y comodidad *me he hecho un programador ICSP*:
> 
> http://www.olimex.cl/images/pic-pg1-sch.gif



Sin importar quien lo fabrique ni la marca que trae, las letras JDM, por sí solas identifican este programador.

Ahora, no entiendo para qué hiciste un "Programador ICSP" si el JDM, dotado del conector que se muestra al lado derecho del diagrama, puede programar cualquier PIC o memoria, al cual se le haya dotado de la conexión para ICSP.

Y por último, si utilizas el "Buscador del foro" antes de postear una duda, te darás cuenta que no eres el único que ha experimentado algún tipo de problema con este u otro tipo de programador, casi todos debidos a fallas de montaje u errores de conexión al ensamblar.

Coloca en el buscador la palabra "programador" y tendrás una lista de todos los posts relacionados con este tema.

Saludos y hasta la próxima y, lee las normas del foro.


----------



## Manunet (Feb 16, 2013)

Hola Mcrven, tus palabras, inconscientemente, están llenas de sabiduría... todo está en el detalle, si, justo como el anuncio del café.

Dices que las letras de JDM identifican al programador, si, es cierto, se podría decir que JDM es el modelo minimo para programar un pic, de ahí para adelante, cada uno lo hace a su manera, te podría dar mil y un ejemplos de programadores basados en JDM.. más o menos es como las distribuciones de linux, linux, en sí, es línea de comandos, luego, cada uno le pone el escritorio/entorno gráfico que más le guste y vá añadiendo programas.

Para que hice un programador ICSP si el JDM ya tiene los conectores para eso? pues muy sencillo, yo, como ya he dicho, tengo el Quark Pro 2, el cual, aún estando basado en el modelo JDM no es compatible con la programación ICSP ya que utiliza una tierra flotante. Para más detalles sobre este programador puedes visitar la siguiente página:

http://www.clubse.com.ar/download/pdf/notasespeciales/nota02.htm

Supongo que anteriormente me habré explicado mal y no se ha entendido lo que quería decir con los programadores, bien, lo explico, tengo uno que funciona, el Quark Pro 2, vá de maravilla, pero por ciertas circunstancias ( no es compatible con ICSP ) y comodidad ( hay que sacar el pic y meterlo en el programador ) he construido *otro* programador, el de Olimex, el cual, funciona bien, de hecho, puedo programar y leer el pic, el problema es cuando el pic está en circuito de aplicación, en marcha, y quiero cambiarle el programa.

Como he dicho antes, todo está en el detalle, y aquí, amigo mío, si te dás cuenta de cuanto tiempo llevo registrado en este foro, sabrás que las normas me las sé al dedillo, con lo cual, si he posteado una duda/problema es porque ni google ni el buscador del foro me han llevado hasta la solución.

No mal interpretes mis palabras, querido amigo y compañero de ondas, todos tenemos derecho a confundirnos.

Recibe un cordial saludo desde españa y un antigüo radioaficionado ( EB5-CFC )


----------



## mcrven (Feb 16, 2013)

Bien amigo Manunet (EB5-CFC), el que monté aquí es el más común y silvestre de los JDM. Con él puedo programar mis PICs y memorias. Probé el ICSP una vez y funcionó. Por eso es que osé indicarte algo al respecto, sin ningún ánimo de atropellar, por supuesto.

73 y DX de YV5MHE


----------



## Manunet (Feb 17, 2013)

Hola de nuevo, el programador "Olimex", por llamarlo de alguna manera, lo que es programar.. programa, pero el problema, es cuando en la proto, por ejemplo, tengo un pic encendiendo intermitentemente un led, vamos, un programa sencillito, el pic se alimenta de una fuente de un pc preparada para mis "inventos", que no son pocos .

Bien, pues tengo dos programas, uno que enciende el led cada 500ms y otro cada 250ms, los dos por la patilla RD2 de un 16f877a.
Pues el problema llega, cuando el pic está alimentado con la fuente, le pongo el programador para cambiarle el programa y sucede que se apaga el pic y la fuente recibe algún consumo extra de no se de donde y claro, el winpic800, al darle al icono de detectar el pic me dice que desconocido con lo cual no puedo hacer nada.
Tambien he probado a la inversa, ya que el Olimex es capaz de alimentar el pic con Vdd, quito la fuente, programo el pic y se pone a trabajar con el nuevo programa, pero, al conectar el negativo de la fuente el pic se apaga.
Creo que la "ratita" ( el problema, como decimos por aqui ) está en el negativo del pc y el negativo de la fuente, los dos están conectados a un enchufe de 220v, con su fase, neutro y tierra comun.
Es lo que intento averigüar y para ello dispongo de multimetros y un osciloscopio.
Tambien he probado quitando el Vdd del programador y poniendo gnd común entre el programador y la fuente con el mismo resultado.
Lo que me llama bastante la atención es que haciendo unas pruebas con unos diodos en la fuente, negativo a negativo del programador y positivo de la fuente a un diodo 1n4007 y de este al positivo de la proto, éste se calienta hasta quemarse .

El objetivo que persigo es tener un circuito en funcionamiento y poder cambiarle el programa.

Si el Olimex no cubre mis espectativas pues, sin problema alguno, lo descarto y monto otro, yo, como siembre, disfrutando como un niño con estas cosas .
Si pudieras exponer o comentar el programador icsp que tienes tu funcionando te lo agradecería eternamente, ya que en todos los circuitos que he montado, bien para uso domestico o industrial, nunca me ha hecho falta "actualizar" el pic, pero claro, los tiempos cambian y hay que ahorrar gastos de mantenimiento de maquinaria, por eso estoy interesado en un programador capaz de cambiar el programa sin tener que quitar el pic del sitio.

Es un incordio tener que sacar el pic del circuito, programarlo y volverlo a poner, con lo que ello conlleva, los pines se doblan, la maquina está mas tiempo parada, etc...

Saludos y muchisimas gracias.

En cuanto pueda pondré varias imagenes de lo aqui explicado para una mejor comprensión.


----------



## Nuyel (Feb 17, 2013)

Creo que ahí está todo el problema, hasta donde sé, el JDM genera los 12V para la programación enviando la alimentación del PIC al voltaje negativo del puerto RS232 con VSS a -6V, por eso si conectas ambas alimentaciones y ambas fuentes están conectadas a una tierra común tienes esas perdidas.
Si planeas hacer esto creo tendrás que aislar completamente el ICSP para adaptar esa diferencias de VSS=-6V en el programador y VSS=0V en la alimentación del circuito, según la norma el RS232 debe soportar cortos circuitos y por eso no se ha quemado nada aún 
Si miras el circuito, GND en el RS232 corresponde al pin 5 del conector DE-9, pero viendo este circuito ves que se conecta al pin 2 del ICSP el cual corresponde a VDD para el PIC


----------



## mcrven (Feb 17, 2013)

La verdad que veo el asunto de otra manera. Según recuerdo haber leído en algún instructivo, la programación vía ICSP, está pensada para no tener que retirar el PIC del circuito, en especial si este está soldado a la placa pero, con la alimentación del dispositivo desconectada, de forma tal que, lo único que va a Alimentar el PIC será el programador JDM, en este caso. Luego de lo cual, se re-enciende el dispositivo re-programado y verificará la nueva programación.

Como bien indica Nuyel, si se conectan ambos dispositivos, se creará un conflicto entre las alimentaciones.

Se me ocurre que deberías hacer una última prueba: Conectar el dispositivo que contiene el PIC a través de un transformador de aislación, a fin de tener aislación galvánica entre la fuente externa y el JDM, los cuales quedarían unido únicamente por la conexión de masa de ambos.


----------



## Manunet (Feb 18, 2013)

Lo del aislamiento galvánico no se me habia ocurrido, pero lo que si que puedo decir es que alimentando el circuito con una pila de 9 voltios tengo el mismo problema.
Buscando por internete he encontrado esta página donde se habla un poco del tema, voy a probar ese programador a ver si funciona como yo quiero:

http://electgpl.blogspot.com.es/2012/09/programador-de-pic-serial-jdm-reducido.html

En esa página habla del tema de unificar las fuentes, en cuanto lo pruebe os comento a ver si de esa manera consigo mi objetivo, pero me temo que no ya que como dice Nuyel, el JDM utiliza la masa del DB9 ( pin5 ) para alimentar el pic, pero bueno.. nada se pierde con probar.. el no ya lo tengo.. jeje

saludos


----------



## Manunet (Feb 18, 2013)

Bueno, acabo de probar el programador icsp del anterior mensaje y funciona a la perfección, tengo que destacar que he prescindido del diodo zener ya que he realizado varias pruebas al DB9 del pc y es estable a 12 voltios, voltaje suficiente para que el pic entre en modo programación.

Ahora mismo tengo el pic alimentado con una fuente ATX tuneada y conectado el programador y puedo cambiar el programa a mi antojo, durante la programación el pic queda en stanby y cuando termina el proceso arranca el solo con el nuevo programa ¡¡¡ y con tan solo 3 resistencias !!! 

El osciloscopio me confirma que llegan bien las señales de los pines Data y Clock y el MCLR sube hasta 12 voltios. Tambien, tengo que decir que ha habido un momento que el osciloscopio me mostraba mucho ruido en las lineas del data y del clock, he apagado la fuente, vuelto a encender y las señales se han vuelto estables y sin ruido, ahora son cuadradas y no como sierras.


Tengo que dar las gracias a los chicos/chicas de electgpl ya que gracias a ellos me voy a ahorrar muchisimos dolores de cabeza y mas de un pin doblado o roto de mis pic's.

Ahora que funciona como quiero me voy a montar una plaquita para este maravilloso programador el cual, en un futuro, lo adaptaré para los portatiles y claro, le tendré que poner alimentación externa, ya sé que los hay por USB, pero me gusta ir por el camino dificil.

Espero que este circuito le valga a mucha gente.

gracias por todo! 

Para los que no entiendan o se hayan perdido por el camino os digo que este es un programador ICSP capaz de programar los pic's sin necesidad de apagar la fuente ya que es ésta ( la fuente ) la que alimenta el pic, tambien se puede programar sobre la marcha, el pic queda bloqueado durante el proceso y cuando termina arranca con el nuevo programa.
Y todo esto sólo con 3 resistencias... tengo que decir que por motivos de seguridad sería necesario colocar el Zener de 13v por si hay alguna descarga en el pc y el voltaje en VPP sobrepasa los 13v dañando a nuestros queridos pic's

Tengo que añadir un pequeño problema que acabo de encontrar, y es el siguiente:
Ahora mismo tengo el pic en marcha, encendiendo un led cada 500ms, bien, el programa se lo puedo cambiar sin problema alguno, pero ( siempre hay un pero, jeje ) si dejas el pic en blanco, el winpic800 deja de reconocerlo pero enchufando sólo la masa del osciloscopio lo reconoce sin problemas y se puede programar y una vez con un programa dentro ya no hace falta la masa del osciloscopio para reprogramarlo las veces que se quiera.
Lo mismo pasa si tocas la masa con el dedo... uhmmm!!! tengo que investigar ese fenómeno y ver cual es la causa para encontrar la solución


----------



## Nuyel (Feb 18, 2013)

Bueno pues este circuito es perfecto, en realidad no tanto pero esta protegido XD (tiras voltajes negativos al PIC pero las resistencias evitan que la corriente queme los diodos de protección en los pines), en este circuito si se implementa la conexión entre ambas tierras, por cierto ¿Vpp de donde proviene? por que en este circuito se necesita que el RS232 opere en rango de +/-12V-15V, me imagino que no todas las computadoras usarán ese voltaje, en especial las portátiles.


----------



## Manunet (Feb 18, 2013)

Hola Nuyel, bueno, te cuento lo que he hecho, al circuito ese le he quitado el 7805 y el zener, el zener quiero ponerselo por protección para el pic, pero ahora mismo no tengo de 13v. Bueno, pues el programador saca gnd del pin 5 y el vpp del pin 3, estudiando el circuito en cuestión entiendo que con el 7805 se alimenta el circuito de aplicación entero, osea, que la entrada de voltaje al circuito para que funcione lo haría por ahí, por eso se lo he quitado, simplemente porque la alimentación la hago por otro lado.
Lo de los voltajes negativos al pic si que me tiene un poco mosqueado ya que el circuito falla de vez en cuando y a veces funciona tocando gnd con el dedo. Tambien he podido comprobar que la fuente atx que utilizo para mis experimentos inyecta mucho ruido al circuito y si a esto le añadimos el ruido que inyecta la protoboard pues tenemos una salsa de cuidado.
Reconozco que el circuito es tan bueno como simple, pero tiene algunos fallos, como por ejemplo, los voltajes negativos que le entran al pic, que si bien el pic en cierto modo es capaz de soportarlo, en un circuito algo complicado no sé como le sentará.

Tengo que estudiarlo a fondo e intentar mejorarlo y sobre todo investigar porque a veces falla, creo que puede ser por la fuente del pc que utlizo para programarlo ya que he tenido que cambiarle varios componentes porque se habían quemado.

saludos!!


----------



## mcrven (Feb 18, 2013)

Amigos, como podrán ver, el IC 7805 de ese circuito, se encuentra completamente separado del circuito de programación. Con ello, el autor nos indica y así lo expresa en el texto, que el programador no lo necesita para nada. Solo se requiere para alimentar la aplicación conectada, si ésta no tiene fuente.

Por eso es que Manunet no lo pone. Él alimenta el PIC con la fuente ATX.

En cuanto al zener de 13V y, como lo indica el texto, solo sirve para evitar que algún pico supere los 13V poniendo al PIC en peligro. Las PCs raramente pasan los 12V y, en general ni siquieran llegan a ese nivel, en especial las LAPs. Pero... En cuanto puedas pónlo que, de que vuelan vuelan. Déjale eso a las brujas, no vaya ser que el PIC aprenda y VUELE.

Solo por curiosidad lo voy a montar y probarlo. Me gusta el "Poder de la Simpleza".

Saludos:


----------



## Nuyel (Feb 18, 2013)

Precisamente el pin para Vpp es el único que no posee red de protección CMOS, por eso es necesario el Zener mientras los otros se limitan apropiadamente con la resistencia, creo que los diodos de la protección en el PIC soportan hasta 20mA.


----------



## Manunet (Feb 19, 2013)

Se me olvidó comentar que creo, no lo he probado, que este programador no funcinará en los ordenadores portatiles... quizás... muy remotamente... funcione en los portatiles antigüos con puerto serie.. falta probarlo, pero dudo mucho que el programador llegue al mínimo de voltaje para que el pic entre en modo programación... de los portatiles nuevos que no llevan puerto serie, en los cuales harían falta un adaptador usb<->rs232 ya ni hablamos, porque se sabe de sobra que el usb trabaja a 5 voltios, ahí si que haría falta alimentación externa de 12 voltios con la modificación correspondiente del programador.
Respecto a la protección de los pines del pic, pues tendría que revisar el datasheet, pero creo que anda por ahí, por 20mA.

Creo que los problemas que tengo con el programador son debidos a los "kilometros" que tiene la protoboard y el cable de masa, del pin5, no hace buen contacto.
Tambien añado que he probado varios 16f877a, 16f88, 16f87 y 18f2550 y los ha programado sin problemas, tengo un 16f887 el cual no consigo programar ni con el Quark Pro 2, supongo que el pic estará defectuoso, es el riesgo de pedir samples a microchip... jeje.

Ahora estoy diseñando la pcb con proteus, una pcb bastante curiosa de lo pequeña que es.
Me falta probar el utilizar los pines PGC y PGD como entrada o salida, para ver si hay algún problema con el programador. En cuanto tenga los resultados os comentaré.

Saludos


----------

