PIC18F44K22: no se puede usar el pin MCLR/RE3 como entrada. MCU se reinicia cuando se mantiene presionado RE3

Estoy tratando de usar el PORTE ancho de 4 bits en una MCU PIC18F44K22. Este puerto contiene el pin RE3/MCLR que se puede configurar como un pin de reinicio o como un pin de entrada configurando/borrando el bit MCLRE en CONFIG3H.

No importa qué valor se establezca en el bit MCLRE, si el pin RE3/MCLR se mantiene BAJO, la MCU se niega a ejecutar ninguna instrucción. Configurar el pin RB3/MCLR y la MCU funciona como se esperaba (con un pin de entrada menos).

Esto se ha probado utilizando un programador pickit 2 y un multímetro, alimentando la MCU con el propio programador. Los pines de alimentación de la MCU se desacoplan utilizando condensadores de 1pF y un condensador adicional de 22uF en la entrada de alimentación de la placa.

BOR está deshabilitado y el programa cargado es tan simple como es posible (configure RB3 UP). Probado usando 5V y 3.2V

He leído que ESD ocasionalmente desencadena reinicios, pero en este caso es un valor bajo que mantiene el dispositivo reiniciado .


Solución:
Para que MCLRE tenga algún efecto, el bit LVP debe estar deshabilitado. En gpasmo:

    CONFIG MCLRE  = INTMCLR
    CONFIG LVP    = OFF
¿Has probado con una fuente de alimentación independiente? Esa parte tiene un problema que requiere un montón de corriente en el arranque bajo algunas condiciones: la errata es lo suficientemente extraña como para que se pueda aplicar.
tapas de desacoplamiento 1pF? ... 100nF es más típico. Probablemente un error tipográfico, supongo.
¿Ha desactivado la "Programación ICSP de suministro único" en sus bits de configuración (CONFIG4L.LVP)?

Respuestas (2)

Si no ha deshabilitado la "Programación ICSP de suministro único" en sus bits de configuración (CONFIG4L.LVP), esto explicaría el comportamiento que está viendo.

La sección 24.9 de la hoja de datos dice "Mientras está en el modo ICSP de bajo voltaje, MCLR siempre está habilitado, independientemente del bit MCLRE, y el pin RE3 ya no se puede usar como una entrada de propósito general".

Parece estar funcionando ahora. ¡Tanques!

Esto huele a que la configuración de su bit de configuración en realidad no está entrando en el chip. Algunas posibles razones para esto:

  1. Tiene MPLAB configurado para que los bits de configuración provengan de la GUI en lugar de su código.

  2. Es posible que el programador no esté configurado para sobrescribir los bits de configuración. Verifique el "rango de programación" (o algo así) en la configuración.

  3. Necesitas volver a importar el código. Me he dado cuenta de que después de cambiar los bits de configuración en el código fuente, reconstruir, ejecutar MPLAB nuevamente y luego programar el chip, los nuevos ajustes de configuración no llegan al chip. No sé si esto es un error o una característica, pero la solución es ARCHIVO> IMPORTAR el archivo HEX o COFF nuevamente, luego reprogramar.

Use la GUI de bits de configuración en MPLAB para ver cómo cree que están configurados los bits de configuración. O incluso mejor, programe la pieza y luego inspeccione los bits de configuración reales en el chip con el depurador para ver cómo están realmente configurados.