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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.