Hallo, ich habe das Problem dass ich per SPI Bus Daten von einem AtMega8 als Master an einen 5 Meter entfernten AtMega16 als Slave senden möchte. Es handelt sich dabei um ein Byte Daten welches zu unregelmässigen Zeitpunkten gesendet werden soll. Es sollen keine Daten vom Slave an den Master gesendet werden. So leider klappt die 5 Meter Verbindung per SPI überhaupt nicht, während Kabellängen bis 1 Meter funktionieren. Ich habe mir deshalb nach ein bisschen recherche folgende Lösung ausgedacht und umgesetzt: AtMega 8 an AM 26LS31 CN (RS422 Treiber): P.19 SCK an 2A P.16 SS an 1A P.17 MOSI an 3A P.18 MISO an 4A Dann AM 26LS32 CN (RS422 Empfänger) an AtMega 16: 1Y an SS P.5 2Y an SCK P.8 3Y an MOSI P.6 4Y an MISO P.7 Der Treiber ist mit Empfänger über normales Cat 5 Ethernet Twisted Pair Kabel verbunden: AM 26LS31 CN an AM 26LS32 CN 1Y an 1A 1Z an 1B 2Y an 2A 2Z an 2B 3Y an 3A 3Z an 3B 4Y an 4A 4Z an 4B G ist jeweils an Vcc (5V) und G(neg.) an GND. GND von den Schaltungen ist natürlich überall gleiches Potenzial, sprich verbunden. Treiber: http://goo. gl/1Y9Ot Empfänger: http://goo. gl/0Hh1m leider tut sich da bei der Datenübertragung garnichts, während Sie wie gesagt auf Strecken bis 1 Meter ohne die RS422 problemlos funktioniert (RS422 einfach überbrückt). Ich habe leider kein Oszi zum Nachmessen, hoffe jemand mit mehr Erfahrung kann mir vielleicht einen guten Tipp geben :) Achja bevor ichs vergesse der SS Kanal ist an beiden µC mit einem Widerstand "geerdet". Danke und schönen Gruß
Wwnn es doch nur ab und zu mal eine Byte sein soll, wäre es nicht einfacher eine andere Übertragungsart zu wählen ? z.B. 1 Wire oder normal seriell ? Klaus
Problem ist die Platinen sind bereits alle fertig erstellt, deshalb würde ich gern den Fehler finden und ausbessern, sofern das halt möglich ist.
Flo schrieb: > Moin moin! > > Enable Pins G und /G richtig beschaltet? > > Gruß, > Flo Habe darüber leider fast keine Infos gefunden und deshalb wie oben beschrieben bei Treiber und Empfänger G an Vcc (5V) /G an GND verschaltet
Hallo Hast du an die Abschlußwiderstände gedacht? Ich könnte mir denken, daß die Eingänge übersteuert werden und daher mit der Datenrate nicht mithalten können?! Gruß Rainer
Also im Datenblatt ist doch eine "Function Table" die den Einfluss der Enable Leitungen beschreibt. Direkt auf Seite 1. Demnach sollte das bei dir korrekt angeschlossen sein. Hatte das nur überlesen. Gruß, Flo
Hallo G und /G sind Oder-verknüpft. G an VCC und /G an GND ist richtig. Aber MISO und MOSI einer davon ist Ausgang und einer Eingang.
der-gt schrieb: > Treiber: http://goo. gl/1Y9Ot > Empfänger: http://goo. gl/0Hh1m Probier das doch nochmal. Was hast du dort versteckt?
ja miso als eingang ist richtig, da der slave allerdings keine daten senden soll, sollte ich die leitung doch eigentlich sogar komplett weg lassen können oder? Abschlusswiderstände habe ich keine eingesetzt da ich gelesen habe dass das bis 5 Meter wohl nicht benötigt wird?!
karadur hat Recht, Aber wenn es eh nur unidirektional werden soll, dann kann man doch MISO beim Sender und MOSI beim Empfänger weg lassen. Gruß, Flo
der-gt schrieb: > Abschlusswiderstände habe ich keine eingesetzt da ich gelesen habe dass > das bis 5 Meter wohl nicht benötigt wird?! Seit Guttenberg muss man dazu immer noch einen Quellennachweis bringen. Diese Aussage ist nämlich FALSCH. Schon bei wesentlich kürzeren Leitungslängen (20-30cm) macht z.B. duchaus mal eine Serienterminierung Sinn: Beitrag "Re: Signalproblem bei langem Kabel" Und bei einem differentiellen Bus würde ich immer eine Terminierung vorsehen...
Flo schrieb: > Aber wenn es eh nur unidirektional werden soll, dann kann man doch MISO > beim Sender und MOSI beim Empfänger weg lassen. Wofür dann noch einen SPI? Dann hat man ja gar keine Verbindung mehr zwischen Master und Slave... :-o Master Slave MOSI ---> MOSI MISO <--- MISO SCLK ---> SCLK SS ---> SS | MISO beim Sender und MOSI beim Empfänger weg lassen | V MOSI // MOSI MISO // MISO SCLK ---> SCLK SS ---> SS
Hallo "der gt" schreibt das er am Empfänger alle 4 angeschlossen hat. Dann arbeiten 2 Ausgänge gegen einander.
Lothar Miller schrieb: > Wofür dann noch einen SPI? > Dann hat man ja gar keine Verbindung mehr zwischen Master und Slave... > :-o > Master Slave > MOSI ---> MOSI > MISO <--- MISO > SCLK ---> SCLK > SS ---> SS Master Slave MOSI ----> MISO SCLK ----> SCLK SS ----> SS würd schon gehen. Ist dann halt SPI ohne Rückkanal. Obs sinn macht oder nicht liegt im Auge des Betrachters. Vielleicht ist nur noch SPI frei, alle anderen Pins anderweitig verwendet. Gruß, Flo
Hmm, lange nix mit SPI gemacht stelle ich gerade fest... Lothar hat natürlich recht, ich meinte bei beiden MISO weg lassen. Ich hoffe ihr habt trotzdem verstanden was ich meinte. Gruß, Flo
Flo schrieb: > Vielleicht ist > nur noch SPI frei, und selbst dann kann man einfach auf den freien Pin einen Soft-Uart legen. Ich versteh den Aufwand nicht wirklich. Klaus
Wenn ich das richtig sehe, verbindest Du bei der SPI Eingang mit Eingang und Ausgang mit Ausgang. Ist ja nicht grad günstig für eine Übertragung.
moin moin, SPI über RS422 macht schon Sinn, Bitsynchrone Übertragung, macht bei unterschiedlich schnell arbeitenden MC duchaus was her. Die Terminalwiderstände bei RS422 darf man nicht weglassen! Eigendlich braucht man ja nur MOSI und CLK zur Übertragung. Allerdings würde ich GND mitführen. MfG Pieter
Den GND mitzufuehen ist zwingend. Denn die 7V Gleichtakt sind schnell erschoepft.
danke erstmal für eure antworten, wie würde ich denn dann korrekt terminieren? habe einmal 5meter kabel und einmal 2meter kabel, (gleiche schaltung unterschiedliche distanzen). würde ich dann je einen widerstand zwischen hin und rückleiter von einem twister pair Paar, am RS422 Treiber anschließen? Und gibt es eine Formel um den Widerstandswert zu berechnen? (Bin bis jetzt leider über keine gestolpert, habe nur häufiger den Wert 120Ohm gesehen). Gruß
moin moin,
>>würde ich dann je einen widerstand zwischen hin und rückleiter von einem
twister pair Paar, am RS422 Treiber anschließen?
1x 120Ohm zwischen den Treiberausgängen und 1x 120Ohm zwischen den
Eingängen -> das Kabelpaar wird an beiden Enden mit 120 Ohm
abgeschlossen.
MfG
Pieter
@ Pieter (Gast) >1x 120Ohm zwischen den Treiberausgängen und 1x 120Ohm zwischen den >Eingängen -> das Kabelpaar wird an beiden Enden mit 120 Ohm >abgeschlossen. Nö, bei unidirektionalem RS422 reicht ein Terminierungswiderstand am Ende, das Ende am Treiber braucht keine Terminierung. MfG Falk
Hallo nochmal, habe jetzt eben zwischen jedes Twisted Pair Paar, am Empfänger einen 120Ohm Terminierungswiderstand angelötet. Funktioniert trotzdem nicht. Was mich stutzig macht ist, dass der AtMega8 auf dem SS Channel die ganze Zeit 5V ausgibt (mit Multimeter gemessen), die Spannung liegt am RS422 Treiber (Pin 1A) auch an, wird vom Empfänger aber nicht ausgegeben, dort messe ich nur eine Spannung von 0,7V - 1V. Ich versteh nicht warum der Empfänger das Signal nicht vernünftig zurück wandelt oder ob der Treiber das Signal erst garnicht vernünftig umwandelt.
>>vom Empfänger aber nicht ausgegeben, dort messe ich nur eine Spannung wie sind denn die Eingangspegel des Empfängers? >>von 0,7V - 1V. für mich etwas viel, was sagt eine AC-Messung?
Langsam wäre es an der Zeit mal einen gescheiten Schaltplan zu posten. Nicht den Schaltplan, den Du nachbauen wolltest, sondern den, den Du tatsächlich zusammengelötet hast. Aber genau kontrollieren! Sieht alles nach Leitungsdreher und Schluß zwischen Ausgängen aus. Raten Ende, her mit dem richtigen Schaltplan.
Ja slow da hast du wohl recht, werde den Schaltplan heute Abend posten, vorher schaffe ich es leider nicht. Danke aufjedenfall schonmal für euer Interesse, melde mich mit dem Plan und den AC Messungen zurück. Gruß
wird an der Konfiguration der SPI liegen ... zieh mal den Slave raus und schau nochmal die Spannung des SS nach ... nächster Schritt wär dann als Eingang deklarieren und Pullup aktivieren, was der dann macht.
Hey Leute, habe gerade begonnen den Schaltplan zu zeichnen (habe die Schaltung im Kopf designed und aufgelötet). Und was fällt mir auf? Ich Idiot habe Vcc an /G, und GND an G gelötet, also genau verkehrt. Jetzt klappts (komischerweise -.-) natürlich. Ich bedanke mich trotzdem für eure Hilfe und für die Zeit die Ihr durch meinen Fehler verloren habt kann ich mich nur entschuldigen. Schönen Abend noch und danke nochmal ;)
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.