SPI - SS Pin

Gast #2825671
Lesenswert?

Hallo zusammen,

ich arbeite mit dem ATMega128 und möchte den SS Pin des Controllers 
nicht als CS für den Slave nutzen.

Jetzt habe ich den SS Pin (PB0) als Ausgang definiert, wie es im 
Datenblatt geschrieben steht. Da steht auch, dass diese Einstellung 
keinen weiteren Einfluss hat.

Allerdings kann ich dann die anderen Pins von PORTB, die ich als 
Ausgänge konfiguriert habe, nicht mehr setzen.

Ist das normal??

MfG

Loomit
#2825697
Lesenswert?

Hallo,

in dieser Form sollten doch die anderen Ports auch funktionieren.

DDRB=(1 << LCD_RST) | (1 << LCD_A0) | (1 << SPI_MOSI) | (1 << SPI_SCK) | 
(1 << LCD_CS);

zum Beispiel:

PORTB &=~(1<<SPI_MISO); //low

PORTB = (1<<SPI_MISO); // high

oder

PORTB &=~(1<< 0); //low

PORTB = (1<< 0); // high
#2826039
Lesenswert?

Loomit schrieb:
> Allerdings kann ich dann die anderen Pins von PORTB, die ich als
> Ausgänge konfiguriert habe, nicht mehr setzen.
>
> Ist das normal??

Nein, das ist nicht normal. Da wird wohl ein Fehler in Deiner Software 
vorliegen.

G. G. schrieb:
> PORTB = (1<<SPI_MISO); // high

> PORTB = (1<< 0); // high

Nein, so geht das eben nicht. Auf diese Weise wird zwar PB0 auf "High", 
aber alle anderen auf "Low" gesetzt und genau das will man im 
Allgemeinen nicht. Deshalb:
1
PORTB |= ( 1<<PB0 )
Gast #2828261
Lesenswert?

Das hatte ich mir schon gedacht, dass das nicht normal ist.
Aber ich habe die Pins für die SPI-Schnittstelle folgendermaßen 
konfiguriert:
1
DDRB |= (1<<DD_MOSI) | (1<<DD_SCK) | (1<<DD_SS); // DD_SS = 0

Dann habe ich die Pins 4-7 noch als Ausgänge konfiguriert, da ich diese 
noch benötige.
1
DDRB |= (1<<DD4) | (1<<DD5) | (1<<DD6) | (1<<DD7);

Mit dieser Konfiguration kann ich diese Pins nicht setzen, sobald ich 
aber den Teil (1<<DD_SS) wo ich PB0 als Ausgang deklariere entferne, 
funktioniert es.

Ich kann mir das nicht erklären warum.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren