percobaan 2



1. Kondisi [Kembali]

Ganti LED menjadi Buzzer, Buatlah kondisi awal Buzzer mati, lalu hidup dengan delay 200 ms

2. Hardware [Kembali]

Push Button

LED
Arduino
 
Resistor

 
 Power Supply


3. Rangkaian Simulasi [Kembali]



4. Listing Program [Kembali]

Master :

#include <SPI.h> //Deklarasi library SPI
#define button 2, 3
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);
  }
}

Slave :

#include <SPI.h>
#define led 2

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

void setup (void) {
  Serial.begin (115200); // harus sama antara master dan slave
  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. Analisa [Kembali]

1. Jelaskan transmisi data pada SPI dan gambarkan timing diagram dari transmisi data pada SPI

Jawab :



Dalam Komunikasi SPI, dua atau lebih  device yang terhubung yang salah satunya akan bertindak sebagai Master dan yang lainnya akan bertindak sebagai Slave.

Master Device adalah device yang memulai sambungan dan melakukan control transmisi data. Saat kedua device sudah terkoneksi, master dapat meminta request data baik mengirim data ataupun menerima data. Seperti pada penjelasan di atas, hal ini dinamakan koneksi FULL DUPLEX ,yaitu master device dapat mengirim data dan juga slave device juga dapat mengirim data pada saat yang bersamaan.

Pada penjelasan sebelumnya SPI menggunakan empat pin untuk berkomunikasi. Yaitu MOSI, MISO, SCK dan  SS.

1.      MOSI berarti Master Output Slave Input, dimana pin ini digunakan sebagai Master mengirim data dan Slave sebagai penerima data.

2.      MISO berarti Master Input Slave Output, dimana pin ini digunakan sebagai Master bertindak sebagai penerima data dan Slave sebagai pengirim data.

3.      SCK, SPI Clock Line yang berarti clock yang digunakan untuk berkomunikasi (Komunikasi synchronous)

4.      SS artinya Slave Select. Jika SS bernilai 0 atau low maka Device bertindak sebagai slave dan jika bernilai 1 atau high maka device bertindak sebagai Master.

2. Bagaimana cara menghubungkan rangkaian SPi saat menggunakan lebih dari satu slave

Jawab :

Berdasarkan gambar diatas, rangkaian SPI dengan lebih dari satu slave dihubungkan secara parallel antara kabel master dengan slave, lalu jalur SS (slave select ) digunkan untuk memilih slave yang akan digunakan oleh master. Untuk lebih jelas dapat dilihat pada gambar dibawah.

6. Video Simulasi [Kembali]


 


7. Link Download [Kembali]

Download Rangkaian 

Download Video Rangkaian 

Download HTML

Tidak ada komentar:

Posting Komentar

Entri yang Diunggulkan

Bahan Presentasi ini dibuat untuk Memenuhi Tugas Mata Kuliah Elektronika Oleh: AHMAD FAUZAN ANARFI 1910952018 Dose...

Postingan Populer