www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Schnelle kommunikation zwischen mehr als AVRs ?


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

fuer einen Versuch moechte ich 3 AVRs ueber einen Bus miteinander 
kommunizieren lassen, jeder soll aber jedem Nachrichten schicken 
koennen. Mit I2C habe ich schon ein wenig Erfahrung, aber das laeuft ja 
maximal mit 400 kHz (richtig? also, 400kHz-overhead(?) /8 bits -> n 
byte/sec), andereseits kann ich die Zeit gut im uC selbst nutzen, da das 
versenden der bits ja in HW erledigt wird. Hat jemand schon Erfahungen 
mit Multimaster I2C Netzen (mehr als 2 Master)?
Oder gibt es eine bessere Methode? Den USART moechte ich eigentlich 
nicht dafuer verwenden, den nutze ich zzt fuers Debugging.
Ein eigenes Protokoll waere natuerlich auch moeglich, aber dann 
verzichte ich auf jegliche HW-Unterstuetzung und muss alles in SW 
machen, ob ich dann noch schneller bin als I2C? Hat jemand schon soetwas 
gemacht, unter welchem Begriff kann ich solche und aehnliche Themen 
finden?

Gruss,
Michael

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RS485? AVR mit 2 UARTs nehmen. Oder Debugging anderweitig herausführen.

Autor: Marc989 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

habe eine Kommunikation zwischen 5 Fujitsu-Mikrocontrollern und 2 
externen I2C Bauteilen mal aufgebaut. Letztendlich nur mit einem Master 
und 6 Slaves. Aber Mit Multimaster klappt das natürlich auch.
400k ist aber normalerweise schon recht viel. Was hast du denn für eine 
Übertragung vor (Daten/Zeit)?

Marc989

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Marc989,

sind die 400k bei I2C nicht die maximale Clockfrequenz? da kaem ich so 
auf 24 byte/sec. Da jeder einzelne AVR nicht viel mit den Daten arbeitet 
(jeder nur einen Teilschritt) wird viel uebrtragen und (relativ) wenig 
gerechnet.
Bekommt der AVR im I2C slave Modus fuer jede Zieladdresse einen 
Interrupt, oder nur wenn er explizit angesprochen wird?

Gruss,
Michael

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Durchsatzrate bei USART und RS485 dürfte allemal höher als bei I2C 
sein, da so gut wie nur Rohdaten übertragen werden, ohne die ganze 
Steuer- und Bestätigungskinematik.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi TravelRec,

bei der Kommunikation ueber RS485 muss ich mich dann aber selbst um die 
Adressierung kuemmern, also jeder Controller muss alle Daten empfangen 
und dann selbst entscheiden, ob sie fuer ihn bestimmt waren. Wenn sich 
an einem Bus also zwei Controller unterhalten, wird der Dritte immer 
wieder gestoert. Ist das so Richtig?
Bei I2C macht das doch (hoffentlich) die HW? Ich hab allerdings noch nie 
einen AVR als I2C Slave betrieben, weiss also nicht ob das so stimmt 
(ich such mal im Datenblatt)

Gruss,
Lothar

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beim USART kann man das 9te Bit für Mulitprozessorkommunikation 
benutzen. Das ist genau für diesen Fall entwickelt worden. Die 
Prozessoren, bei denen die Adresse bei gesetztem 9ten Bit nicht paßt, 
machen in Ruhe weiter ihre Arbeit und ignorieren den folgenden 
Datenstrom, bis wieder mal das 9te Bit gesetzt ist. Der jeweils 
angesprochende Prozessor empfängt dann die Daten. Die genaue Verwendung 
des 9ten Bits ist super im Datenblatt beschrieben.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi TravelRec,

Vielen Dank fuer den Hinweis! Das ist mir neu, ich werde mir das 
Datenblatt genauer ansehen.

Gruss,
Michael

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja dann - viel Spaß und schönes Wochenende.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> da kaem ich so auf 24 byte/sec.

Rechenfehler, Schreibfehler oder Systemfehler ?
Selbst wenn es 'nur' 24kB/s sind, viel schneller können die AVRs die 
Daten auch nicht bearbeiten, mal von trivialen Manipulationen abgesehen. 
Aber dafür bräuchte man nicht mehrere AVRs. (Systemfehler ?)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.