Autor Tema: Fallo al programar 16F887  (Leído 15071 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado tito melli

  • PIC12
  • **
  • Mensajes: 84
Fallo al programar 16F887
« 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

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Fallo al programar 16F887
« Respuesta #1 en: 26 de Febrero de 2017, 19:38:20 »
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

Desconectado tito melli

  • PIC12
  • **
  • Mensajes: 84
Re:Fallo al programar 16F887
« Respuesta #2 en: 27 de Febrero de 2017, 05:36:19 »
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!

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re:Fallo al programar 16F887
« Respuesta #3 en: 27 de Febrero de 2017, 09:47:22 »
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!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado tito melli

  • PIC12
  • **
  • Mensajes: 84
Re:Fallo al programar 16F887
« Respuesta #4 en: 27 de Febrero de 2017, 11:34:24 »
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!

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Fallo al programar 16F887
« Respuesta #5 en: 27 de Febrero de 2017, 11:56:30 »
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.

Desconectado tito melli

  • PIC12
  • **
  • Mensajes: 84
Re:Fallo al programar 16F887
« Respuesta #6 en: 27 de Febrero de 2017, 12:21:11 »
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

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Fallo al programar 16F887
« Respuesta #7 en: 27 de Febrero de 2017, 12:31:38 »
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.

Desconectado tito melli

  • PIC12
  • **
  • Mensajes: 84
Re:Fallo al programar 16F887
« Respuesta #8 en: 27 de Febrero de 2017, 12:59:21 »
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
« Última modificación: 27 de Febrero de 2017, 13:22:05 por tito melli »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Fallo al programar 16F887
« Respuesta #9 en: 27 de Febrero de 2017, 15:03:01 »
no tiene ningun problema que lo hayas realizado con el compilador CCS. Es lo mismo

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re:Fallo al programar 16F887
« Respuesta #10 en: 27 de Febrero de 2017, 16:37:03 »
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...
« Última modificación: 27 de Febrero de 2017, 16:59:49 por manwenwe »
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado colotron

  • PIC12
  • **
  • Mensajes: 73
    • Canal de YouTube
Re:Fallo al programar 16F887
« Respuesta #11 en: 27 de Febrero de 2017, 17:29:14 »
¿Poniendo el pin PGM a GND pasa lo mismo?

Desconectado tito melli

  • PIC12
  • **
  • Mensajes: 84
Re:Fallo al programar 16F887
« Respuesta #12 en: 27 de Febrero de 2017, 18:54:09 »
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

Desconectado Trust

  • PIC16
  • ***
  • Mensajes: 141
Re:Fallo al programar 16F887
« Respuesta #13 en: 27 de Febrero de 2017, 21:58:16 »
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.


Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Fallo al programar 16F887
« Respuesta #14 en: 27 de Febrero de 2017, 22:06:44 »
Por lo que cuenta, parece mas un fallo de conexion, o algun cable que hace mal contacto.