1. Komponen [kembali]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);
}
}
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
Tidak ada komentar:
Posting Komentar