Laporan Akhir 2( Percobaan 2)

Gambar 3. Arduino uno
#include <SPI.h> //Deklarasi library SPI
#define button 2
void setup (void) {
  pinMode(button, INPUT_PULLUP);
  Serial.begin(115200 ); //Set baud rate 115200
  digitalWrite(SS, HIGH);
  // disable Slave Select
  SPI.begin ();
  SPI.setClockDivider(SPI_CLOCK_DIV8); //divide the clock by 8
}
void loop (void) {
  char c;
  int nilai=digitalRead(button);
  if(nilai==0){
   digitalWrite(SS, LOW); //enable Slave Select
  // send test string
  for (const char * p = "Hello, world!\r" ; c = *p; p++)
  {
    SPI.transfer (c);
    Serial.print(c);
  }
  digitalWrite(SS, HIGH); // disable Slave Select
  delay(2000);
  }
}

Program Slave
#include <SPI.h>
#define led 2

char buff [50];
volatile byte indx;
volatile boolean process;

void setup (void) {
  Serial.begin (115200);
  pinMode(led, OUTPUT); // have to send on master in so it set as output
  SPCR |= _BV(SPE); // turn on SPI in slave mode
  indx = 0; // buffer empty
  process = false;
  SPI.attachInterrupt(); // turn on interrupt
}

ISR (SPI_STC_vect) // SPI interrupt routine
{
  byte c = SPDR; // read byte from SPI Data Register
  if (indx < sizeof buff) {
    buff [indx++] = c; // save data in the next index in the array buff
    if (c == '\r') //check for the end of the word
      process = true;
  }
}
void loop (void) {
  if (process) {
    digitalWrite(led, HIGH);
    process = false; //reset the process
    Serial.println (buff); //print the array on serial monitor
    indx = 0; //reset button to zero
    delay(1000);
  }
  else
  {
    digitalWrite(led, LOW);
  }
}



 
 Prinsip Kerja
     Rangkaian di atas merupakan rangkaian dengan komunikasi SPI. Rangkaian terdiri dari 2 buah arduino yang berfungsi sebagai master dan slave. Rangkaian komunikasi SPI ini mengirim data secara paralel dari satu arduino dengan arduino yang lain sehingga komunikasi yang dilakukan dapat dua arah. Pada rangkaian ini terdapat 4 buah pin pada arduino yaitu MISO, MOSI, SCLK, dan SS. MISO meruapakan kependekan dari Master Input Slave Output sedangkan MOSI kebaliikannya. SCLK merupakan clock, jika clok mengkonfigurasi master maka sclk sebagai output begitu juga sebaliknya. berikutnya terdapat  pin SS yang berfungsi untuk memilih slave. Pada rangkaian saat button ditekan maka pin 2 bernilai 0 yang kemudian di olah oleh arduino master lalu dikirim ke arduino slave kemudian pin 2 mengeluarkan output high sehingga LED menyala. 
 ANALISA PERCOBAAN 2 [SPI[:

1. Apakah kita dapat menggunakan lebih dari 1 master? Jelaskan alasannya

Jawab:

Tidak, SPI hanya dapat menggunakan 1 master saja. Hal tersebut dikarenakan Master pada SPI sebagai pengontrol komunikasi serial sinkron pada SPI dimana dapat mengirim atau menerima data. Tetapi SPI ini dapat memiliki lebih dari 1 Slave dimana terdapat Slave Select (SS) untuk memilih (mengontrol) Slave mana yang dipilih oleh Master. Jika terdapat lebih dari 1 master yang terhubung ke beberapa slave. Saat kedua master memilih slave yang sama pada waktu bersamaan maka slave tidak dapat memilih master mana yang akan mengirimkan data terlebih dahulu sehingga terjadi tabrakan data. Saat kedua master memilih slave yang berbeda maka terdapat 2 slave yang berlogika nol sehingga dapat menyebabkan tabrakan data.

2. Apakah port MISO harus digunakan? Jelaskan alasannya

Jawab:

Iya. Cara kerja Port Master Input Slave Output (MISO) pada komunikasi SPI, jika perangkat dikonfigurasikan sebagai master maka port MISO bertindak sebagai input (menerima data dari slave) sedangkan jika dikonfigurasikan sebagai slave maka port MISO bertindak sebagai output (mengirim data menuju master). Port MISO digunakan saat master membutuhkan respon dari slave dan slave akan mengirimkan data ke master. MISO berfungsi untuk memberi kabar /respon data apakah telah diterima atau belum.

7. Download [kembali]

1. Video Download!!!
2. HTML  Download!!!
3. Rangkaian  Download!!!
4. List Program Master Download!!!
5. List Program Slave Download!!!


No comments:

Post a Comment

Bahan Presentasi Untuk Matakuliah  SENSOR Dosen Pengampu :  Darwison, MT  OLEH : FARHAN FADIL IRSAN (1810952041) ...