-
Geht wie folgt:
CMR Schreiben:
CS auf Low
SPI_Transmit(0b00000100);
SPI_Transmit(0b01000010); // Setzt SDIO auf output
CS auf High
unsigned char CMRdata;
CS auf Low
SPI_Transmit(0b10000100);
CMRdata=SPI_Transmit(0xff); // Liest CMR Data aus. 0xff ist nur damit der SPI Clock läuft; 0xff wird vom Chip ignoriert
CS auf High
SPI Transmit ist vielleicht etwas irreführend, da es gleichzeitig ein Receive ist.
SPI Transceive wäre treffender.
-
Habs jetzt mal genau so versucht, wie du beschrieben hast, hab sogar noch den Controller ausgetauscht (gegen ein Crumb64 - Modul), das Program auch noch in reinem C geschrieben, jedoch immer noch genau das gleiche Ergebnis. Ich habe ehrlich gesagt langsam das Gefühl, der Chip ist tatsächlich kaputt :(
(noch eine Frage am Rande: Spielt es eine Rolle, welche Daten man beim Empfangen in SPDR schreibt?)
-
Beim Empfangen schreibt man 0xff, da nur das vom Chip ignoriert wird.
An sich sollte der Arduino eine komplette SPI Bibliothek haben.
Wenn sich aber überhaupt nichts tut, werde ich auch etwas skeptisch.