2. Rangkaian Simulasi [kembali]
PERCOBAAN 2 [SPI[:
1.Bisakah pada SPI
menggunakan lebih dari 1 master? Jelaskan beserta alasannya
Jawab:
Tidak
bisa ,karena pada SPI hanya memiliki pin SS (slave select) yang berfungsi untuk
memilih slave mana yang akan dikirimkan data oleh master.Jadi pada SPI hanya
bisa 1 master dan banyak slave .Master dapat memilih slave yang mana yang akan
di pakai .Pada SPI merupakan komunikasi serial
synchronous dimana sinyal clock dialirkan dari master ke slave untuk
sinkronisasi.
2. Jelaskan pengaruh
input pullup dan pulldown pada rangkaian !
Jawab:
Pengaruh
input pullup yaitu hubungan antara pin I/O dan tegangan suplai,dengan sakelar
terbuka yang dihubungkan antar I/O dan ground ,menjaga masukkan tetap tinggi
sedangkan pulldown hubungan antar pin I/O dan ground ,dengan sakelar terbuka
yang terhubung antara I/O dan +supply,menjaga masukan tetap rendah.Pull up dan
Pulldown bekerja dengan konsep yang sama,keduanya adalah untuk mencegah
terjadinya floating(kondisi mengambang).jadi pada rangkaian pull up berarti
penambahan resistor ke sinyal high sedangkan pull down berarti penambahan resistor
ke sinyal low.
3. Jelaskan prinsip kerja
SPI pada rangkaian
Jawab:
Pada
rangkaian terdapat dua simulino uno yaitu master dan slave ,button dan led
red.Pin 10 master terhubung ke 10 slave,pin 11 master terhubung ke 11 slave
,pin 12 master terhubung ke 12 slave dan pin 13 master terhubung ke 13
slave.Pada pin 2 master terhubung ke button lalu terhubung ke ground yang mana
menjadi inputnya.Pada pin 2 slave terhubung ke led red laluke ground yang akan
menampilkan outputnya. Pada program Arduino master pertama dideklarasikan library SPI ,setelah
itu dideklarasikan button pada pin 2 ,lalu dibuat void setup dimana semua kode
didalam fungsi ini hanya di baca satu kali.Setelah itu di set baud rate
115200,lalu dibuat digitalWrite(SS, HIGH), setelah itu dimatikan slave select SPI.begin
(),setelah itu pembagi clock dengan 8.Setelah itu,dibuat fungsi void loop
dimana semua kode yang berada dalam fungsi ini dibaca berulang.setelah itu
dibuat char c ,int
nilai=digitalRead(button) ,jika if(nilai==0)
lalu digunakan enable select digitalWrite(SS, LOW),lalu dikirim test string
maka dibuat for (const char * p = "Hello, world!\r" ; c = *p; p++) setelah
itu dibuat SPI.transfer , Serial.print(c)
lalu dibuat disable slave select, digitalWrite(SS, HIGH) dan terdapat delay
2000.
Pada
program slave,pertama dibuat library SPI dan dideklarasikan led sebagai output
pada pin 2,lalu dibuat char buff [50],volatile byte indx ,volatile boolean
process.setelah void setup () yang man dibaca sekali ,setelah itu di set baud
rate 115200.lalu pinMode(led, OUTPUT) yaitu menjadikan led sebagai output.selanjutnya
menghidupkan SPI pada mode slave ,lalu
diberi indeks =0 setalah itu jika proses false maka dibuat SPI.attachInterrupt()
.lalu dibuat ISR (SPI_STC_vect), setelah itu dibaca byte berupa variabel c dari
data register SPI. Lalu dibuat if (indx
< sizeof buff), buff [indx++] = c, if (c == '\r') lalu proses benar. Selanjutnya
dibuat fungsi void loop dimana fungsi ini dapat dibaca secara berulang.Jika if (process) maka digitalWrite(led, HIGH),lalu proses false
maka direset proses lalu dibuat Serial.println (buff) dan indx = 0 .tearkhir ada delay 1000.dan
selain kondisi itu else maka digitalWrite(led,
LOW) LED mati.
Pada
rangkaian input diberikan oleh button saat ditekan dan tidak ditekan,lalu sinyal
clock dialirkan dari master ke slave yang berfungsi untuk singkronisasi.master
dapat memilih slave mana yang akan dikirimkan data melalui slave
select,kemudian data dikirimkan dari master ke slave melalui MOSI .Jika master
butuh respon data maka slave akan mentransfer data ke master melalui MISO.jika
button ditekan maka data akan ditransmisikan melalui MOSI dan perlu
disinkronisasikan ,sehingga led menyala walau agak ada delay dan apabila
dibiarkan ditekan maka led mati lalu hidup kembali .jika button tidak ditekan
maka akan ditransmisikan sesuai prinsip diatas sehingga led mati.
Download video simulasi disini
Download rangkaian simulasi disini
Download HTML disini
Download program arduino master disini
Download program arduino slave disini
Tidak ada komentar:
Posting Komentar