Autor Tema: Rpull up en salida GPIO de la Rasp que será usada para RESET en varios chips.  (Leído 178 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado genisuvi

  • PIC16
  • ***
  • Mensajes: 104
hola!
Quiero controlar el reset de varios chips en una PCB que controlará señal de salida de una Raspberry. Una única señal en una PCB de 8 chips. Pero también puede haber hasta 8 PCBs. Así que 8x8 = 64 chips.
Es decir; un RESET_OUT (Raspberry OUTPUT) tendrá 64 derivaciones para llegar a los 64 pines de RESET_INx (chips destino INPUT).
Si quisiera dejar esta señal RESET_INx en estado alto por defecto (reset inactivo) usaría la configuración Rpull up. En muchos casos la gente emplea 10K para hacer este Rpull up en este chip.


Mi duda es si:

1.- necesito una Rpull up para cada chip o si al colgar de la misma señal/línea bastaría una sola Rpull up conectada a RESET_OUT antes de distribuirse.
2.- manteniendo el valor de R10K? cómo saber qué valores me harían falta?


Gracias a todos!

Desconectado remi04

  • PIC18
  • ****
  • Mensajes: 450
Re:Rpull up en salida GPIO de la Rasp que será usada para RESET en varios chips.
« Respuesta #1 en: 11 de Agosto de 2020, 10:47:26 »
Los pines de reset de los uC suelen ser muy delicados y sensibles a ruido por lo que es totalmente desaconsejable hacer una red de reset’s en paralelo y enviarlos todos a la gpio de la Raspi.  Y menos aún si van a mediar cables entre distintas tarjetas que comunican con los reset directamente.


  Lo ideal es que todos los uC estén lo más cerca posibles entre ellos. Cada reset con su pullup independiente y su condensador cerámico de desacople.

  Luego pondría un mosfet tipo 2n7002 que son smd, muy pequeños y baratos,  con drain al pin reset, source a Gnd y gate a gpio.

   Entonces todas las gates de todos los mosfet sí que los puedes unir, las polarizas a gnd con una resistencia de 10k y todo conectado al gpio.

  Incluso puedes agrupar varios reset que estén muy cerca entre ellos a un solo mosfet.

   

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1194
Re:Rpull up en salida GPIO de la Rasp que será usada para RESET en varios chips.
« Respuesta #2 en: 11 de Agosto de 2020, 20:52:37 »
Que tal genisuvi,

Puedo entender que sigas teneidno dudas y preguntas acerca de tu proyecto, pero es importante que indiques con mas detalle tu proyecto. Como te he estado siguiendo, se con seguridad que el "chip" que estás usando es el MCP23S017 y es importante que lo sigas indicando, de lo contrario como es el caso, remi04 ha asumido a que te refieres a pines de RESET para microcontroladores, los cuales son mucho más sensibles tal como te lo ha explicado él.
Ahora bien, respondiendo a tu pregunta, debes leer y observar con detalle la hoja de datos del componente en cuestión, en este caso el MCP23S017, el cual detalla en las páginas 4 y 5 que el pin de RESET tiene una capacitancia de entrada de 50pF, ese es un dato importante a tomar en cuenta para realizar los cálculos necesarios.
Mira sin tomar en cuenta la capacitancia parasítica de las pistas en el PCB y suponiendo que tienes 8 MCP23S017 en un solo PCB, estarías uniendo 8 capacitores de 50pF, dándote una capacitancia total de 400pF. Ahora bien, supongamos que solo tienes un solo IC, y le agregas una resistencia de 10 Kohms, entonces necesitas que el capacitor se cargue hasta 0.8VDD, que en tu caso es de 3.3V, es decir necesitas que se cargue hasta 2.64V. Aplicas la ecuación del voltaje de carga en un capacitor, y obtienes que el capacitor alcanzará dicho voltaje de 2.64V en 804ns. Ahora bien, si tienes 8 pines de RESET conectados, la capacitancia se incrementa hasta 400pF, lo que significa que ahora le tomará 6.4377 uS en alcanzar el voltaje. Como te podrás dar cuenta, el tiempo de colocar los MCP23S017 en modo activo irá incrementando, así que imagínate que lo que deseas es mantener el ese tiempo como el originalmente calculado, es decir ele de 804ns, entonces lo que tienes que hacer es reducir el valor de la resistencia en tu ecuación de carga del capacitor de modo que el conjutno de RC en la ecuación te produzca 804ns. En el caso de 8 MCP23S017 te diré que la resistencia sería de 1.2489 Kohms. Si ahora colocas 64 de estos la resitencia sería cada vez más pequeña, por lo que llegará un momento el que el pin del raspberry pi no podrá manejar la corriente de la resistencia por se tan pequeña. ASí, que la mejor solución sería usar la idea de remi04, pero yo la modificaría de manera que solo uses una resistencia de 1.2Kohms por cada targeta de 8 MCP23S017 y utilices un transistor para así bajar el nivel a 0 y generar el reset.
Espero que me haya explicado y que esta idea te sirva, si tienes preguntas no dudes en hacerlas. Por cierto lo de la carga y descarga de un capacitor te lo dejo de tarea para que sea una parte de tu aprendizaje.

Saludos,

elreypic.

Desconectado genisuvi

  • PIC16
  • ***
  • Mensajes: 104
Re:Rpull up en salida GPIO de la Rasp que será usada para RESET en varios chips.
« Respuesta #3 en: 12 de Agosto de 2020, 06:33:22 »
Que tal genisuvi,

Puedo entender que sigas teneidno dudas y preguntas acerca de tu proyecto, pero es importante que indiques con mas detalle tu proyecto. Como te he estado siguiendo, se con seguridad que el "chip" que estás usando es el MCP23S017 y es importante que lo sigas indicando, de lo contrario como es el caso, remi04 ha asumido a que te refieres a pines de RESET para microcontroladores, los cuales son mucho más sensibles tal como te lo ha explicado él.
Ahora bien, respondiendo a tu pregunta, debes leer y observar con detalle la hoja de datos del componente en cuestión, en este caso el MCP23S017, el cual detalla en las páginas 4 y 5 que el pin de RESET tiene una capacitancia de entrada de 50pF, ese es un dato importante a tomar en cuenta para realizar los cálculos necesarios.
Mira sin tomar en cuenta la capacitancia parasítica de las pistas en el PCB y suponiendo que tienes 8 MCP23S017 en un solo PCB, estarías uniendo 8 capacitores de 50pF, dándote una capacitancia total de 400pF. Ahora bien, supongamos que solo tienes un solo IC, y le agregas una resistencia de 10 Kohms, entonces necesitas que el capacitor se cargue hasta 0.8VDD, que en tu caso es de 3.3V, es decir necesitas que se cargue hasta 2.64V. Aplicas la ecuación del voltaje de carga en un capacitor, y obtienes que el capacitor alcanzará dicho voltaje de 2.64V en 804ns. Ahora bien, si tienes 8 pines de RESET conectados, la capacitancia se incrementa hasta 400pF, lo que significa que ahora le tomará 6.4377 uS en alcanzar el voltaje. Como te podrás dar cuenta, el tiempo de colocar los MCP23S017 en modo activo irá incrementando, así que imagínate que lo que deseas es mantener el ese tiempo como el originalmente calculado, es decir ele de 804ns, entonces lo que tienes que hacer es reducir el valor de la resistencia en tu ecuación de carga del capacitor de modo que el conjutno de RC en la ecuación te produzca 804ns. En el caso de 8 MCP23S017 te diré que la resistencia sería de 1.2489 Kohms. Si ahora colocas 64 de estos la resitencia sería cada vez más pequeña, por lo que llegará un momento el que el pin del raspberry pi no podrá manejar la corriente de la resistencia por se tan pequeña. ASí, que la mejor solución sería usar la idea de remi04, pero yo la modificaría de manera que solo uses una resistencia de 1.2Kohms por cada targeta de 8 MCP23S017 y utilices un transistor para así bajar el nivel a 0 y generar el reset.
Espero que me haya explicado y que esta idea te sirva, si tienes preguntas no dudes en hacerlas. Por cierto lo de la carga y descarga de un capacitor te lo dejo de tarea para que sea una parte de tu aprendizaje.

Saludos,

elreypic.

Gracias, @elreypic, hice la pregunta sin especificar porque pensaba que esta duda se podría aplicar no sólo a este chip sino en el caso de tener varios. Ahora entiendo que puedan existir diferencias importantes entre tener un tipo de chip más sofisticado y otro como este. Pero la verdad es que su respuesta también me sirve para tenerlo en cuenta en otras ocasiones donde pueda requerir varios chips -qe era esa mi duda también-. No es lo mismo tener un chip o dos, que tener varias réplicas. Hasta ahora no me planteé necesitar un mismo reset para tantos encapsulados y por eso mi pregunta genérica. Si en vez de este chip fuese otro, también me preguntaría lo mismo. Todavía me falta experiencia y batallas en diseño electrónico y cada día aprendo algo nuevo. Por eso pregunto, por desconocimiento y falta de verme ante ciertos paradigmas, antes.

Pero sí, me refiero a este chip que comentas. Bueno, excepto que no es el i2c es el spi (MCP23S17).
Tomo nota de tus explicaciones, ni había pensado en esto que dices de las capacidades. Voy a meditar sobre ello.

Desconectado genisuvi

  • PIC16
  • ***
  • Mensajes: 104
Re:Rpull up en salida GPIO de la Rasp que será usada para RESET en varios chips.
« Respuesta #4 en: 12 de Agosto de 2020, 07:24:53 »

...

En el caso de 8 MCP23S017 te diré que la resistencia sería de 1.2489 Kohms. Si ahora colocas 64 de estos la resitencia sería cada vez más pequeña, por lo que llegará un momento el que el pin del raspberry pi no podrá manejar la corriente de la resistencia por se tan pequeña. ASí, que la mejor solución sería usar la idea de remi04, pero yo la modificaría de manera que solo uses una resistencia de 1.2Kohms por cada targeta de 8 MCP23S017 y utilices un transistor para así bajar el nivel a 0 y generar el reset.
Espero que me haya explicado y que esta idea te sirva, si tienes preguntas no dudes en hacerlas. Por cierto lo de la carga y descarga de un capacitor te lo dejo de tarea para que sea una parte de tu aprendizaje.
...


Claro, el tema es ese, que si el nº de chips fuera siempre el mismo, R sería una constante, pero al sumar chips la carga varía. Me preocupaba el consumo que pudieran suponer el ir agregando pcbs de estas y sus varias líneas de RESET chupando del mismo pin.


Saludos.

Desconectado genisuvi

  • PIC16
  • ***
  • Mensajes: 104
Re:Rpull up en salida GPIO de la Rasp que será usada para RESET en varios chips.
« Respuesta #5 en: 12 de Agosto de 2020, 08:38:59 »
Los pines de reset de los uC suelen ser muy delicados y sensibles a ruido por lo que es totalmente desaconsejable hacer una red de reset’s en paralelo y enviarlos todos a la gpio de la Raspi.  Y menos aún si van a mediar cables entre distintas tarjetas que comunican con los reset directamente.


  Lo ideal es que todos los uC estén lo más cerca posibles entre ellos. Cada reset con su pullup independiente y su condensador cerámico de desacople.

  Luego pondría un mosfet tipo 2n7002 que son smd, muy pequeños y baratos,  con drain al pin reset, source a Gnd y gate a gpio.

   Entonces todas las gates de todos los mosfet sí que los puedes unir, las polarizas a gnd con una resistencia de 10k y todo conectado al gpio.

  Incluso puedes agrupar varios reset que estén muy cerca entre ellos a un solo mosfet.

 

Me parece muy interesante esta solución. Voy a estudiarla un poco más. El reset viene de la Rasp que escribiría un '0' en el pin de reset del chip (un MCP expander como bien comentó @elReypic).

Gracias por este consejo que me da ideas para diseños con este tipo de tesitura.

Y una duda, cuando dices condensador de desacople en cada reset te refieres al condensador de desacoplo Vin-Gnd de cada chip?

Lo pregunto porque he visto algún ejemplo de resets con transitor en los que se usan otros C a parte, entre la señal de reset origen (la que va a la puerta del tansistor) y GND. Y la verdad tampoco he sabido ver a qué se debía ese C (uno de los ejemplos usa 0.22uF). Eso sí proviene de otro chip y el reset del drenador transistor se conecta a un uC (no es un xhip MCP expander ni lo otro una raspb).

Saludos y mil gracias.
« Última modificación: 12 de Agosto de 2020, 09:07:12 por genisuvi »

Desconectado remi04

  • PIC18
  • ****
  • Mensajes: 450
Re:Rpull up en salida GPIO de la Rasp que será usada para RESET en varios chips.
« Respuesta #6 en: 12 de Agosto de 2020, 11:15:33 »
Los pines de reset de los uC suelen ser muy delicados y sensibles a ruido por lo que es totalmente desaconsejable hacer una red de reset’s en paralelo y enviarlos todos a la gpio de la Raspi.  Y menos aún si van a mediar cables entre distintas tarjetas que comunican con los reset directamente.


  Lo ideal es que todos los uC estén lo más cerca posibles entre ellos. Cada reset con su pullup independiente y su condensador cerámico de desacople.

  Luego pondría un mosfet tipo 2n7002 que son smd, muy pequeños y baratos,  con drain al pin reset, source a Gnd y gate a gpio.

   Entonces todas las gates de todos los mosfet sí que los puedes unir, las polarizas a gnd con una resistencia de 10k y todo conectado al gpio.

  Incluso puedes agrupar varios reset que estén muy cerca entre ellos a un solo mosfet.

 

Me parece muy interesante esta solución. Voy a estudiarla un poco más. El reset viene de la Rasp que escribiría un '0' en el pin de reset del chip (un MCP expander como bien comentó @elReypic).

Gracias por este consejo que me da ideas para diseños con este tipo de tesitura.

Y una duda, cuando dices condensador de desacople en cada reset te refieres al condensador de desacoplo Vin-Gnd de cada chip?

Lo pregunto porque he visto algún ejemplo de resets con transitor en los que se usan otros C a parte, entre la señal de reset origen (la que va a la puerta del tansistor) y GND. Y la verdad tampoco he sabido ver a qué se debía ese C (uno de los ejemplos usa 0.22uF). Eso sí proviene de otro chip y el reset del drenador transistor se conecta a un uC (no es un xhip MCP expander ni lo otro una raspb).

Saludos y mil gracias.

  Más bien me refiero a un condensador entre el pin reset de cada expansor/chip y gnd de unos 100 nf para derivar el ruido.

     Lo del condensador de 0,22uf en la línea de las puertas es más que nada para suavizar el escalón, ya que si la señal tiene que pasar por conectores. Cables del tipo que sean (ribbon, flex,etc) y trazados de pistas por distintas tarjetas ello tendrá una capacitancia y también inductancia que puede generar picos y transitorios de suficiente intensidad como para dar quebraderos de cabeza y romper incluso las puertas de los mosfet.

  Seguramente la señal reset procedente del gpio que lo ordena salga mediante una resistencia, aunque sea de 100, 220 ohmios...    suavizar el escalón y hacerlo más “rampa” es su fin.