Forum: Mikrocontroller und Digitale Elektronik MISO Spannung zu klein


von René P. (speedy909)


Lesenswert?

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?

von holger (Gast)


Lesenswert?

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

von Basti M. (counterfeiter)


Lesenswert?

René P. schrieb:
> Oder was könnte sonst noch mein Problem sein?

MISO und MOSI vertauscht?!

von René P. (speedy909)


Angehängte Dateien:

Lesenswert?

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

von HildeK (Gast)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@  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.

von Falk B. (falk)


Lesenswert?

@  HildeK (Gast)

>Mindestens der Takt sollte z.B. über getrennte Buffer gehen,

Ja.

> mit  Serienterminierung.

NEIN!

http://www.mikrocontroller.net/articles/Wellenwiderstand#Serienterminierung

von Michael (Gast)


Lesenswert?

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?

von Pete K. (pete77)


Lesenswert?

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

von Plapperer (Gast)


Lesenswert?

50cm fuer SPI ist eher schon grenzwertig.

von Michael (Gast)


Lesenswert?

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.

von René P. (speedy909)


Lesenswert?

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
Noch kein Account? Hier anmelden.