Mantener Vpp fuera de otros pines en PIC MCU

Tengo el siguiente circuito usando PIC16F627a, que debería ser compatible con ICSP (dibujado en autocad en lugar del editor integrado). Se omiten los pines IO que no son relevantes para mi pregunta.

Las salidas RB5 y RB6 deben retroalimentarse a las entradas RA5 y RA6 respectivamente. Esas señales denominadas 'restablecer' e 'inhibir' deben combinarse con las señales correspondientes de unidades idénticas en dos señales globales para todo el sistema. Todas las señales de reinicio tienen un AND lógico, porque todas las unidades tienen que estar de acuerdo con un reinicio global. Las inhibiciones son lógicamente OR, porque una sola unidad debería poder iniciar esta función.

Como se puede ver, el voltaje de programación de 12 V se retroalimentaría a la salida RB5 a través del diodo D2, posiblemente dañando el PIC. Para eliminar este peligro, se incluye una resistencia R1 de 2k2 en el sistema, lo que limita la corriente que podría fluir de regreso a RB5.

Una preocupación similar puede aplicarse al par de E/S RA6/RB6, pero solo cuando el voltaje del RELOJ ICSP es bajo, el RB5 se conectará a tierra. No veo ningún peligro heredado aquí, el diodo utilizado aquí es solo para ir a lo seguro.

¿Esta solución simple aplicada a VPP eliminará el peligro de obtener 12V en RB5, destruyendo el IC?

ingrese la descripción de la imagen aquí

Nota: las unidades adicionales dentro de la nube son para mejorar la capacidad de E/S del sistema.

Probablemente tengas razón. Mi profesor de electrónica estaba totalmente en contra de los puntos de unión. Probablemente me infecté con esto también.
OK, empalmes colocados.
"Como se puede ver, el voltaje de programación de 12 V se retroalimentaría a la salida RB5" . No, eso no se puede ver. No está claro qué está tratando de lograr exactamente su circuito.
@Olin: Mejoré el diagrama. Espero que sea más claro ahora. Debido a que el sistema funciona a 5 V, el ánodo D2 estaría alto con respecto a su cátodo, por lo que se aplicaría un voltaje de 12 V en RB5, una condición que quiero evitar. Realmente no hay mucho que lograr, es solo un sistema que requiere que las salidas se retroalimenten a las entradas y, al mismo tiempo, permita ICSP.
Tal vez me estoy perdiendo algo. ¿Por qué no eliminar la retroalimentación a RA5 y RA6, eliminar los diodos en RB5 y RB6, poner resistencias pull-up en ambos? Luego configure RB5 y RB6 como salidas de drenaje abierto (aún se pueden leer los valores reales de los pines). Haga que la lógica de reinicio sea activa-alta y la lógica de inhibición sea activa-baja.
@Tut: No, eso no es posible, el sistema debe ser escalable mediante la combinación de unidades adicionales. Todas las unidades del sistema deben acordar un restablecimiento de todo el sistema, de ahí el AND lógico. Incluso si puede leer su propia salida, todavía hay otras salidas a considerar. Similar para inhibir, pero empleando cable O, cualquier unidad puede activarlo. Al final, habrá tipos de unidades de árbol, uno con 5 E/S (PIC16F627), 8 E/S (PIC16F72) y 15 E/S (PIC16F884), todos compatibles entre sí.
Al hacer que la lógica de reinicio sea activa-alta, un drenaje abierto con pull-up SERÍA un Y lógico. Cualquier dispositivo evitaría el reinicio tirando de la línea hacia abajo.

Respuestas (2)

2.2k aún permitirá que fluya bastante corriente y podría empujar hacia arriba el riel de la fuente de alimentación en el chip.

Sugiero usar un NPN BJT cableado o en lugar de un diodo para forzar /MCLR bajo (invierta la lógica de salida en B5). No estoy seguro de que el reloj sea un problema, no es de alto voltaje.

De hecho, pensé en usar un transistor aquí y convertir AND en OR, pero quiero mantener bajo el recuento de componentes.
¿Qué pasa con el uso de una resistencia más grande? La impedancia de entrada en el PIC es bastante alta, por lo que puede haber mucho espacio para esto.
Debe tener un pullup invisible en / MCLR para que tenga una relación de la que preocuparse más una caída de diodo. Además, el uso de la red de protección de esa manera no prevista puede tener efectos secundarios no deseados. Seguro que no lo haría. Las piezas son baratas, los problemas no lo son.
Hay un pull-up de 56k en MCLR, ubicado en la parte superior derecha del esquema. Un voltaje bajo en RB5 hará que MCLR baje al voltaje directo del diodo. Como nota al margen, MCLR está deshabilitado. La función de reinicio es manejada por el propio programa integrado, porque necesito la entrada. Si la caída directa del diodo es demasiado alta, podría usar un Schottky. Realmente el circuito ha sido construido y probado satisfactoriamente, pero quiero incorporar ICSP.
Sube el voltaje, ¿quieres decir a través del diodo del cuerpo? Sí, eso es lo que también estoy tratando de evitar.
Bueno, no es tan malo como algunos trucos porque el Vpp solo está presente durante la programación, pero todavía hay posibles problemas con la inmunidad al ruido, etc.

No puedes tener tu pastel y comértelo también.

Por su comentario de mantener bajo el recuento de componentes, asumo que está haciendo un producto comercial. En este caso, cuando el software está completo, todo lo que tiene que hacer es cargar el chip antes de soldar. Muchas empresas, incluidas DigiKey y Microchip, le venderán un chip cargado con su archivo hexadecimal. Es poco probable que haga que sus clientes programen el dispositivo en campo.

Si busca crear una plataforma de desarrollo para escribir el software, entonces no tendrá el mismo recuento de partes que la plataforma que se vende.

Lo mejor que puede hacer es colocar un encabezado de 0,1 pulgadas o 2 mm con un puente en serie con la línea de reinicio. Tire del puente para aislar todo lo demás del programa o depuración del pin VPP. Vuelva a colocar el saltador para que funcione normalmente. También puede usar un rastro para conectarse a través del puente. De esta manera, se puede cortar el seguimiento e instalar el puente para el desarrollo y para la producción, simplemente no llene el puente.

Tienes razón, se trata de un producto comercial. Esa es también la razón por la que no puedo ser demasiado específico sobre el propósito, no tengo permitido revelar esta información todavía. Los primeros ejemplares del PCB los vamos a hacer nosotros mismos, pero la idea es externalizar más adelante los procesos de fabricación del PCB, incluido el montaje de los componentes. Entonces tenemos la opción de confiarle a nuestro contratista el código del programa, o flashearlo nosotros mismos, esta última opción requiere ICSP.
La opción del puente es ciertamente algo en lo que he pensado antes, pero deja espacio para errores. Olvídate de quitar un puente antes de programar y tendremos PIC frito para la cena.
@Bart Proporcionar al fabricante el archivo hexadecimal suele ser estándar. El archivo hexadecimal es binario y es difícil, si no imposible, aplicar ingeniería inversa. Abofetear aún más al fabricante con NDA también es estándar. Dependiendo de qué paquete de chips, usar un zócalo que programa el chip fuera del circuito también es una buena opción. Programe un lote de chips y luego suéldelos. El programador PM3 tiene una serie de archivos adjuntos para hacer esto. El riesgo de freír un chip con el puente instalado puede ser algo con lo que tenga que vivir.