Forum: Mikrocontroller und Digitale Elektronik SPI slave selection


von Harry (Gast)


Lesenswert?

hallo,

meine Frage ist : ich benutze ATmega32u4 und ich will das Chip mit 3 
Slaves verbinden aber auf das Datasheet ich finde nur ein Pin für Slave 
Select . Ich will wissen ob man andere Pin als SS benutzen kann oder 
nicht. wenn nicht was gibt's als Lösung.

Danke

von Herbert (Gast)


Lesenswert?

Hallo, der SS Pin ist nur dafür da wenn der AVR / Mikrocontroller als 
Slave fungiert. Wenn er aber Master ist, dann nimmt man einen normalen 
GPIO Pin für den / die CS Pin(s).

von Einer K. (Gast)


Lesenswert?

Harry schrieb:
> Ich will wissen ob man andere Pin als SS benutzen kann oder
> nicht

Als Master durchaus.
Im Slave Mode nicht.

Setze den SS trotz allem auf Ausgang, damit es dir nicht aus Versehen in 
den Slave Mode fällt.

von Mitlesa (Gast)


Lesenswert?

Herbert schrieb:
> Wenn er aber Master ist, dann nimmt man einen normalen
> GPIO Pin für den / die CS Pin(s).

Nö. Für diesen Fall kann der SS Pin ebenso als
"normaler GPIO Pin" dienen.

von Falk B. (falk)


Lesenswert?

@ Harry (Gast)


>meine Frage ist : ich benutze ATmega32u4 und ich will das Chip mit 3
>Slaves verbinden aber auf das Datasheet ich finde nur ein Pin für Slave
>Select . Ich will wissen ob man andere Pin als SS benutzen kann

Ja. Aber SS MUSS als Ausgang geschaltet werden. Siehe Datenblatt, ""SS 
pin functionality".

von Einer K. (Gast)


Lesenswert?

Falk B. schrieb:
> Aber SS MUSS als Ausgang geschaltet werden.
Reicht nicht auch ein Pullup?

Das Problem tritt meines Wissens nach nur mit INPUT in Verbindung mit 
LOW Pegel auf.

von Frickelfritze (Gast)


Angehängte Dateien:

Lesenswert?

Falk B. schrieb:
> Ja. Aber SS MUSS als Ausgang geschaltet werden. Siehe
> Datenblatt, "SS pin functionality".

Aus dem Text im Datenblatt des Mega32U4 kann ich diesen
Sachverhalt nicht erkennen:

-----------------------------------------------------
SS: Slave Port Select input. When the SPI is enabled
as a slave, this pin is configured as an input
regardless of the setting of DDB0. As a slave, the SPI
is activated when this pin is driven low. When the SPI
is enabled as a master, the data direction of this pin
is controlled by DDB0. When the pin is forced to be an
input, the pull-up can still be controlled by the
PORTB0 bit.
-----------------------------------------------------

Auch die Tabelle der SPI Pin Overrides sagt nichts dazu
dass der SS Pin ein Output im Master Mode sein müsste
(Siehe Bild).

von Luggi F. (luggi_f)


Lesenswert?

Frickelfritze schrieb:
>> Ja. Aber SS MUSS als Ausgang geschaltet werden. Siehe
>> Datenblatt, "SS pin functionality".
>
> Aus dem Text im Datenblatt des Mega32U4 kann ich diesen
> Sachverhalt nicht erkennen:

Seite 183, Master Mode:

"If SS is configured as an input, it must be held high to ensure Master 
SPI operation."

Hat mir die Tage hier wer erklärt ;-)

von Einer K. (Gast)


Lesenswert?

Luggi F. schrieb:
> "If SS is configured as an input, it must be held high to ensure Master
> SPI operation."

So, und nicht anders, sieht es aus!

von Frickelfritze (Gast)


Lesenswert?

Luggi F. schrieb:
> Hat mir die Tage hier wer erklärt ;-)

Du redest am Thema vorbei.

Es geht darum ob SS für SPI Master Mode als Ausgang geschaltet
sein muss, und das tut es bzw er nicht.

von Luggi F. (luggi_f)


Lesenswert?

Frickelfritze schrieb:
> Du redest am Thema vorbei.

Find ich nicht. Er muss zwar nicht als Ausgang geschalten sein, aber 
"High" gehalten werden. Das tut in der Praxis schon was zur Sache...

von H.Joachim S. (crazyhorse)


Lesenswert?

Man muss ihn nicht als Ausgang schalten, aber das ist das einzige was 
Sinn macht.
Kein Mensch braucht einen Eingang, der nur H sein darf. Und falls er 
doch mal L wird, funktioniert die SPI nicht mehr so wie geplant.
Ist SS Ausgang, ist er ganz normal nutzbar.
Also die einzig logische Betriebsart. Kostet doch nichts als Asgang zu 
schalten, selbst wenn er nicht gebraucht wird.

von Einer K. (Gast)


Lesenswert?

H.Joachim S. schrieb:
> Kostet doch nichts als Asgang zu
> schalten, selbst wenn er nicht gebraucht wird.
Ein sinnvoller Vorschlag, aber keine MUSS Bedingung, wie hier vorher 
behauptet wurde.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

H.Joachim S. schrieb:
> Also die einzig logische Betriebsart. Kostet doch nichts als Asgang zu
> schalten, selbst wenn er nicht gebraucht wird.

 Genau.
 3 Ausgänge braucht er auf jeden Fall, was spricht dagegen, SS als
 einen davon zu benutzen ?

von Frickelfritze (Gast)


Lesenswert?

U. F. schrieb:
> aber keine MUSS Bedingung, wie hier vorher behauptet wurde.

Ich ergänze: ... wie Falk Brunner im Rechthabemodus oft dominiert.

von c-hater (Gast)


Lesenswert?

H.Joachim S. schrieb:

> Man muss ihn nicht als Ausgang schalten, aber das ist das einzige was
> Sinn macht.
> Kein Mensch braucht einen Eingang, der nur H sein darf.

Für den Normalfall würde ich dir natürlich vollkommen Recht geben.

Aber im Fall akuter Pin-Knappheit kann es durchaus einen Sinn ergeben. 
Z.B. wenn es in einer Anwendung überhaupt keine GPIO-Ausgabepins geben 
muss (nur Ausgaben via overrides durch nicht remappable alternate port 
functions) und zusätzlich ein Fehlerstatus überwacht werden soll, bei 
dessen Eintreten klar ist, dass die SPI-Kommunikation in der 
Fehlersituation für die Anwendung sowieso keine Rolle (mehr) spielt. 
Dann kann man diesen Eingang durchaus sinnvoll benutzen.

Wie gesagt: das ist sicher nicht der Normalfall. Aber ich habe zumindest 
ein Projekt, in dem ich das tatsächlich benutze.

Also wie immer: man sollte sich vor unzulässigen Verallgemeinerungen 
hüten. Jedenfalls so lange man die Sache nicht wirklich vollständig bis 
zur letzten Konsequenz durchdacht hat.

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.