1. Komponen[kembali]
2. Rangkaian Simulasi[kembali]
3. Flowchart[kembali]
4. Listing Program[kembali]
Master:
#include <SPI.h> //Deklarasi library SPI#define button 2void 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){ delay(1000); 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(1000); }}
Slave:
#include <SPI.h>#define buzzer 2
char buff [50];volatile byte indx;volatile boolean process;
void setup (void) { Serial.begin (115200); pinMode(buzzer, 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(buzzer, HIGH); process = false; //reset the process Serial.println (buff); //print the array on serial monitor indx = 0; //reset button to zero delay(500); } else { digitalWrite(buzzer, LOW); }}5. Video[kembali]
6. Kondisi[kembali]
1. Jelaskan transmisi data pada SPI dan gambarkan
timing diagram dari transmisi data pada SPI
Jawab:
- MOSI merupakan Master Output Slave Input yang
berarti jika master dijadikan sebagai output maka slave akan menjadi inputnya.
- MISO merupakan Master Input Slave Output yang
berarti jika master dijadikan sebagai input maka slave akan menjadi outputnya.
- SCK merupakan Clock yang jika dikonfigurasi
sebagai master maka pinnya akan menjadi output namun jika sebagai slave maka
pinnya akan menjadi input.
- SS merupakan slave select merupakan jalur untuk
master yang bagian mana yang akan mengirimkan data.
2. Bagaimana cara menghubungkan rangkaian SPI saat
menggunakan lebih dari satu slave?
Jawab:
Saat menggunakan lebih dari satu slave bisa dengan
cara mengganti rangkaian dengan metode Independent Slave Configuration, yaitu
pin SS pada master dapat dihubungkan beberapa buah slave yang kita inginkan.
Daisy Chain Configuration dengan metode satu pin SS pada master dihubungkan ke
beberapa slave. Untuk ini kita juga memerlukan perubahan pada program dengan
menginisialisasikan slave-slavenya agar tau perintah dari master.
Tidak ada komentar:
Posting Komentar