Estaba pensando en hacer unos módulos para una placa de desarrollo que hice hace unos días que incluirá interfaces spi/i2c.
El problema es que no incluí resistencias pull-up en los pines MCU en la placa principal y estaba pensando en agregarlas en los módulos para hacerlos más "genéricos" para que todos los usuarios pudieran usarlos sin necesidad de agregar resistencias adicionales en la placa prototipo.
Pero luego me enfrenté al siguiente problema. Si agrego las resistencias pull-up en los módulos adicionales y conecto, por ejemplo, dos o más módulos al mismo bus, tendré esas resistencias en paralelo, por lo que la resistencia caerá y no cumplirá su función.
Pero si agrego las resistencias pull-up a la placa principal, tendré esos pines en la MCU siempre como activos bajos.
Entonces la pregunta principal es:
¿Cómo tener varios módulos conectados al mismo bus que tiene en cada uno de ellos las resistencias pull-up pero no ponerlos en paralelo cuando tiene más de un módulo? ¿Es eso posible?
¿O la mejor solución aquí es habilitar las resistencias pullup en la MCU y no incluirlas en los módulos?
Gracias.-
Asumiré que la longitud total de cada uno de sus autobuses es inferior a 1 metro, lo cual es típico para I 2 C y SPI simples. Además, la capacitancia del bus está dentro de las especificaciones.
Debe haber solo un (1) conjunto de resistencias pull-up. Como resultado, el mejor lugar para ellos es la placa del controlador principal. No pongas los pull-ups en los módulos.
Si desea tener pull-up en algunos casos y no tenerlos en otros casos.
editar: Francamente, creo que es un error que Sparkfun ponga pull-ups en los módulos esclavos I 2 C. Desafortunadamente, no todos los que compran módulos se dan cuenta de que un pull-up excesivo puede ser un problema. Sería mejor si las placas controladoras (en lugar de las placas periféricas esclavas) tuvieran pull-ups con puentes de soldadura.
Oh... Espera... Arduino no lleva los pull-ups (opcionales) (aunque tal vez debería). Entonces, llevemos pull-ups a todas partes. Experiencia inicial lista para usar más fácil. Pero agregue algunos módulos esclavos y el bus dejará de funcionar.
actualización (mayo de 2015):
actualización (diciembre de 2015):
Siguen apareciendo preguntas similares sobre la solución de problemas de I 2 C con varios módulos en los foros de mensajes. Intento de una respuesta general extendida.
Una opción es utilizar paquetes de resistencias SIL o DIL e instalarlos en los zócalos de cada módulo. Cuando construya un sistema con varios módulos, sáquelos de cada módulo excepto del último. Esto ahorra un poco de espacio en el tablero sobre los puentes.
Las variaciones de este tema pueden incluir interruptores FET para conectar o desconectar las resistencias, controlados por un solo puente o un pin de repuesto en el conector (de modo que si se enchufa otro módulo, las resistencias se desconectan automáticamente)
Alejandro Zarubkin