PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : TWI oder SPI für Mikrokontroller Kommunikation?



matsch
19.03.2005, 14:44
Hallo

Ich muss nun erstmals für ein Projekt mehrere Mikrokontroller
miteinander vernetzen.
Und zwar soll es einen Master und zwei Slaves geben. Die Slaves sollen
eine Reglungsaufgabe übernehmen.
Der Master liefert dafür die nötigen Werte.
Ich habe nun die Frage welche Kommunikationsmethode sich besser eignet?
Welche Übertragungsart ist schnelle und besser zu realisieren. da die
Reglung (welche die Slaves übernehmen) möglichst ständig ablaufen soll,
soll es auch wenn möglich zu kurzen / keinen Unterbrechung beim Empfang
der Daten geben. Wie sieht das bei den beiden Methoden aus? Welche
Übertragungsweglängen kann man erreichen? Als Prozessoren sollen
ATmega128 Verwendung finden. (Ist aber auch noch möglich ganz andere
Modelle z.B. mit CAN zu nehmen)
Ich hoffe die Experten können mir Helfen, den rechten Pfad zu finden.


Danke Euch!
matscher

Florian
19.03.2005, 15:04
Wenn Du AVR's verwendest, dann ist SPI glaube ich am schnellsten, danach käme USART und danach I2C/TWI!

Gottfreak
19.03.2005, 15:14
Wie umfangreich sind denn die Daten, die an die Slaves gehen und wie regelmäßig müssen die 'rüber? Müssen die Slaves was zurücksenden?
Die einfachste Lösung heisst sicher UART(bei wenigen Byte kannst du auch einige 100 bis wenige 1000 Updates je Sekunde machen.).
Was für Kabellängen schweben dir so vor? Bei unter 50cm sollte es allgemein keine Probleme geben. Bei wesentlich längeren Strecken würde sich ein Pegelwandler(entweder höhere Spannung als TTL oder Differenz zwischen zwei Leitungen) anbieten. Ganz allgemein kann man die mögliche Kabellänge durch Senken der Datenrate erhöhen.

19.03.2005, 16:02
hallo

also die daten die an die slaves gehen sollen kommen von sensoren, also nicht viel zeugs. möchte blos nicht , das die slaves zu lange aus der reglung herausgebracht werden. bei der buslänge werden es so ca. 50 cm werden. man kann es ja im grunde auch mit twi machen. und sobald der slave daten bekommt wird ein interrupt ausgelöst indem nur ein flag gesetzt wird, das daten da sind. in einer reglungsfreien zeit kann man dann die daten verarbeiten. stimmt diese überlegung?

Florian
19.03.2005, 16:05
Ja, kannst Du so machen, allerdings kannst Du damit dann immer nur ein Byte empfangen!