TODOPIC
Microcontroladores PIC => Programadores => Mensaje iniciado por: tito melli en 26 de Febrero de 2017, 17:19:54
-
Hola a todos!
Soy nuevo en esto de los microcontroladores PIC, y bueno... como con todo lo que uno empieza desde 0, siempre va más lento de lo esperado, jeje. Pero no me rindo!
Bueno, el caso es que he intentado programar el PIC 16F887, pero el MPLAB me da fallo (adjunto pantallazo).
Lo estoy haciendo a través de PICkit 3, y MPLAB IPE v3.51.
He revisado el conexionado, y en principio cumplo con lo que me pide el datasheet:
* MCLR/Vpp = +5V (PIN 1)
* Vdd = +5V (independiente del MCLR, y conectado en los pines 11 y 32)
* Vss = ground (negativo de la fuente de Vdd, y conectado en los pines 12 y 31)
* LVP = no conectado al PIC
* ICSPCLK = PIN 39
* ICSPDAT = PIN 40
Es necesario conectar algo más? He visto que en algunos videos de Youtube tienen algo más conectado, pero no tengo claro si es totalmente necesario para sólo programar.
Gracias de antemano!
Saludos
-
Para programra por ICSP al menos en el Pickit2 , que no deberia haber diferencias con el Pickit3..
Pickit3 -------- PIC
MCLR -------- MCLR (pin1) - este pin lo pone a 12 o 13V para programar, ademas debe resetear el micro.
VDD --------- VDD ( pines 11 y 32 )
VSS -------- VSS ( Pines 13 y 31 )
ICSPCLK -------- RB6 ( Pin 39 )
ICSPDAT ------- RB7 ( Pin 40 )
Asegurate de no hay nada conectado a Rb6 y RB7, y si tenes conectado algo deberia tener una resistencia entre medio.
Tambien que VDD no este alimentando a otra cosa. y en lo posible solo al micro
-
Para programra por ICSP al menos en el Pickit2 , que no deberia haber diferencias con el Pickit3..
Pickit3 -------- PIC
MCLR -------- MCLR (pin1) - este pin lo pone a 12 o 13V para programar, ademas debe resetear el micro.
VDD --------- VDD ( pines 11 y 32 )
VSS -------- VSS ( Pines 13 y 31 )
ICSPCLK -------- RB6 ( Pin 39 )
ICSPDAT ------- RB7 ( Pin 40 )
Asegurate de no hay nada conectado a Rb6 y RB7, y si tenes conectado algo deberia tener una resistencia entre medio.
Tambien que VDD no este alimentando a otra cosa. y en lo posible solo al micro
Gracias KILLERJC, es justo lo que necesitaba.
Pensaba que la reprogramación ICSP era otro tipo especial, como el LVP.
Entonces, significa que debo aplicar un voltaje constante de 12V a MCLR? Cuando sabré que debo resetearlo?
Gracias.
Saludos!
-
Tito, tú no tienes que hacer nada con mclr: lo hace todo sólo el programador. Tú asegurate de seleccionar el micro correcto en mplab y de poner las conexiones bien. Por si acaso: tienes que alimentar los 5VDD desde otra fuente o decirle a mplab que alimente desde el programador.
Saludos!
-
Tito, tú no tienes que hacer nada con mclr: lo hace todo sólo el programador. Tú asegurate de seleccionar el micro correcto en mplab y de poner las conexiones bien. Por si acaso: tienes que alimentar los 5VDD desde otra fuente o decirle a mplab que alimente desde el programador.
Saludos!
El caso es que así es como lo intenté al principio: conectando MCLR a pin 1 con el PICkit 3, y alimentandolo con el mismo programador. Pero me daba fallo de "invalid ID". Hasta que no apliqué yo el 5Vdd y 5V a MCLR, no se pudo conectar con el PIC. Por eso pregunto lo de los 12V constantes :)
Saludos!
-
Como dijo manwewe no debes ponerle mayor voltaje al PIC el programador lo hace solo. Tal ves no estaba configurado el Pickit3 para que entregue tension el y espera tension externa.
En el caso de tension externa.
El Pickit3 conectas todo MENOS el VDD al PIC.
En tu PIC le pones 5V al VDD y obviamente el GND de tu fuente a VSS
Pero podrias ver si existe alguna opcion de que provea tension. Creo que era asi.
-
Sí, tiene la opción de alimentarlo con el PICkit 3, pero cuando lo intento así, sale el error este.
Con el osciloscopio miré lo que hacía, y se ve perfectamente cómo le envía un patrón de pulsos a través de MCLR.
Probaré de nuevo este fin de semana con diferentes voltajes para ver si el problema está aquí.
Por otro lado, en el datasheet de programación del PIC especificaba que eran necesarias dos fuentes separadas, una para Vdd y otra para MCLR. Esto entiendo que no es para nada necesario para el MCLR no?
Gracias a ambos!
Saludos
-
Por otro lado, en el datasheet de programación del PIC especificaba que eran necesarias dos fuentes separadas, una para Vdd y otra para MCLR. Esto entiendo que no es para nada necesario para el MCLR no?
No es necesario, tampoco lei jamas eso. Creo que para quitarnos las dudas te voy a hacer dos preguntas.
¿El PIC se encuentra en algun circuito (si lo esta adjunta el esquematico de los pines de interes MCLR-RB6-RB7) ? O esta solo?
¿Estas agregando componentes ademas de las conexiones? Ejemplo ponerle una resitencia y capacitor al MCLR.
Pregunto porque lo ideal para eliminar cualquier otra cosa que sea de un circuito es poder quitar el PIC, pero si esta en un circuito este tiene que reunir ciertas caracteristicas, ejemplo el pin MCLR debe poseer un diodo o resistencia entremedio, los pines RB6 y RB7 no deberian tener carga.
Ahora si lo tenes solo al micro en una PCB, sin ningun componentes y solo las conexiones del Pickit3 al PIC eso tendria que ser otro problema.
-
Está conectado en un protoboard, sin más componentes.
Cuando llegue a casa intentaré probar de nuevo como me decís: todo con el PICkit 3, y ya os digo
Por otro lado, el .hex lo hice con CCS Compiler. Hay algún problema con esto? (En principio según tengo entendido es lo mismo no?)
Saludos
-
no tiene ningun problema que lo hayas realizado con el compilador CCS. Es lo mismo
-
Como dijo manwewe no debes ponerle mayor voltaje al PIC el programador lo hace solo. Tal ves no estaba configurado el Pickit3 para que entregue tension el y espera tension externa.
En el caso de tension externa.
El Pickit3 conectas todo MENOS el VDD al PIC.
En tu PIC le pones 5V al VDD y obviamente el GND de tu fuente a VSS
Pero podrias ver si existe alguna opcion de que provea tension. Creo que era asi.
No KILLERJC! aunque alimentes "desde fuera" el programador tiene que ver esa tensión o te da error (antes de intentar conectar busca tensión, interna o externam en VDD).
Yo apostaría a que tienes malas conexiones en la protoboard: algo que nos ha pasado a todos alguna vez...
Edito: bueno, igual me equivoco porque hace un montón que no toco un PIC16...
-
¿Poniendo el pin PGM a GND pasa lo mismo?
-
Hola!
Hoy he probado a hacerlo todo desde PICkit 3, y sí que sirve. Sin embargo, no funciona bien siempre. A veces consigo leer la ID, pero le vuelvo a dar y me dice que la ID es invalida. Clico en escribir y empieza a reprogramar, hasta que de repente dice que no hay dispositivo.
He probado a mover todos los pines de la protoboard, pero sigue ocurriendo lo mismo. He cambiado de software de reprogramación y de microcontrolador, y lo mismo.
Mañana intentaré pinchar los cables del PICkit directamente sobre los pines del PIC (sin el protoboard), para descartar un problema de conexión.
¿Sabeis si es posible que mi PICkit 3 este roto? Es nuevo... Y una copia china. ¿como se podría saber?
¿Poniendo el pin PGM a GND pasa lo mismo?
Intentaré esto también mañana. ¿Puede tener influencia esto?
Gracias a todos por vuestra ayuda!
Es un poco frustrante encontrarse tantos problemas nada más empezar, jeje.
Saludos
-
Hola Tito Melli, recientemente he tenido problemas parecidos a los tuyos y leyendo en este foro y en otros al final conseguí programar el pic con el pickit3.
Lo primero, asegurate de que tienes bien las conexiones para la alimentacion del pic y del pickit3 al pic. Se dan grandes fallos por no conectar bien todo.
Pickit3 -- PIC16F887
1-mclr -- Pin1-diodo 1n4148-resistencia 10k a +5V
2-VDD -- +5V
3-VSS -- GND
4-PGD -- Pin40- Si conectas algo más pon una resistencia a GND
5-PGC -- Pin39- Otra resistencia a GND si la usas para otra cosa
6-PGM-------------------------
En el Pickit3, lo que yo hago es primero en el menú tools- Check communication
Entonces te dirá: Pic device found y también que pic es.
A veces el pickit3 se queda pillado, entonces desconectalo y vuelvelo a conectar, oirás el sonido de que lo reconoce windows.
Asegúrate de alimentar bien el PIC, yo uso una powerbank de 5v y 6000 mah.
-
Por lo que cuenta, parece mas un fallo de conexion, o algun cable que hace mal contacto.
-
Por lo que cuenta, parece mas un fallo de conexion, o algun cable que hace mal contacto.
Sin duda...
-
Hola Tito Melli, recientemente he tenido problemas parecidos a los tuyos y leyendo en este foro y en otros al final conseguí programar el pic con el pickit3.
Lo primero, asegurate de que tienes bien las conexiones para la alimentacion del pic y del pickit3 al pic. Se dan grandes fallos por no conectar bien todo.
Pickit3 -- PIC16F887
1-mclr -- Pin1-diodo 1n4148-resistencia 10k a +5V
2-VDD -- +5V
3-VSS -- GND
4-PGD -- Pin40- Si conectas algo más pon una resistencia a GND
5-PGC -- Pin39- Otra resistencia a GND si la usas para otra cosa
6-PGM-------------------------
En el Pickit3, lo que yo hago es primero en el menú tools- Check communication
Entonces te dirá: Pic device found y también que pic es.
A veces el pickit3 se queda pillado, entonces desconectalo y vuelvelo a conectar, oirás el sonido de que lo reconoce windows.
Asegúrate de alimentar bien el PIC, yo uso una powerbank de 5v y 6000 mah.
Hola Trust,
Te sucedió con este mismo PIC?
Esta tarde intentaré hacerlo sin la protoboard y os comento.
Por otro lado, en el readme de Mplab sobre el PICkit 3, vi que para reprogramar la familia 16F88X ponía algo como: "is necessary to pull PGM pin low due to silicon issue". Hasta ahora lo he dejado sin conectar, pero intentaré probar conectandolo a GND, como me ha comentado colotron, a ver si es que no le llega un 0 "limpio".
Gracias a todos!
Saludos
-
Bueno pues acabo de probar con conexión directa desde el PICKit al PIC, y pasa exactamente lo mismo.
También he probado conectando el pin PGM en GND (o sea Vss), y así no me deja ni conectarme (invalid ID).
No se ya qué hacer, la verdad..
¿Alguna idea?
Saludos!
-
¿has probado a cambiar de micro a ver si está roto?
-
Sí, pero me pasaba exactamente lo mismo :(
-
Hola, yo uso el 16F877a.
Seguro que alimentas bien el pic?
Detecta el Pickit que estas alimentando el pic?
Desconecta y conecta el pickit3 del usb del pc, asegurate de que no este encendido el led status del pickit.
Comprueba la conexión en el menu tools/Check communication.
Tiene el pickit el SO cargado?
-
Hola, yo uso el 16F877a.
Seguro que alimentas bien el pic?
Detecta el Pickit que estas alimentando el pic?
Desconecta y conecta el pickit3 del usb del pc, asegurate de que no este encendido el led status del pickit.
Comprueba la conexión en el menu tools/Check communication.
Tiene el pickit el SO cargado?
El PIC lo alimento con el el PICkit 3. He probado con voltajes entre 5V y 4.5V. Cómo lo configuras tú? Seleccionas alguna casilla?
El PICkit en principio detecta que se está alimentando, y las conexiones están fijas, pues ayer las solde todas a una base. El PICkit tiene el SO descargado y lo detecta sin problema.
No se si al ser un clon, puede que tenga algún defecto y pierda conexión.
Empiezo a barajar las opciones de comprar otro PIC (16F877 por ejemplo), o incluso un programador nuevo y original, aunque he visto que son bastante más caros y me echa un poco para atrás.
Saludos!
-
* MCLR/Vpp = +5V (PIN 1)
* Vdd = +5V (independiente del MCLR, y conectado en los pines 11 y 32)
* Vss = ground (negativo de la fuente de Vdd, y conectado en los pines 12 y 31)
* LVP = no conectado al PIC
* ICSPCLK = PIN 39
* ICSPDAT = PIN 40
¿Seguro que lo tienes todo bien conectado?
En mi pickit3 que también es la version clone, no me concuerda lo que tu has puesto.
En mi pickit esta así:
1=MCLR/VPP PIN1
2=VDD PIN11
3=VSS PIN12
4=PGD (ICSPDAT) PIN40
5=PGC (ICSPCLK) PIN39
6=PGM (LVP) NO CONECTADO
-
No has de conectar Vdd y Vss a sus dos respectivos pines? Solo lo conectas al 11 y 12?
He visto el datasheet del 16F877a y la configuración es igual a la del 16f887
Saludos!
-
Me parece que no es necesario,yo no lo tengo conectado, midelo con el tester y veras que los pines 31 y 32 tienen también los 5v.
En cuanto a las conexiones que te he puesto en el mensaje anterior, ¿tienes las conexiones asi como te he puesto?
-
Madre mía, como sea eso me voy a cortar un huevo, jejeje.
Sí, lo tengo todo así, solo que VDD = PIN 11 & 32 \\ Vss = Pin 12 & 31. Lo demás está todo como tú dices:
1=MCLR/VPP PIN1
2=VDD PIN11
3=VSS PIN12
4=PGD (ICSPDAT) PIN40
5=PGC (ICSPCLK) PIN39
6=PGM (LVP) NO CONECTADO
Esta tarde volveré a probar a ver.
Por otro lado, que configuración usas? Activas Vdd pm y MCLR manualmente?
Gracias!!
-
Bueno ya lo he probado, y tenías razón, trust: no es necesario conectar Vdd a los dos pines. Sin embargo, sigo sin poder reprogramar.
He visto lo siguiente:
* En Vpp el voltaje máximo que veo es de 5V. No llega a los 12 que en teoría son necesarios.
* Cuando escribe, el fallo que me sale es: Programming failed at Program Memory address 0x000020
* Tras trastear en el programa, he visto que si le doy a write sin verificar, hace todo el proceso hasta "Done". Pero, ¿como puedo ver si está todo ok? Si le doy a verificar salta el fallo de nuevo.
Saludos
-
Buenas, Pues alguna falla en el circuito hay, con 5v en VPP mientras programa o lee no va a funcionar, se necesita al menos hasta que recuerdo una tensión de entre 12 y 14 volts para poner el micro en modo de programación o lectura.
Fijate por ahí que seguro o tienes algo conectado a ese pin y no lo estas viendo, o tiene un fallo el programador allí.
Slds.
-
Por otro lado, que configuración usas? Activas Vdd pm y MCLR manualmente?
En Tools - Target Vdd source lo tengo en Auto-Detect, Fast programming activado.
En el recuadro de Vdd Target, no tengo seleccionado Check, ni tampoco MCLR.
Comprueba bien si cuando le das a grabar le llegan al pin MCLR los 12-14 volts.
Dale al boton de grabar como si fueras a grabarlo varias veces.
El momento en que se pone a 12-14 volts es tan pequeño que puede ser que no lo llegues a ver a la primera.
Asi te podras asegurar si el pickit le entrega el voltaje de programación o no.
-
Buenas, Pues alguna falla en el circuito hay, con 5v en VPP mientras programa o lee no va a funcionar, se necesita al menos hasta que recuerdo una tensión de entre 12 y 14 volts para poner el micro en modo de programación o lectura.
Fijate por ahí que seguro o tienes algo conectado a ese pin y no lo estas viendo, o tiene un fallo el programador allí.
Slds.
Lo único que está conectado es el PIC. No hay nada más. Lo he probado tanto en la protoboard como en una base con las conexiones soldadas a los conectores del Pickit, por lo que no debería haber problema.
Por otro lado, que configuración usas? Activas Vdd pm y MCLR manualmente?
En Tools - Target Vdd source lo tengo en Auto-Detect, Fast programming activado.
En el recuadro de Vdd Target, no tengo seleccionado Check, ni tampoco MCLR.
Comprueba bien si cuando le das a grabar le llegan al pin MCLR los 12-14 volts.
Dale al boton de grabar como si fueras a grabarlo varias veces.
El momento en que se pone a 12-14 volts es tan pequeño que puede ser que no lo llegues a ver a la primera.
Asi te podras asegurar si el pickit le entrega el voltaje de programación o no.
Probaré a mirarlo con el osciloscopio. El voltaje de 12V es un pico, y luego vuelve a 5V, ¿no?
Por otro lado, si pronto no soluciono el problema, estoy pensando en comprarme un programador original y más bueno, pues estoy perdiendo mucho tiempo con esto y no parece solucionarse. He visto el GTP USB plus, ¿como lo veis? ¿cual me aconsejáis?
Gracias a todos.
Saludos!
-
Hola,
He probado a reprogramar y mirar con el osciloscopio, y he visto que el voltaje no sube de 5V (adjunto foto). Por lo tanto el PIC no entra en modo reprogramación. No sé si es que el PICkit 3 está defectuoso y no es capaz de hacerlo, o es que no sube de voltaje porque cree que no es necesario.
El caso es que abandono este PIC. El lunes me compro un 16F877, lo vuelvo a intentar, y si tampoco me sirve, invertiré en un programador bueno.
Gracias a todos por vuestra ayuda!
Saludos
-
la otra es fijarse si hay algo en la configuracion, ejemplo si esta activdo algo que limite la tension, o lo de programacion de bajo voltaje.
-
* En Vpp el voltaje máximo que veo es de 5V. No llega a los 12 que en teoría son necesarios.
Ahí parece tienes el problema. Los PIC18F y 16F (los 14F,12F y 10F lo desconozco) necesitan más de 9VDC (si no recuerdo mal) en VPP para entrar en modo ICSP. Más adelante con los 24F, DSPIC, 32MX, etc. lo rectificaron y con el mismo voltaje que VDD es suficiente. Con lo que parece que tu clon chino no lleva una bomba de carga para sacar los 9VDC (12VDC en teoría) desde los 5VDC del puerto USB...Si tienes un micro de 16bit o 32bit a mano prueba y es probable que funcione correctamente...
Saludos!
-
Échale un ojo (página 33 en referencia a VPP):
http://ww1.microchip.com/downloads/en/DeviceDoc/41287D.pdf
Si no cumples ni voltaje ni tiempo mínimo en "alto" no entrarás en modo ICSP.
Saludos!
-
Pues vaya gracia.. bueno al menos hemos resuelto el problema, jejeje. A comprarse un programador toca!
Muchas gracias a todos!!!
Saludos
-
Si te corre prisa puedes hacer un apaño: coge un transistor o un operacional, alimenta con 12VDC y disparas VPP desde ahí...
Saludos!
-
Hola manwenwe,
El problema es que en este caso jodería toda la sincronización de señales entre MCLR y ICSPDAT, etc., ¿no?
-
Para nada. Mira la figura 3-2:
http://ww1.microchip.com/downloads/en/DeviceDoc/41287D.pdf
Una vez que manda el pulso de 12V VPP ya se queda a ese nivel. Luego ya se empiezan a enviar datos por PGC/PGD. Entre el flanco de subida de VPP y el envio de señal en PGC tiene que haber mínimo 5us: dudo bastante que el transistor o oamp retrase tanto esa señal que haya menos de 5us (seguro que el pickit3 le da un buen margen).
Yo probaría ya que tardas nada en montar el circuito...
Saludos!
-
Pero a veces se necesita cambiar de espacios y creo que la unica forma es ejecutando un reset. Lo cual implica manejar el MCLR a valores correctos.
-
Pero a veces se necesita cambiar de espacios y creo que la unica forma es ejecutando un reset. Lo cual implica manejar el MCLR a valores correctos.
Cierto, pero lo que no se necesita es poner VPP a 5V, así que los 12V y 0V los puede conseguir desde 5V,0V. Pongo la mano en el fuego porque hace 10 años hice un programadar para PIC16F y 18F y recuerdo que los 12V los conseguía de una bomba de carga y VPP lo disparaba con un transistor: no había 3 estados en el mismo en ningún momento.
Saludos!
-
Hola!
Bueno, es una pregunta bastante básica, pero.. para amplificar el voltaje tengo que usar el transistor en base común ¿verdad? Intenté ayer en proteus hacer el esquema de conexión pero no conseguí los 12V.
¿conoceis algún esquema que me pueda funcionar?
Saludos
-
Pon un bjt npn. Una resistencia de 1K entre la base y tu VPP, 12V en el colector y una resistencia de 10K entre el emisor y masa. La salida amplificada es el emisor.
-
Ah vale! Sería usarlo de "llave" para abrir o cerrar el voltaje de 12V. Gracias!
-
Bueno me acaba de llegar el PIC-Kit 3 original, y con este va todo a la perfeccion. Definitivamente el problema estaba en la incapacidad de subir el voltaje a 12V.
Gracias a todos por vuestro tiempo y ayuda! :)
Saludos!