Selasa, 27 Oktober 2020

Laporan Akhir 2 Percoban 2





1. Komponen [Kembali]

Gambar1 . button hardware

Gambar2 . LED Hardware

Gambar3. Potensiometer

Gambar 4. LED

Gambar 5. Arduino









2.Rangkian Simulasi [Kembali]



3.Flowchart [Kembali]







4.Listing Program [Kembali]

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


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 [Kembali]


6.Kondisi [Kembali]

ANALISIS PERCOBAAN 2 [SPI[:

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

Jawab:

Untuk  SPI,  hanyadapatmenggunakan  1  master  saja.  Halinidikarenakan  Master  padaSPI sebagaipengontrolkomunikasi serial sinkronpada SPI dimanadapatmengirimataumenerima data. Namun, SPI inidapatmemilikilebihdari 1 Slave dimanaterdapat SlaveSelect (SS) untukmemilih (mengontrol) Slave mana yang dipiliholeh Master.

 

2. Apakah port MISO harus digunakan? Jelaskan alasannya

Jawab:

Port   MISO   harus   digunakan,   karenaPort   MISO   pada   rangkaian   komunikasi   SPImerupakan  interkoneksi  master  dan  slave  yang  berguna  sebagai  input,  karena  masterinput  dan  slave  output.Disaatmentransfer  data  dari  master  ke  slave  sangat  perlu  portMISO,  agar  data  sampai  ke  slave.SesuaidenganPrinsipkerjanyaSPIsinyal  clockdialirkan    dari  master  menuju  slave  untuk  sinkronisasi,  lalu  master  dapat  memilih  slavemana yangakan dikirimkan data melalui pin slave select (SS), lalu master mengirim, dari slave  menuju  MOSI  dan  jika  dibutuhkan  respon  makan  slave  akan  mengirimkan  datakembali ke master melalui MISO.



7.Link Download [Kembali]

file rangkaian - download

file program master - download

file program slave - download

video rangkaian - download

file html - download