LAPORAN AKHIR PERCOBAAN 2

Laporan Akhir Percobaan 2
Kembali Ke-Menu Sebelumnya


1.Hardware [Kembali]











//MASTER

#include  <SPI.h>  //Deklarasi library SPI

void setup (void) {
  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;
  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);

}

//SLAVE

#include <SPI.h>
char buff [50];
volatile byte indx;
volatile boolean process;

void setup (void) {
  Serial.begin (115200);
  pinMode(MISO, 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) {
    process = false; //reset the process
    Serial.println (buff); //print the array on serial monitor
    indx = 0; //reset button to zero
  }
}


1. kelebihan dan kekurangan komunikasi SPI?
    Keistimewaan tersebut adalah pada saat yang bersamaan, Master dan Slave dapat sama sama mengirimkan data. Sebagai contoh Master ingin mengirimkan data 0b10001101 (0x8E) ke Slave dan Slave juga ingin mengirimkan data 0b00110010 (0x32) ke Master. Ketika SS pin dalam keaadaan LOW, pada clock pertama, shift register pada Master dan Slave akan secara bersamaan mengeser isi shift register mereka kekiri, Slave akan menerima bit pertama, data yang dikirimkan Master, pada LSB registernya. Pada saat yang bersaman, Master juga akan menerima bit pertama, data yang dikirimkan Slave, pada LSB registernya. sedangkan untuk kelemahannya yaitu komunikasi ini akan membutuhkan kabel yang banyak dalam penggunaannya. 
2. apa fungsi library SPI.h pada listing program SPI?
    pada listing program komunikasi SPI dideklarasikan libray SPI.h yang berguna untuk pemograman di bawahnya, apabila telah kita deklarasikan library tersebut maka saat membuat program di bawahnya kita tidak lagi perlu menyatakan SPI lagi.
3. Jelaskan prinsip kerja percobaan 2!
     Pada percobaan di atas digunakan 2 arduino dimana salah satunya adalah master dan arduino yang lain sebagai slave. Pada master, perintah dikirim melalui pin MOSI ke slave lalu pada slave akan memproses perintah dari master lalu apabila ada respon dari slave (ex: perintah gagal dilakukan) maka pin MISO pada slave akan mengirim kepada master respon tersebut. Pada slave kan diperintahkan untuk menghidupkan LED. jika logika HIGH (button on) maka LED menyala dan sebaliknya. Pada komunikasi SPI juga digunakan pin ss/sc yaitu untuk memilih slave mana yg akan digunakan dan untuak SCLK berfungsi sebgaia clock untuk mengatur waktu komunikasi ini

  1. Video <download disini>
  2. HTML <download disini>

Tidak ada komentar:

Posting Komentar