Forum: Mikrocontroller und Digitale Elektronik Atmega8, Hardware-SPI und Taster an PB2 mit Bascom


von Klaus W. (klausw1)


Angehängte Dateien:

Lesenswert?

Hallo,

ich versuche Hardware-SPI zu verwenden und dabei einen Taster an PB2 als 
Eingang zu nutzen. Normalerweise ist PB2 ja SS bei SPI. Ich brauche ihn 
aber nicht. Deswegen habe ich schon NOSS=1 versucht. Leider bleibt der 
Controller trotzdem immer beim Senden hängen, wenn der Taster gedrückt 
ist (PB2 auf GND). Nutze ich Software-SPI funktioniert es einwandfrei.
Ich würde aber gerne Hardware-SPI nutzen. Hat jemand eine Idee, wie ich 
das hin bekomme?

Grüße,
Klaus

von holger (Gast)


Lesenswert?

>Hat jemand eine Idee, wie ich das hin bekomme?

Das wirst du nie hinbekommen. SS muss bei SPI Master
ein Ausgang sein. Egal wofür du den verwendest.

von Klaus W. (klausw1)


Lesenswert?

Aber wofür ist dann der Parameter NOSS gut? Wenn ich das in der 
Beschreibung so ansehe, sollte der Parameter doch genau dafür sein.

von holger (Gast)


Lesenswert?

>Aber wofür ist dann der Parameter NOSS gut?

Das weiss ich nicht. BASCOM kenne ich nicht.
Fakt ist das SS als Eingang nicht verwendbar ist
wenn man einen SPI Master betreiben möchte.
Das steht auch so im Datenblatt vom AVR.

von MWS (Gast)


Lesenswert?

Klaus W. schrieb:
> Aber wofür ist dann der Parameter NOSS gut?

Steht in der Hilfe, in Master-Mode wird bei NOSS = 1 der SS-Pin von der 
SPI-Routine nicht angesteuert, d.h. Der SS-Pin kann als Ausgang beliebig 
für andere Zwecke verwendet werden.

Klaus W. schrieb:
> Hat jemand eine Idee, wie ich das hin bekomme?

Setze NOSS = 1 und ersetze mit dem SS-Pin als Ausgang einen anderen 
Ausgangspin. Den gesparten Pin kannst Du dann als Eingang verwenden.

von Klaus W. (klausw1)


Lesenswert?

MWS schrieb:
> Steht in der Hilfe, in Master-Mode wird bei NOSS = 1 der SS-Pin von der
> SPI-Routine nicht angesteuert, d.h. Der SS-Pin kann als Ausgang beliebig
> für andere Zwecke verwendet werden.

Wie ich im ersten Post schon schrieb, das war auch meine Idee. 
Funktioniert leider nicht. Es macht gar keinen Unterschied, ob ich 
NOSS=1, NOSS=0 oder gar nix schreibe.

Wird dann wohl nicht gehen. Aber dann mal eine Vertändnisfrage:
Welchen Sinn macht es, dass beim Master ein Pin als SS zwingend 
festgelegt ist? Wenn ich nur einen Slave habe, ist eh klar, welcher 
gemeint ist. Wenn ich mehrere Slaves habe, brauche ich stattdessen 
mehrere SS-Pins.
Beim Slave sehe ich da ja noch einen Sinn. Der kann nur als Ziel 
definiert sein, oder eben nicht. Es würde also beim Slave mehr Sinn 
machen, als beim Master. Stattdessen ist, wenn ich das richtig 
verstanden habe, beim Slave dieser Zwang nicht mal vorhanden.

von Justus S. (jussa)


Lesenswert?

" If the SS pin is driven low by peripheral circuitry when the SPI is 
configured as a Master with the SS pin defined as an input, the SPI 
system interprets this as another Master selecting the SPI as a Slave 
and starting to send data to it."

von Klaus W. (klausw1)


Lesenswert?

Justus Skorps schrieb:
> " If the SS pin is driven low by peripheral circuitry when the SPI is
> configured as a Master with the SS pin defined as an input, the SPI
> system interprets this as another Master selecting the SPI as a Slave
> and starting to send data to it."

OK danke, damit macht das ganze wieder einen Sinn. Nur blöd, dass man 
das beim Hardware-SPI nicht einfach abschalten kann um einen Pin zu 
sparen, wenn es eh keinen anderen Master gibt. Da bleibt mir wohl nix 
anderes übrig, als Software-SPI zu nehmen.

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.