ICD3 + PIC + MPLAB: el ID del dispositivo de destino 0x0 no coincide con el ID del dispositivo esperado

Diseñamos una placa con un Microchip PIC24HJ256GP610A . Hemos utilizado con éxito un ICD3 para programar y depurar el PIC en la placa de desarrollo Explorer 16 . Creemos que hemos seguido las pautas de diseño que se encuentran en la Guía del usuario del depurador :

ingrese la descripción de la imagen aquí


Editar: usamos una resistencia pullup de 4.6k entre MCLR y VDD.

Nuestra interfaz PCEG/PGED son los pines 26/27 en el PIC. Estas líneas se conectan exclusivamente al chip y no se utilizan para nada más.


Alimentamos nuestra placa externamente y el PIC está conectado a este circuito de alimentación (3,3 voltios, suficiente potencia de esta fuente).

Editar: usamos algunos condensadores de desacoplamiento en nuestros rieles de suministro (C2, C8, C9 y C16, C18):

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Sin embargo, cuando intentamos conectarnos y cargar nuestro programa en el PIC, obtenemos el siguiente mensaje en la ventana de salida de MPLAB X :

Target detected
Target Device ID (0x0) does not match expected Device ID (0x77b0000).

Este es un extracto del diseño de nuestro tablero:

ingrese la descripción de la imagen aquí

¿Alguien puede ver el error o explicar qué podría salir mal?

¿Te diste cuenta de esto?

Respuestas (4)

Editado según la información actualizada proporcionada.

0x0 generalmente significa que no hay comunicación. Ya sea un dispositivo defectuoso, malas conexiones en el ICSP o problemas de energía. Confiaré en que su riel 3V3 'funciona' por ahora.

Su resistencia _MCLR y el uso del puerto ICSP 1 no deberían plantear ningún problema con el depurador.

¿Tiene suficiente desacoplamiento, según la hoja de datos de PIC24? Los capacitores de desacoplamiento deben instalarse tan cerca físicamente del PIC24 como lo permitan el diseño y la asignación de pines:

ingrese la descripción de la imagen aquí

Puedes ver que para cada V D D y V S S par, necesita una tapa de cerámica de 100 nF y una tapa de 10 microfaradios en V C A PAG . Lo que se muestra en sus esquemas para el riel 3V3 no parece ser suficiente y, lo que es más importante, no tiene nada en V C A PAG (lo cual es muy malo). Según la página 20 de la hoja de datos:

Se requiere un capacitor de ESR bajo (< 5 ohmios) en el pin VCAP, que se usa para estabilizar el voltaje de salida del regulador de voltaje. El pin VCAP no debe estar conectado a VDD y debe tener un capacitor entre 4,7 μF y 10 μF, 16 V conectado a tierra. El tipo puede ser de cerámica o tantalio. Consulte la Sección 24.0 “Características eléctricas” para obtener información adicional.

Arregle su desacoplamiento y háganos saber qué sucede.

Por favor, vea mis ediciones donde me refiero a sus preguntas.

Estoy de acuerdo con todo lo que dijo @Madmanguruman. Aquí hay algunas cosas más que revisaría.

1) ¿Qué tan seguro está de que el PIC24 está soldado correctamente? Esto incluye todos los pines que hacen conexión, ninguno en cortocircuito, la orientación correcta, etc. También verifique que su encabezado de programación no esté invertido (6-1 en lugar de 1-6).

2) ¿Puede probar PCEG/PGED con un alcance para ver si se alternan durante la programación? Si es así puedes eliminar a tu programador como fuente de error. Si no cambian, también podría ser una mala conexión en su tablero que los derriba.

Poner un 10 m F tapa en el V r mi gramo clavija (clavija 85). El núcleo PIC24 funciona con 1,8 V y está regulado internamente. Ese límite es necesario para que la pieza funcione. Lea la hoja de datos.

Tuve el mismo tipo de mensaje de error que resultó ser software y no hardware como implica el mensaje de error. Compilé un código que no dio errores y lo cargué en el destino correctamente. Cuando cambié la tasa de baudios en un cálculo #define para una interfaz serial bit-bang de 4800 bps a 1200 bprs sin error del compilador e intenté cargar el código en el objetivo a través de un ICD3, apareció un mensaje de error: "ID del dispositivo de destino (0x2060 ) no coincide con el ID de dispositivo esperado (0x2080)”. El diseño del software utiliza el registro de temporizador de 8 bits sin firmar TMR0 para cronometrar la velocidad de bits de las comunicaciones en serie. Resulta que al cambiar la tasa de baudios, el cálculo generó un valor superior a TMR0, lo que resultó en el mensaje de error en el momento de la carga. Una vez que ajusté el prescaler para TMR0,