Pada rangkaian menggunakan komunikasi SPI (Serial Pheriperal Interface).SPI merupakan komunikasi serial 1 arah yang lebih cepat dari UART.Prinsip kerjanya yaitu sinyal clock yang berasal dari master akan menuju slave untuk sinkronisasi,lalu master dapat memilih slave yang akan dituju/dikirimkan data melalui pin SS(Slave Select).Lalu master akan mengririm data ke slave menggunakan pin MOSI dan jika dibutuhkan respon maka slave akan mengirimkan data ke master melalui pin MISO.
#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);
}
}
· Analisa Percobaan 2 (SPI)
1. Apakah kita dapat menggunakan lebih dari 1 master? Jelaskan alasannya!
Jawab:
Tidak .Pada SPI hanya dapat menggunakan 1 master saja. Hal tersebut dikarenakan Master pada SPI sebagai pengontrol komunikasi serial sinkron pada SPI dimana dapat mengirim atau menerima data. Namun, SPI ini dapat memiliki lebih dari 1 Slave dimana terdapat Slave Select (SS) untuk memilih (mengontrol) Slave mana yang dipilih oleh Master.
2. Apakah port MISO harus digunakan? Jelaskan alasannya!
Jawab:
Iya. Karena komunikasi SPI membutuhkan 3 jalur yaitu MOSI, MISO, dan SCK. MISO jika dikonfigurasi sebagai master maka pin MISO sebagai input tetapi jika dikonfigurasikan sebagai Slave maka pin MISO sebagai output.
Tidak ada komentar:
Posting Komentar