Duda sobre ICSP

Buenas tardes,

hice en el trabajo una pequeña placa para entrenar con un 16F877 en SMD. Para poder grabar el software la placa dispone de un conector de seis pines: Vcc,Vpp,PGD,PGC,PGM, y GND. Todos ellos directamente a los pines del PIC.

Para comprovar que el circuito ha sido correctamente montado, he escrito un programa bien simple que copia a una salida el estado de una entrada.

Pues no hay manera de que funcione. He comprovado que todo este bien soldado, que el conector ICSP esté realmente a los pines correspondientes, he depurado el programa de prueva en MPLAB (donde funciona perfectamente), y nada.

No hay manera. Podria deberse a que en el programa no he definido los fuses? El problema que tengo es que trabajo por costumbre con MPLAB, pero el grabador ICSP es un grabador portatil que me dio mi jefe, no es de Microchip. Por lo tanto escribo el codigo, lo compilo, cargo el archivo HEX al grabador, este lo memoriza, y luego se puede ir grabando en tantos pics como se desee. También he comprovado el grabador en circuitos del trabajo que se graban con uno similar.

El codigo es este:
Código:
#pragma orgin 0x05
void main (void)
{
TRISA=0x00;    
TRISB=0b.1100.0001;  
TRISC=0x00;    
TRISD=0x00;    
 while(1)
 { 
  PORTB.2=PORTB.0; 
 }
}

Gracias por su atencion.
 
Podria deberse a que en el programa no he definido los fuses?

Muy probablemente. Defínelos bien y nos cuentas. Ten cuidado con el fuse del reloj, depende de si tienes un cristal o si usas el oscilador interno... probablemente la ausencia de este FUSE es lo que hace que no funcione.
 
una duda (no he usado el buscador) existen protocolos o recomendaciones para incorporar icsp en un diseño de algun proyecto?? en que debo tener cuidado
 
Creo que si el programador que usas ha programado otros PICs correctamente y al programar tu placa no te muestra ningun error, el problema puede ser:
1.- Los fuses se encuentran mal configurados, o te hace falta configurar.
2.- El diseño de tu placa entrenadora tiene errores.
2.- Si usas un pic de montaje superficial, pueda ser que al soldarlo se averio, o algunos pines estan juntos.
 
En el PGM pon un pulldown de unos 10kOhm, es necesario si usas el LVP (low voltage programming) para que luego el micro no se te resetee aleatoriamente (por experiencia propia :D), por lo demás el resto de conexiones van a los pines que corresponde en cada PIC.
 
Muchas gracis por la información. Ayer estuve ocupado y no pude trabajar en el proyecto. Mas tarde seguire buscando informacion sobre los como configurar los fuses, porque soy algo novato con este PIC y no lo tengo del todo claro.

Aunque me queda una duda importante al respecto: Si yo configuro los fuses en la opcion habilitada para ello en MPLAB, pero no en el codigo, esta información se transfiere al archivo HEX que posteriormente envio al grabador, o para grabar utilizando un grabador que no es de microhip debo configurarlos en el codigo?

Mas tarde cuando haya hecho pruebas les cuento com ha ido.

Gracias.
 
Hola creo que tengo un problema similar tengo un pic16f628A en un protoboard y tengo un circuito jalando quiero reprogramarlo sin necesidad de quitar el pic del proto y coloque un puerto icsp y conecto todo como se dice cargo el archivo .hex al programador identifico el pic y al hora de grabar al parecer todo sale bien pero me aparece un mesaje Start write Configuration y no empieza lo bueno que programe tengo que sacar el pic y reprogramarlo de la forma normal para que comiense alguien que me pueda ayudar
 
buenas gente del foro tengo una duda sobre la programación icsp (ya utilice el buscador) conecto el pgc (programing clock) y el pgd(programing data) al quemador, eso lo entiendo y no utilizo esas patas para nada mas, pero el OSC? tengo que aislarlo? de alguna manera? y el vpp (MCLR) uso un boton de reset , tengo que aislarlo también? tengo esas dudas
uso el pickit2
los pic que estoy usando son 16f84a y 16f877a
 
No hay problema con el oscilador, el PIC lo ignora cuando en modo de programación (MCLR>12 Volts), lo que si recomiendan es poner un circuito de aislación entre los pines de datos y reloj, y los circuitos que manejan estos pines; puede ser un simple jumper o una resistencia

icsp2.jpg


Saludos
 
No hay problema con el oscilador, el PIC lo ignora cuando en modo de programación (MCLR>12 Volts), lo que si recomiendan es poner un circuito de aislación entre los pines de datos y reloj, y los circuitos que manejan estos pines; puede ser un simple jumper o una resistencia

http://www.sitionica.com.ar/icsp_archivos/icsp2.jpg

Saludos

ok pero en mi programa necesito el boton de reset del MCLR en el diagrama que muestras no aplica
en el circuito hay 4 botones de aplicacion y para reiniciar su funcionamiento necesito el boton de MCLR
 
No importa, siempre y cuando no presiones el reset mientras se programa el uC, si lo haces el programador puede dañarse por el cortocircuito formado entre Vpp y GND... para asegurarte de que no ocurra puedes colocar un resistor de 100 ohms en serie entre GND y el botón de reset
 
voy a colocar un jumper de seleccion en el vpp y listo , pregunto lo de el osc por que monte el circuito en protoboard programo con el pickit2 y cuando lo vuelo a leer el codigo se modifica, si lo hago sin el osc el codigo permanece intacto
 
Mi problema es que estoy diseñando un equipo con el pic24FJ256GB110 donde utilizo el puerto analógico para hacer diferentes capturas de sensores. La cuestión es que mientras tengo conectado el programado a través del ICSP todo funciona bien, las lecturas de los puertos analógicos son correctas y el programa corre sin problema.

Ahora bien, si yo desconecto el programador del micro, las líneas del puerto analógico aumentan su tensión unos 200mV y la lectura del micro ya no es la misma, es decir, que según va realizando medidas la lectura no es constante sino variable y ya no se que puede ser porque he probado de todo.

Si alguien sabe que debo de hacer con las líneas del ICSP que dejo al aire, le agradecería que me lo explicara. Estoy empezando a desesperar.
 
Existe algún problema si el potencial entre VDD y GND es de 3,4V con el ICSP? El programador me reconoce el PIC pero me sale error de que VDD debe ser mayor de 4,5V cuando intento borrarlo.

Saludos!

AGREGO:

Empleé una fuente externa para Vdd y pude programar el PIC correctamente. ¿Porqué ocurre esto? Estoy con el 16F887
 
Última edición:
Según tengo entendido, las memorias FLASH deben de programarse con un nivel de voltaje relativamente alto, esto para forzar las cargas en las celdas de memoria. Por ejemplo, las antiguas EPROM's UV solían necesitar una tensión de hasta 21V para la programación mientras que para los operaciones de lectura era suficiente con los 5V.
 
Según tengo entendido, las memorias FLASH deben de programarse con un nivel de voltaje relativamente alto, esto para forzar las cargas en las celdas de memoria.

Correcto, ver la hoja de datos del pic: VPEW (voltage program erase write, o algo así), valor mínimo 4.5V
 

Adjuntos

  • tension programacion pic16f887.png
    tension programacion pic16f887.png
    42.1 KB · Visitas: 9
Atrás
Arriba