PIC12F617 El ID del dispositivo se lee al depurar, pero no al programar

2

La primera vez que uso un PIC12F (he usado PIC16, PIC18, DSPIC24F, DSPIC30F y DSPIC33F en el pasado).

Hice una pcb muy simple (vea sch a continuación), pero tengo problemas para programarlo con un ICD3. No lo sabía, pero estos necesitan un encabezado especial para la depuración con ICD3 (no tengo), pero por lo que entiendo debería ser posible programarlo sin él (¿quizás no?).

Cuando intento depurar, le digo a MPLAB que el encabezado está allí (pero no lo está), detecta la ID de dispositivo correcta (1360), pero se queja de que no es lo que se esperaba (porque espera el encabezado). Pero el punto es que PODRÍA LEER la ID del dispositivo.

Pero, al seleccionar el ICD3 como programador (a diferencia de Debugger), lee 0 como ID de dispositivo, por lo que no puede continuar.

¿Alguna idea sobre por qué no está leyendo la identificación del dispositivo cuando está en el modo de programación?

Por cierto, no uso el conector RJ11 original porque es demasiado grande, pero he usado con éxito este Molex más pequeño en decenas de diferentes PCB personalizados con otros microcontroladores de Microchip.

ACTUALIZACIÓN:

El hecho de no poder leer la ID del dispositivo sigue siendo un misterio, pero resulta que puede ignorarse y el dispositivo se programará correctamente. El hecho de que se pueda verificar el programa y de que lea el ID del dispositivo con ICD3 como depurador me hace dudar de la hipótesis de integridad de la señal. Probé la resistencia de 100 ohmios muy cerca del pin ICSPDAT / PGD del chip, y también una pequeña tapa justo después (bueno, solo una sonda de alcance), sin cambios en los resultados.

Para resolver realmente esto, tendré que capturar el intercambio PGD-PGC-VPP y analizarlo. Si lo hago, publicaré los resultados aquí.

    
pregunta apalopohapa

1 respuesta

2

Tu circuito se ve bien. La resistencia de 51.1 kΩ y el diodo a Vdd en MCLR es un poco tonto, pero eso no impide que el ICD lea la ID del dispositivo. Dos cosas a considerar:

  1. Asegúrese de que está tratando de usar el ICD3 como programador, no como un depurador cuando solo está intentando programar un firmware que debería funcionar por sí solo.

  2. ¿Tal vez está teniendo interferencia entre PGC y PGC? Normalmente pongo 100 put en serie con las líneas que salen del PIC, seguidas de 47 pF o menos a tierra. Eso filtra los bordes afilados que el PIC puede producir durante la lectura, que puede cruzar entre las dos líneas. Esto empeora porque PGC y PGD están uno al lado del otro en el cable ICD normal. A menudo utilizo un cable plano con una línea de tierra adicional entre los dos.

Para una desmitificación más general sobre las consideraciones eléctricas de la programación PIC, consulte www.embedinc.com/picprg/icsp.htm.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas