Arduino - Ethernet W5100-Signal an mehrere Arduinos empfangen

Ich mache gerade ein Gerät, in dem ich 4 AtMega328-Chips verwenden werde; Da sie alle auf derselben Platine montiert werden und ich eine Ethernet-Verbindung für sie benötige, habe ich mich gefragt, ob es eine Möglichkeit gibt, das Ethernet-Signal vom WizNet W5100-Schild an alle 4 weiterzugeben?

Beachten Sie, dass ich nur die Signale empfangen muss, die sowieso gesendet werden, und ich habe den Code in jedem 328, der weiß, welche Daten zu lesen und zu ignorieren sind. Also im Grunde könnten die gleichen Daten an alle geliefert werden, aber ich möchte vermeiden, dass a) dummerweise 4 Ethernet-Schilde + Ethernet-Schalter drin sind oder b) weniger dumm (aber immer noch) weitere 328, um die Daten zu empfangen und die Daten über serielles Tx / Rx weiterleiten, das durch alle anderen Chips verkettet ist ...?

Ich weiß, dass sie nur ein Paar serieller Schnittstellen haben, aber da ich nur die Daten lesen muss, könnte ich den Tx verwenden, um ohne Probleme eine Verbindung zum Rx eines anderen herzustellen.

Ich habe mich nur gefragt, ob es eine Möglichkeit gibt, das, was aus WizNet IC kommt, aufzuteilen oder nicht ...?

Ich weiß, dass es sich normalerweise über den ICSP-Header verbindet, aber es verwendet digitale Pins, nicht das eigentliche ICSP, wenn ich mich nicht irre, oder? Könnte es also möglicherweise funktionieren, wenn ich das Signal von diesen Pins stehlen und sie einfach parallel mit anderen verbinden würde ...?

Und um die gestellte plausible Frage zu beantworten: Nein, es geht nicht über einen der ICs direkt und seriell weitergeleitet. Wenn dies der Fall ist, muss ich eine weitere 328 hinzufügen, um das zu erledigen. Wenn ich das aber vermeiden könnte, wäre es toll.

Danke

Antworten (1)

Der W5100-Chip wird über eine SPI-Schnittstelle mit dem Arduino verbunden. Dies ist eine bitserielle Schnittstelle (aber keine asynchrone serielle RS-232). SPI ist eine Master-Slave-Schnittstelle: Der Arduino ist Master und der W5100 ist Slave.

Nein, Sie können einen einzelnen W5100 nicht für mehrere Arduinos freigeben. Das Beste, was Sie tun können, ist, einen fünften Arduino hinzuzufügen, der als Master zur Steuerung des W5100 fungiert, und diesen Arduino dann (irgendwie) mit den anderen vier zu verbinden.

OK. Danke für die Klarstellung zu diesem. Aber würde es gut und schnell genug gehen, um Daten über serielle Tx / Rx-Pins zwischen den 5 zu teilen oder nicht ...?
@JustMarc Sie haben uns nicht gesagt, wie schnell Sie es brauchen, dh welche Datenrate pro Arduino.
Die empfangenen Pakete sind immer 530 Bytes lang, mit einer Frequenz von bis zu 40 Hz. Wenn die Datenrate sie bei etwa 28 Hz halten könnte, wäre sie jedoch immer noch schnell genug.
@JustMarc Also 530*40 = 21200 Bytes pro Sekunde, max. Jedes asynchrone serielle Byte hat 10 Bits (Start-/Stoppbits), also 212000 Baud, vorausgesetzt, wir können einen Tx mit allen vier Rx-Pins verbinden und somit die Daten nur einmal senden und alle vier Arduinos empfangen sie zusammen. Ich denke, die schnellste Arduino-Baudrate beträgt 115200 Baud. OK, teilen Sie es wieder herunter, und wir erhalten 11520 Bytes pro Sekunde, 21 Pakete pro Sekunde. Oh je, zu langsam. Oder kann man eine höhere Baudrate als 11520 einstellen? Überprüfen Sie das ATmega328-Datenblatt.
Richtig. Ich war völlig blind, die serielle Verbindung (Facepalm) zu teilen. In diesem Fall ist es kein Problem! Der AtMega328 mit 250k geht auf jeden Fall; Dies ist die Baudrate, die das DMX-Protokoll verwendet, also funktioniert es mit Sicherheit! :) Danke für die Info.