/* SPI_Shift_MSB.txt Implementarea transferului utilizānd interfata SPI MOSI, MSB First, CPOL=0, CPHA=0 + CPHA=1 */ #define PIN_SCE 7 //Master pin 7 -> Slave SCE #define PIN_SDIN 4 //Master pin 4 -> Slave SDIN (Slave Data In) #define PIN_SCLK 3 //Master pin 3 -> Slave SCLK (Signal Clock) void setup { //Toti pinii configurati ca DIGITAL OUT pinMode(PIN_SCE, OUTPUT); pinMode(PIN_SDIN, OUTPUT); pinMode(PIN_SCLK, OUTPUT); //Pinul SCE = HIGH, pinul SCLK = LOW digitalWrite(PIN_SCE, HIGH); digitalWrite(PIN_SCLK, LOW); } void Shift_out(byte d) { digitalWrite(PIN_SCE, LOW); //Activeaza Slave byte i; for(i = 0; i< 8; i++) { //Bucla "for" x8 digitalWrite(PIN_SDIN, LOW); //MOSI -> LOW //Ordinea bitilor MSBit -> LSBit if(d & 0x80) { //Mascarea bitului cel mai semnificativ digitalWrite(PIN_SDIN, HIGH); //Daca bitul = 1 } digitalWrite(PIN_SCLK, HIGH); //Puls LOW->HIGH->LOW digitalWrite(PIN_SCLK, LOW); // CPOL = 0, CPHA=0 d <<= 1; //Deplasarea spre STANGA cu o pozitie } //Se repeta operatia pāna la trimiterea celor 8 biti digitalWrite(PIN_SCE, HIGH); //Dezactiveaza Slave } //end Shift_out