Hallo, Setze mich gerade mit SPI auseinander. Dazu habe ich mehrere Slave Module mit verschiedenen Funktionen Display, Eingangsmodul, ...(alle Atmega8) entworfen. Jeder Slave wird einzeln angesteuert (SS-Pin). Die Restlichen Signale werden zusammengeschalten. Wie in Wikipedia als "Sternschaltung" beschrieben. http://de.wikipedia.org/w/index.php?title=Datei:SPI_three_slaves.svg&filetimestamp=20070407163817 Wenn ich mehr als 1 Modul an den Master (Atmega8) anschließe wird mir die Spannung von MISO richtung GND verschoben. Signalpegel anstelle von 5V nur noch 2V. Wenn ich noch ein 3. Modul anschließe erkennt mein Master den High Pegel nicht mehr. Ich nehme an es liegt daran, dass bei mir bei jedem Slave der MISO Pin als Ausgang definiert ist. Wenn ich hier einen GND Pegel habe zieht er mir das Signal herunter. Wie wird so etwas normalerweise relaisiert? Muss ich meinen MISO Pin (am Slave) als Eingang definieren und nur bei SS auf Low als Ausgang? Oder was könnte sonst noch mein Problem sein?
>Wenn ich mehr als 1 Modul an den Master (Atmega8) anschließe wird mir >die Spannung von MISO richtung GND verschoben. Signalpegel anstelle von >5V nur noch 2V. Vermutlich sind zwei SS gleichzeitig aktiv.
Danke für die schnellen Antworten! Ich habe jetzt alle einzelnen Module nochmals kontrolliert (derzeit 3 Stk.) SS konnte ich ausschließen da ich versuchsweise nur 1 SS pin an den Master angeschlossen habe, der rest war auf VCC gelegt. MISO und MOSI konnte ich auch nicht vertauscht haben (jedes Modul ist Steckbar, die Steckerbelegung ist identisch) mein letzter Schritt war jetzt die überprüfung der Software, hier stellte sich heraus das ich vergessen hatte bei 2 Modulen das SPI zu initaialisieren (habe beim erstellöen der Grundsoftware vorerst ohne SPI gearbeitet) Software angepasst, und siehe da.... es funktioniert :) jetzt habe ich nur noch ein Problem mit Spannungsspitzen, kann ich diese irgendwie verringern? Bild: Gelb = CLK Blau = MISO (Messpunnkt direkt am Master) Leitungslänge ca. 0,5m
René P. schrieb: > jetzt habe ich nur noch ein Problem mit Spannungsspitzen, kann ich diese > irgendwie verringern? > Leitungslänge ca. 0,5m Auf dem Bild sieht das Ganze noch nicht sehr kritisch aus - falls richtig gemessen wurde. Lediglich der Überschwinger bei MISO könnte die Spec des Eingangs verletzen. An welcher Stelle wurden die Signale gemessen? Am Anfang oder am Ende der 50cm? Bei dieser Leitungslänge können mehrere Ursachen vorhanden sein: - es könnte ein Messfehler sein. Tastkopf mit normalem GND-Anschluss z.B. anstatt einer möglichst kurzen GND-Feder. - die GND-Verbindung ist generell zu schlecht über das Kabel. Mehrere Adern verwenden? - wie ist die Topologie? Mehrere Slaves sind vorhanden und eine sternförmige Übertragung gewählt worden? Bei so langen Leitung auf jeden Fall kritisch! Mindestens der Takt sollte z.B. über getrennte Buffer gehen, mit Serienterminierung. - auf MISO sieht man ein Übersprechen des Taktes, Abhilfen wären Serienterminierung des Taktes, Kabel mit Masse zwischen den Signalen - schlimmer könnte das nicht sichtbare Übersprechen von MISO (und den anderen Signalen) auf den Takt sein. Das fällt ja fast genau in die Taktflanke. Generell sind ja SPI-Slaves recht schnell und ich frage mich, ob die kritischen Stellen von deinem Skope überhaupt noch aufgelöst wird.
@ René P. (speedy909) >jetzt habe ich nur noch ein Problem mit Spannungsspitzen, kann ich diese >irgendwie verringern? Sind wahrscheinlich Messfehler. http://www.mikrocontroller.net/articles/Oszilloskop#Tastk.C3.B6pfe_richtig_benutzen Oder wilde Verkabelung. http://www.mikrocontroller.net/articles/Wellenwiderstand#Leitungsf.C3.BChrung_und_Layout Aber sooo wild ist das doch nicht, 1V Überschwingen ist nicht schön, aber hier nicht so tragisch.
@ HildeK (Gast) >Mindestens der Takt sollte z.B. über getrennte Buffer gehen, Ja. > mit Serienterminierung. NEIN! http://www.mikrocontroller.net/articles/Wellenwiderstand#Serienterminierung
Wenn dein Pegel zusammenbricht, kann das eigentlich nur heißen, dass die nicht aktiven Slaves nicht hochohmig sind. Verwendest du Pull-Up Widerstände und betreibst die MISO-Ausgänge als Open-Drain?
<Glaskugel> - Spannungsversorgung bricht ein - Komponenten nicht nach Datenblatt verschaltet - Abblockkondensatoren vergessen - Fehler in der Software </Glaskugel> Wie wäre es mit einem Schaltplan oder Foto vom Aufbau?
Plapperer schrieb: > 50cm fuer SPI ist eher schon grenzwertig. Mit passenden Treibern sehen Application Ingenieure von TI die Grenze eher bei 100m. http://www.ti.com/lit/an/slyt437/slyt437.pdf (S.16 ff) 50cm ist auch barfuß wirklich kein Thema. Deutlich darüber kann man über geschickte Plazierung der Pull-Up Widerstände nachdenken.
Super Tipps, Danke! Ich konnte die Spannungsspitzen auf ca. 0,5V verringern... Die Masseleitungen an meinen Tastköpfen war ca. 20cm lang (war mir bisher nicht klar welche auswirkungen das haben kann) Da die Schaltung teilweise auf einem Steckboard aufgebaut ist und die Verkabelung zu den Slaves 2x gesteckt ist, wird dies warscheinlich das Signal nochmals verschlechtern. Jeder Prozessor verfügt über einen Abblockkondensator ca. 5mm vom Prozessor entfernt. - Die Messungen wurden direkt an den Master Pins vorgenommen. - Ich habe keinerlei Terminierungswiderstände verwendet. - alle Slaves sind Sternförmig miteinander verbunden.
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.