Forum: Mikrocontroller und Digitale Elektronik Kommunikation mit AVR´s


von Jens (Gast)


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

von Andreas (Gast)


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

von Jens (Gast)


Lesenswert?

Hi Andreas,

was verstehst du unter SPI ?

MFG

Jens

von Andreas (Gast)


Lesenswert?

Serial Peripheral Interface, siehe Datenblatt.

MfG
Andreas

von Jens (Gast)


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 
??

von Steffen (Gast)


Lesenswert?

Im Datenblatt vom µC steht ein bischen was über das SPI.

von Roland Walter (Gast)


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

von Jens (Gast)


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

von Steffen (Gast)


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

von Siegfried (Gast)


Lesenswert?

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

Siegfried

von Erwin Stache (Gast)


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.

von Meiserl (Gast)


Lesenswert?

Wie wärs mit RS422

von Jens (Gast)


Lesenswert?

Kannst Du mir ein Schaltbeispiel oder Softwarebeispiel nennen.

Gruß
Jens

von Thomas (Gast)


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.

von Ingo B (Gast)


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!

von Siegfried (Gast)


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

von Dieter Brüggemann (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.