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
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
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 ??
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
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
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
Auf der Atmel-Homepage (AVR 8-Bit RISC, Application-Notes, o.ä.) gibt es Beispiel-Routinen für SPI-Master und SPI-Slave. Siegfried
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.
Kannst Du mir ein Schaltbeispiel oder Softwarebeispiel nennen. Gruß Jens
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.
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!
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.