Wire oder Serial?

Moin,

ich entwickel momentan mit dem Arduino einen GPS gesteuerten Autopiloten, mit XBee Verbindung zu einem PC.
Wir werden nicht die original Arduinos verwenden, sonder selbst entwickelte Platinen mit einem 328 Chip und einem Arduino Duemilanove Bootloader. Da die Software teilweise sehr komplex ist, werden für verschiedene Funktionen, verschiedene Platinen entworfen. Das ganze wird in so ähnlich wie ein Bussystem zusammengeschlossen, damit man einfach neue Platinen einsetzten ergänzen, reparieren usw. kann.
So ungefähr wie das PCI Stecksystem im PC.
Es wird eine Hauptplatine geben, die mit allen anderen Platinen kommunizieren können muss. Ich dachte zuerst Wire wäre dafür am besten, aber der Slave kann dem Master nicht einfach Daten schicken ohne eine Request zu bekommen, und dann kann auch nur eine bestimmte anzahl von Bytes gesendet werden, die Kommunikation muss aber uneingeschränkt arbeiten können.
Mit der NewSoftSerial Lib kann ich mittlerweile bis zu 20 Pins verwenden, also 10 X Serielle Schnittstelle.
Mehr als 10 Platinen werden es sowieso nie werden und mit der Lib kann man auch uneingeschränkt Kommunizieren, ohne irgendwelche Reaquests usw.

Was findet ihr sinnvoller, Wire oder NewSoftSerial?

MfG
Philipp

Hallo Philipp Maricek
Hab auch keine 100% Idee was besser ist.
Ich hab irgendwie (gefühlsmäßigen, unfundierten) Verdacht, daß 10 serielle Schnittstellen ein ATmega nicht verkraftet.
Wie wärs Wire und als Request an den Master Daten beim Slave abzuholen ein Interuppt am Master?
Grüße Uwe

Wo steht denn, dass es nur einen Master geben darf?
Du kannst jeden Arduino als Master deklarieren, dann können sie sich alle munter Nachrichten zuschicken.
Du solltest nur Vorkehrungen treffen, dass nicht zwei gleichzeitig senden, das könnte zu Problemen führen.

@MaFu
Also eine Slave (Zielarduino) und 10 Master?
Grüße Uwe

Jeder Arduino ist gleichzeitig Master und Slave. Ein reiner Master bzw. reiner Slave ist nicht notwendig.

Und wie gibst Du eine Eindeutige I2C Adreasse? Definiest Du jeden Arduino mit Adresse 0 als Master und geichzeitig mit einer anderen Adresse als Slave?
Grüße Uwe

Moin
@uwefed
Warum sollten 10 Schnittstellen den Arduino umhauen?
Allerdings war das jetzt auch nur ein extremes Beispiel, ich denke mehr als 5-6 werden es nie werden.

Gibt es noch einen anderen Chip, für den es einen Arduino Bootloader gibt, der Leistungsfähiger ist? Und 10 Schnittstellen vertragen würde?
Kann auch SMD sein, solange es dafür eine Lötbare Fassung gibt.

MfG
Philipp

Einfach bei jedem Arduino I²C mit einer ID initialisieren, so als ob er als Slave fungieren soll. Der ATmega kann aber trotzdem gleichzeitig auch als Master arbeiten.