Laporan AKhir 1 (SPI)

  [menuju akhir]




1. Komponen [kembali]
Gambar 1.Arduino


Gambar 2. LED

Gambar 3. Button


Gambar 4. Rangkaian Simulasi


Gambar 5. Rangkaian Simulasi setelah dijalankan


3. Flowchart [kembali]



Gambar 6. Flowchart Master



Gambar 7. Flowchart Slave



LISTING MASTER
#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);
  }
}

LISTING 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);
  }
}

5. Video Simulasi [kembali]




  1.      Jika menggunakan 2 slave bagaimanakah cara master menentukan berkomunikasi         dengan slave yang mana?
        Jawab: 
        Pada percobaan 2 merukapan rangkaian SPI yang merupakan suatu rangkaian serial komunikasi pada 2 tau lebih perangkat keras (hardware) yang bersifat duplex. Komunikasi yang bersifat duplex communication, yang artinya memiliki feedback. Pada  rangkaian slave ini memiliki empat jalur yaitu MISO, MOSI, sCLK, dan SS/CS. Dimana pin sCLK berfungsi untuk mengirim data sebagai konfigurasinya. Sedangkan pin SS/CS berfungsi sebagai penambahan slave, dimana disini kita bisa menambahkan slave sesuai dengan keperluan. Jika slave kita lebih dari satu maka kita harus memberikan logika pada slave tersebut secara satu persatu, agar pin master nanti dapat menyalurkan data  inputnya dan pemasangan slave keduanya yaitu di paralelkan dari slave yang pertama.

 Untuk Koding pada Arduino sama saja seperti koding slave yang di awal,cuman kita hanya menambahkan pada void loop  berapa kondisi  slave saja lagi yang ingin kita buat pada rangkaian di proteus. Untuk dapat memilih slave mana yang digunakan oleh master, pada program slave terdapat program SPE yang digunakan untuk mangaktifkan dan menonaktifkan komunikasi SPI yaitu dimana jika SPI bernilai 1 maka komunikasi SPI aktif sedangkan jika bernilai 0 maka komunikasi SPI tidak aktif

7. Link Download [kembali]
Rangkaian Simulasi - download
Video Simulasi - download
Listing Program Master- download
Listing Program Slave- download
HTML - download

Tidak ada komentar:

Posting Komentar