Forum: Mikrocontroller und Digitale Elektronik Software SPI Probleme mit der Portzuweisung


von Johannes (menschenskind)


Lesenswert?

Hallo

Ich habe ne SD-Karte und die Pins für nen ATMega32 wie folgt deklariert:
1
#define SD_DDR        DDRD
2
#define SD_PORT        PORTD
3
#define SD_PIN        PIND
4
#define SD_CHIP_SELECT     PD3
5
#define SD_SCLK         PD4
6
#define SD_DATA_IN       PD5
7
#define SD_DATA_OUT     PD6

Dieses CodeSchnipsel hier habe ich aus dem Forum:
1
void SPI_OUT(unsigned char output) {
2
  unsigned char i;
3
4
  for (i = 8; i; i--) {
5
  SCK = 0;
6
  MOSI = output & 0x01;
7
  output = output >> 1;
8
  SCK = 1;
9
  }
10
}


Bei meinem Code habe ich nun einfach SCK und MOSI durch SD_SCLK und 
SD_DATA_IN ersetzt.

Aber der Compiler bringt mir die Fehlermeldung:
 error: lvalue required as left operand of assignment

Wo liegt mein Fehler?

Vielen Dank für die Hilfe

von (prx) A. K. (prx)


Lesenswert?

Der Schnipsel ist nicht Standard-C. Siehe Bitmanipulation.

von Johannes (menschenskind)


Lesenswert?

OK, aber warum erfolgt dann die Zuweisung  bei diesen beiden Registern 
hier mit einfachem '='?
1
   DDRA = 0xff;    
2
 
3
   PORTA = 0x03;

Denn im Grunde genommen setzt man da ja auch Bits.

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.