/* SPI_Shift_LSB.txt Implementarea transferului utilizānd interfata SPI MOSI, LSB First, CPOL=1, 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 = HIGH digitalWrite(PIN_SCE, HIGH); digitalWrite(PIN_SCLK, HIGH } 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 & 0x01) { //Testarea bitului cel mai putin semnificativ digitalWrite(PIN_SDIN, HIGH); //Daca bitul LSB = 1 } digitalWrite(PIN_SCLK, LOW); //Puls HIGH->LOW->HIGH digitalWrite(PIN_SCLK, HIGH); // CPOL = 1, CPHA=1,0 d >>= 1; //Deplasarea spre DREAPTA cu o pozitie } //Se repeta operatia pāna la trimiterea celor 8 biti digitalWrite(PIN_SCE, HIGH); //Dezactiveaza Slave } //end Shift_out