0
\$\begingroup\$

I'm after doing a device in which I'll use 4 AtMega328 chips; Since they'll all be mounted on the same PCB, and I need an ethernet connection for them, I was wondering if there's a way to share the ethernet signal from the WizNet W5100 shield to all 4 of them?

Note, I will only need to receive the signals, which is broadcasted anyway, and I have the code inside of each 328 which knows what data to read and what to ignore; So basically, the same data could be delivered to all of them, but I'd like to avoid the need of having a) stupidly 4 ethernet shields + ethernet switch inside or b) less stupidly (but still) another 328 to receive the data and forward the data via serial Tx/Rx chained through all other chips...?

I know they only have one pair of serial interface, but since I only need to read the data, I could use the Tx to link to another's Rx with no issues.

I was just wondering, if is there a way to split what's coming out of WizNet IC or not...?

I know it connects via ICSP header normally, but it's using digital pins, not the actual ICSP, if I'm not mistaken, right..? So, could it possibly work if I'd steal the signal off those pins and just parallerly link them to others...?

And to answer the plausible question asked: No, it cannot be done via one of the ICs directly and forwarded via serial. If this is the way, I'll have to add another 328 to take care of that. If I can avoid that, however, it would be awesome.

Thanks

\$\endgroup\$

1 Answer 1

1
\$\begingroup\$

The W5100 chip connects to the Arduino via an SPI interface. This is a bit-serial interface (but not async serial RS-232). SPI is a master-slave interface: the Arduino is master, and the W5100 is slave.

No, you can't share a single W5100 across multiple Arduinos. The best you can do is to add a fifth Arduino to act as the master to control the W5100, and then connect that Arduino (somehow) to the other four.

\$\endgroup\$
5
  • \$\begingroup\$ Ok. Thanks for clarification on this one. But that said, would it go fine and fast enough to share data via serial Tx/Rx pins between the 5 of them or not..? \$\endgroup\$
    – That Marc
    Commented Nov 28, 2014 at 12:34
  • \$\begingroup\$ @JustMarc You have not told us how fast you need it to go, i.e. what data rate per Arduino. \$\endgroup\$ Commented Nov 28, 2014 at 13:00
  • \$\begingroup\$ The packets received are always 530 bytes long, with frequency up to 40Hz. If the data rate could hold it at around 28Hz, it would be still fast enough though.. \$\endgroup\$
    – That Marc
    Commented Nov 28, 2014 at 13:12
  • 1
    \$\begingroup\$ @JustMarc So 530*40 = 21200 bytes per second, max. Each async serial byte is 10 bits (start/stop bits), so that's 212000 baud, assuming we can connect one Tx to all four Rx pins and hence send the data just once and all four Arduinos receive it together. I think the fastest Arduino baud rate is 115200 baud. OK, divide it back down, and we get 11520 bytes per sec., 21 packets per sec. Oh dear, too slow. Or can you set a higher baud rate than 11520? Check the ATmega328 data sheet. \$\endgroup\$ Commented Nov 28, 2014 at 13:21
  • \$\begingroup\$ Rigght. I was totally blind about sharing the serial connection (facepalm). In that case, it's not an issue! The AtMega328 with 250k goes for sure; This is the baud rate DMX protocol is using, so it's working for sure! :) Thanks for the info. \$\endgroup\$
    – That Marc
    Commented Nov 28, 2014 at 14:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.