mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Kommunikation mit AVR´s


Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

kann man eigentlich mit den TX/RX Anschlüssen direkt an den CPU´s, 
untereinander mit den CPU´s kommunizieren ??.

Ich denke da an einen Strang von ca. 4 CPU´s, wo ich Vaiablen oder 
sonstige Werte austauschen möchte.

Wenn Ja, eine kurze Beschreibung, oder ein Link wäre nett

Gruß

Jens

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

mit TX/RX wird das nichts, da du so nur 2 AVRs verbinden kannst. Mit SPI 
kannst du soviele aneinander hängen wie du willst, allerdings wird das 
mit dem "untereinander kommunizieren" nicht ganz so einfach, da du einen 
Master brauchst der die Daten von den Slaves liest / sie an diese 
weiterleitet.

MfG
Andreas

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Andreas,

was verstehst du unter SPI ?

MFG

Jens

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Serial Peripheral Interface, siehe Datenblatt.

MfG
Andreas

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
H i Andreas,

In welchem Datenblatt meinst Du ?

Vom Mikrokontroller selber oder ist das ein eigenes IC.


MFG

Jens


PS: gibt es die ganzen Datenblätter vielleicht irgendwo auch auf Deutsch 
??

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Datenblatt vom µC steht ein bischen was über das SPI.

Autor: Roland Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicht alle AVRs haben ein SPI-Interface.
Genauer: ISP haben schon alle (für serielles Programmieren), aber nur 
einige AVRs haben die "SPI-Vollversion" - z.B. der AT90S4433.
SPI heißt "Serial Peripheral Interface". Das ist ein serielles 
Bus-System, bei dem Du bequem und schnell einen Datenaustausch zwischen 
etlichen AVRs machen kannst.
Schau Dir also einfach mal die Doku zum AT90S4433 an.
Tschüß von Roland

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Roland,

OK, Ich hab mir das Datenblatt angeschaut, aber so großzügig beschrieben
ist das leider auch nicht.

zB: wie realisiere ich das, wenn ich angenommen eine Variable "int xx"
laufend an die Master CPU senden möchte ?

Und von den Anschlüssen ist auch nicht sehr viel beschrieben, oder weis 
jemand einen Link wo das genauer beschrieben ist ???


mfg

Jens

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also die Hardware SPI hab ich auch nicht zum laufen gebracht, aber 
egal...

Das ganze lässt sich auch per Software realisieren.
Vom Verständniss her solltest du wissen, das der Master sagt, welcher 
Slave wann senden kann!

Und die Übertragung ist recht einfach:
-Master wählt Slave aus (chipselect)
-Entweder sendet Master jetzt einen speziellen Befehl an den Slave 
(Bitfolge) oder Slave hat nur eine Funktion und sende sein Ergebniss
-Master deselektiert den Slave

Autor: Siegfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf der Atmel-Homepage (AVR 8-Bit RISC, Application-Notes, o.ä.) gibt es 
Beispiel-Routinen für SPI-Master und SPI-Slave.

Siegfried

Autor: Erwin Stache (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als ich noch nichts von SPI wußte, habe ich mal eine Schleife gebaut 
TxD1 zu RxD2, TxD2 zu RxD3 und TxD3 wieder zu RxD1. Ähnlich wie auch bei 
der MIDI-Übertragung hat das das erste zu übertragende Byte die Aufgabe, 
mitzuteilen für welchen AVR die Nachricht gilt. Das folgende Byte ist 
dann die eigentliche Information. Merkt der erste AVR, daß die Info 
nicht für ihn bestimmt ist wird sie sofort wieder versendet, an den 
nächsten. Die Synchronisation bekommt man hin, indem man auch so eine 
Art Master einrichtet, der immer festlegt, wann gesendet wird, ist ein 
bißchen aufwendig - für MIDI, wo es meistens nur in eine Richtung geht, 
ganz gut und ja auch gar nicht anders als über den UART zu lösen.

Autor: Meiserl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wärs mit RS422

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst Du mir ein Schaltbeispiel oder Softwarebeispiel nennen.

Gruß
Jens

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

so stelle ich mir das auch vor erst mal ne 2Bit Info(4 Atmels) für wenn 
die Info ist danach ne kurze Pause (20 Takte) und dann die Nachricht. 
Allerdings den Ausgang(Tx) des 1ten Atmels mit den 3 anderen Atmels 
(EingängeRx) verbinden dadurch braucht nur der erste Atmel etwas 
verschicken und die anderer brauchen es nicht weiterleiten falls es 
nicht für sie war, weil die anderen es genauso empfangen haben. Die 
anderen bekommen halt ein Prog das sie nur bei den entsprechenden 2 Bits 
was mit diesen Daten anfangen oder nicht.

Autor: Ingo B (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

man kann auch eine 9Bit asynchrone Übertragung verwenden:

Der Kommunikations-Master schickt die Zieladresse des Proz. mit 9.Bit =1 
und dann die Daten mit 9.Bit=0.
Der Abschluß bildet eine 0x00 mit 9.Bit=1.

Die Zielproz. warten auf ein gesetztes 9.Bit und überprüfen die Adresse 
mit der eigenen. Stimmt die Adresse, wird der Datensatz bis zur 0x00 
empfangen, andern falls wird bis zur 0x00 'weggehört'.

Das System stammt von den 8051'ern. Dort heißt das Muilti-Proz.-Modus 
mit WakeUpBit. Ist bei den Proz. allerdings eleganter, da dort nur ein 
Interrupt erzeugt wird, wenn auch 9.Bit=1.

Bis dann,
                 Ingo!

Autor: Siegfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

So ähnlich wie Erwin das beschrieben hat (Schleife von TxD1 zu RxD2, 
TxD2 zu RxD3 und TxD3 wieder zu RxD1) usw. hatte ich das auch vor. 
Allerdings wollte ich anstelle des ersten ATMELs einen PC hinstellen, 
der auch den Master spielen soll.

Unabhängig davon, ob ein PC oder ATMEL zur Steuerung in dieses System 
eingebaut wird, hat eine Übertragung per serieller Schnittstelle noch 
den Vorteil, das man zu Testzwecken einen PC an diesem 
"Übertragungs-Ring" ankoppeln kann. Damit sieht man den gesammten 
Datenverkehr zwischen den ATMELS, wenn auf dem PC ein Terminal-Programm 
läuft. Das ist zur Fehlersuche, oder Langzeitdianose sehr hilfreich.

An welche Übertragungsrate habt Ihr denn bisher eingestellt?

Siegfried

Autor: Dieter Brüggemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schaut doch mal rein bei http://www.hth.com/snap/

S.N.A.P ist leicht in AVR zu implementieren und sehr offen für alle 
Anwendugen. Könnte eine Lösung für euch sein.

MFG
Dieter

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.