SPI: Master-Modus wird trotz korrektem SS deaktiviert!?

Gast #3814890
Lesenswert?

Hallo,

ich versuche seit gestern das RFID-Modul mit RC522 selbst anzusteuern, 
was momenten wegen einem simplen (?) SPI-Problem nicht funktioniert.

Ich habe jetzt nach einigem Testen folgenden Code zusammen bekommen, 
dabei sollte die LED an PORTD6 leuchten, was sie aber nicht tut:
1
#include <avr/io.h>
2

3

4
int main (void) {
5
  PORTB |= (1<<2); // cs/ss
6
  DDRB |= (1<<2); // cs/ss
7
  
8
  SPCR = (1<<SPE) | (1<MSTR); // spi enable, master
9
  
10
  DDRB |= (1<<5) | (1<<3); // sck, mosi
11
  DDRB &= ~(1<<4); // miso
12
  
13
  
14
  DDRD |= (1<<6);
15
  if (SPCR & (1<<MSTR))
16
    PORTD |= (1<<6);
17
  
18
  
19
  for(;;);
20
  return 0;
21
}

Eigentlich ganz simpel, aber was ist der Fehler? Warum wird das MSTR-Bit 
wieder gelöscht? Habe nur gelesen, dass dies automatisch passiert, wenn 
SS ein Input ist und ein entsprechendes Signal bekommt.

Danke schon mal
burgerohnealles

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