Laporan Akhir 2 Modul 3 percobaan 2


 



 

1.  Tujuan[Kembali]

    Tujuan Percobaan : 

a) Memahami prinsip kerja SPI

b) Mengaplikasikan protokol komunikasi  SPI

    Kondisi
            kondisi awal LED mati, lalu ketika button di tekan led hidup berkedip dengan delay 500ms
 

2. Hardware[Kembali]

Alat 

1.Power Supply

 

2.  Ground

 

Bahan
1.
Arduino

Arduino Uno Tutorial [Pinout]
2. Push Button


3. LED




4. Resistor

3. Rangkaian Simulasi[Kembali]

    Rangkaian Percobaan


    Prinsip Kerja

pada program master dan slave menggunakan librray spi.h, yang mana led pada pin 7 dan button pada pin72, pada master menggunakan bautrate sebesar 115200, dan dideklrasikan button sebagai input dan led sebagi ouput, lalu untuk program void loop apabila nilai button bernilai low maka x bernilai 1, dan bernilai 0 untuk lainya, dan apabila master recive berniali q maka led akan high, namun jika berniali lain maka led akan bernilai low lalu ditambahkan delay sebesar 500ms.

pada slave menggunakan bautrate sebesar 115200, dan dideklrasikan button sebagai input dan led sebagi ouput, lalu untuk program void loop apabila nilai button bernilai low maka x bernilai 1, dan bernilai 0 untuk lainya, dan apabila master recive berniali q maka led akan high, namun jika berniali lain maka led akan bernilai low lalu ditambahkan delay sebesar 500ms.

pada rangkaian, apabila push button ditekan maka arus dari suplay akan menuju ground, sehingga pada pin 7 akan bernilai low, sehingga master kan mengirimkan informasi melalui pin komunikasi spi, yang dihubungkan pada slave, sehingga slave mendeteksi bahwa nilai input adalah low , sehingga akan mengeluarkan output pada pin 7 dan led akan menyala berkedip dengan delay sebesar 500 ms. namun ketika push button dilepas maka pin 7 berlogika high dan master akan mengirimkan data pada slave, karna nilai logikanya adalah high maka pada program outputnya berupa logika low pada slave sehingga led tidak akan menyala.

    

4. Program[Kembali]

Listing Program
 
master
 
#include <SPI.h>
#define BUTTON 7
int buttonStatus;
int buttonVal;

void setup (){
  Serial.begin(115200);
  pinMode(BUTTON, INPUT);
  digitalWrite(SS, HIGH);
  SPI.begin();
  SPI.setClockDivider(SPI_CLOCK_DIV8);
}

void loop (){
  byte masterSend;
  buttonStatus = digitalRead(BUTTON);
  if (buttonStatus == HIGH){
    buttonVal = 1;
  }else{
    buttonVal = 0;
  }
  digitalWrite(SS, LOW);
  masterSend = buttonVal;
  SPI.transfer(masterSend);
  digitalWrite(SS, HIGH);
  delay(200);
}

slave

#include <SPI.h>
#define LED 7
volatile byte slaveReceived;
volatile boolean received;

void setup (){
  Serial.begin (115200);
  pinMode(LED, OUTPUT);
  pinMode(MISO, OUTPUT);
  SPCR |= _BV(SPE);
  slaveReceived = 0;
  received = false;
  SPI.attachInterrupt();
}

ISR (SPI_STC_vect)
{
  slaveReceived = SPDR;
  received = true;
}

void loop (){
  if(received){
    while(slaveReceived == 0){
      digitalWrite(LED, HIGH);
      delay(500);
      digitalWrite(LED, LOW);
      delay(500);
    }
  }
}
 

Flowchart






5. Analisa[Kembali]

Percobaan 2

1. apakah pin SS bisa diganti dengan pin digital lain?

Jawab :

Untuk pin select slave atau ss dapat diganti menggunakan pin digital  lainya, selain pin yang digunakan dalam komunikasi data yang merupakan pin komunikasi SPI, yang mana penggunaan pin digital dapat dipakai sesuai dengan yang ditentukan dalam program.

2. apa yang terjadi jika pin MISO di lepas?

Jawab :

Yang terjadi apabila pin MISO dilepaskan, Maka tidak akan ada input dari master device dan pada master device juga tidak akan bisa untuk menerima data shift register dari slave device. Sehingga komunikasi antara master device dan slave device terganggu.

3. Apakah pada komunikasi ini bisa menggunakan multi master?

Jawab :

Pada spi dapat menggunakan mode multi master. contohnya apabila kita menggunakan lebih dari satu master pada satu slave, dan apabila komunikasi tidak berjalan secara bersamaan maka hal ini mungkin untuk dilakukan. Hal ini karna pada spi memiliki alamat tersendiri sehingga pada tiap master atau pun device serta memiliki pin select slave (ss). Sehingga hal ini mungkin untuk dilakukan.    


6. Vidio[Kembali]  

 






Tidak ada komentar:

Posting Komentar