[Solucionado] Compartir puertos ethernet shield ENC28j60, tlc5940, nRF24L01

Buenas... hace un tiempo estuve haciendo algunas pruebas con todos estos componentes / shields.
Todos por separado, siguiendo algún que otro tutorial.
Ahora estoy tratando interconectar todos estos componentes a través de un solo arduino duemilanove.

Antes de comenzar esta integración armé una hoja de cálculo donde se pueden ver los puertos del arduino (analog dig) y los puertos que consumen cada uno de estos componentes.

Como verán estos tres componentes comparten puertos digitales del 10 al 13.

No tengo mucho conocimiento de electrónica pero... creo que lo que voy a tener que hacer es multiplexar el uso de los puertos compartidos si es que no puedo reconfigurarlos (modificando las librerías).

¿Es correcta mi apreciación?
¿Alguien tuvo que lidiar con este tipo de problemas?
¿Como puedo abordar este tipo de problemas?

A la espera de opiniones y recomendaciones,

Saludos

Market

Tienes el ejemplo de la shield ethernet oficial, que utiliza el SPI para el Wiznet5100 y el lector de tarjetas SD

Market:
Hey, gracias por tu rápida respuesta... hoy estuve viendo esa placa...
El tema es que por un lado estoy tratando de reducir costos.

¿Como ves el tema de compartir esos pines?

Market, responde por el foro que así nos enteramos todos :wink:

Pues eso te decía, que la shield de ethernet comparte esos pines (que corresponden a la comunicación por SPI) para comunicarse con el controlador de ethernet y la tarjeta SD, por lo que en las librerías debería aparecer como está hecho.

con el SPI puedes conectar muchos elementos, 3 de los pines son comunes a todos, luego hay un "enable" por cada elemento que quieres conectar. si utilizas un elemento solo necesitas 4 pines, si usas 3 elementos 6 pines, 5 elementos 8 pines..

un saludo

chiva:
Tienes el ejemplo de la shield ethernet oficial, que utiliza el SPI para el Wiznet5100 y el lector de tarjetas SD

Tenés razón... la ethernet debería estar solucionando este problema para sí misma.
http://arduino.cc/es/Main/ArduinoEthernetShield

Pero en un apartado dice:

Lo que interpreto que puede llegar a costarme compatibilidad con otros shields o componentes que usen esos puertos ¿no?

No es mala voluntad pero mirando el esquema
http://arduino.cc/es/uploads/Main/arduino-ethernet-shield-schematic.pdf
no logro entender como está resolviéndolo :blush: .... osea, ¿cómo está haciendo para que estos pines los comparta con la sd card?

SrDonGato:
con el SPI puedes conectar muchos elementos, 3 de los pines son comunes a todos, luego hay un "enable" por cada elemento que quieres conectar. si utilizas un elemento solo necesitas 4 pines, si usas 3 elementos 6 pines, 5 elementos 8 pines..

un saludo

SrDonGato, entiendo lo del SPI... así fue como me comuniqué con el TLC5940. Puede que no me haya explicado correctamente (pido disculpas si fue así) pero la idea es tenerlos a los 3 funcionando al mismo tiempo.

Ahora bien, ¿cómo sugieres manejar estos 3 dispositivos? ¿serviría multiplexar a través del pin "enable" de cada uno de los componentes / shields ?

Gracias !

Está en inglés, pero es muy bueno => Using Serial Peripheral Interface (SPI) Master and Slave with Atmel AVR Microcontroller | ermicroblog

el pin CS o SS (el 10) es distinto para cada uno de los elementos , el MOSI, MISO y SCK son comunes para todos.

si no recuerdo mal el lector de tarjetas del shield de ethernet era el 4 ( hablo de memoria)

Para ver los pines que usa cada shield tenemos http://shieldlist.org/

Que buena info!!... lo voy a leer tranquilo, está muy bien explicado.

SrDonGato:
el pin CS o SS (el 10) es distinto para cada uno de los elementos , el MOSI, MISO y SCK son comunes para todos.

si no recuerdo mal el lector de tarjetas del shield de ethernet era el 4 ( hablo de memoria)

Esclarecedor... ja, CS (chip select) debe ser único por componente... perfecto!, ahora leyendo un poco el artículo que me pasó Igor R + tu comentario empiezo a entender esto.

Creo que estás en lo correcto.. usa el D4

http://shieldlist.org/arduino/ethernet-v5

flico:
Para ver los pines que usa cada shield tenemos http://shieldlist.org/

Muchas gracias flico! no tenía este fabuloso link.... ahora sí XD

SOLUCIÓN:

Investigando un poquito mas.... la librería que estaba utilizando para controlar el componente TLC5940 me permitió modificar los pines que originalmente estaban asociados con la comunicación SPI.
La librería está en Google Code Archive - Long-term storage for Google Code Project Hosting.
Acá están los pasos para modificar el uso de los pines
http://blog.derouineau.fr/2011/07/tlc5940-library-ethernet-shield-arduino-mega/

Para lo que es manejos SPI el site que compartió Igor R me fue muy útil para comprender el funcionamiento de este tipo de comunicación.

Saludos,

Market