Anda di halaman 1dari 30

MENGAKSES MAX7219 MENGGUNAKAN

KOMUNIKASI SPI (SERIAL PHERIPERAL


INTERFACE)

TUJUAN

 Mahasiswa dapat menjelaskan tentang pemrograman komunikasi SPI MAX


7219.
 Mahasiswa dapat mempraktekkan pemrograman komunikasi SPI MAX 7219

PENGENDALI 8 DIGIT SEVEN SEGMENT MAX7219

Gambar 1. 1 . Rangkaian Sederhana MAX 7219


MAX7219 adalah piranti pengendali yang mengantarmukakan
mikroprosesor ke 8 digit 7-segmen, bar-graph display, atau pada 64 LED secara
individu menggunakan common-cathode. Pengendali LED ini menggunakan
komunikasi SPI untuk mengatur setiap keluarannya. pada komunikasi data serial

1-1
i
yang digunakan memiliki format (tabel 1.1) dan timing (gambar 1.2) data
tersendiri agar dapat mengatur fitur – fitur didalamnya.

Tabel 1. 1 Format Data – Serial


Byte 2 Byte 1
D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0
X X X X Alamat MSB DATA LSB

Gambar 1. 2 . Timing Diagram MAX7219

A. DIGIT DAN KONTROL REGISTER

Digit dan kontrol register dapat dilihat pada tabel 1.2. Dari tabel tersebut
terdapat beberapa alamat yang memiliki fungsi yang berbeda beda. pada alamat
0xX1 sampai 0xX8 adalah alamat untuk memilih digit dari seven segment yang
akan diatur nilainya. Alamat lainya adalah untuk pengaturan fitur – fitur pada IC
tersebut.

1-2
Tabel 1. 2 . List dari Alamat MAX7219

Register Address

No-Op 0xX0

Digit 1 0xX1

Digit 2 0xX2

Digit 3 0xX3

Digit 4 0xX4

Digit 5 0xX5

Digit 6 0xX6
Digit 7 0xX7
Digit 8 0xX8
Decode Mode 0xX9
Itensisty 0xXA
Scan Limit 0xXB
Shutdown 0xXC
Display Test 0xXF

B. SHUTDOWN MODE
Ketika MAX7219 dalam shutdown mode maka oscillator pada scan tidak
aktif, semua arus pada segment terhubung ke ground, dan semua pengatur digit
terhubung ke V+. Shutdown mode data pada digit dan control register tidak
berubah. Bahkan ketika Shutdown mode MAX7219 masih dapat diprogram.

Tabel 1. 3. Register data format shutdown Mode

Mode D7-D1 D0
Shutdown Mode X 0
Normal Operation X 1

1-3
C. ITENSITY CONTROL
Mengatur itensitas cahaya dari seven segment menggunakan MAX7219
dapat diatur secara digital menggunakan Register Itensity. Pada register intensity
memiliki 16 step yang dikodekan pada nible terendah dari data register tersebut.
Itensitas dari LED minimal pada 1/32 duty cycle , maksimal pada 31/32 duty
cycle. Lebih jelasnya dapat dilihat pada tabel 1.4.

Tabel 1. 4. Format Register Itensity

Duty cycle D7 – D4 D3 D2 D1 D0 HEX


1/32 X 0 0 0 0 0xX0
3/32 X 0 0 0 1 0xX1
5/32 X 0 0 1 0 0xX2
7/32 X 0 0 1 1 0xX3
9/32 X 0 1 0 0 0xX4
11/32 X 0 1 0 1 0xX5
13/32 X 0 1 1 0 0xX6
15/32 X 0 1 1 1 0xX7
17/32 X 1 0 0 0 0xX8
19/32 X 1 0 0 1 0xX9
21/32 X 1 0 1 0 0xXA
23/32 X 1 0 1 1 0xXB
25/32 X 1 1 0 0 0xXC
27/32 X 1 1 0 1 0xXD
29/32 X 1 1 1 0 0xXE
31/32 X 1 1 1 1 0xXF

1-4
D. SCAN – LIMIT REGISTER

Register ini digunakan untuk mengatur jumlah digit yang akan di


tampilkan. Dari tabel 1.5 dijelaskan tentang 3 bit data pada register yang
menyimbolkan banyak digit yang ditampilkan.

Tabel 1. 5. Format Scan – Limit Register

Menampilkan digit ke Register data Hex


D7-D3 D2 D1 D0
0 saja X 0 0 0 0xX0
0,1 X 0 0 1 0xX1
0,1,2 X 0 1 0 0xX2
0,1,2,3 X 0 1 1 0xX3
0,1,2,3,4 X 1 0 0 0xX4
0,1,2,3,4,5 X 1 0 1 0xX5
0,1,2,3,4,5,6 X 1 1 0 0xX6
0,1,2,3,4,5,6,7 X 1 1 1 0xX7

E. DECODE MODE

Gambar 1. 3. Percobaan Decode Mode

Register Decode Mode ini berfungsi untuk mengatur apakah setiap digit
menggunakan decoder BCD code B atau tidak menggunakan decoder. Pada
register decode mode setiap nilai bit pada data mengindikasikan digit keberapa
yang akan

1-5
di atur (gambar 1.3). Menggunakan Decode mode Code B artinya nilai nible data
pada register digit akan sesuai dengan tampilan nilai di seven segmen (tabel 1.7).
Tidak menggunakan Decode mode LED pada seven segmen akan diatur secara
idividu, pengaturan tersebut sesuai dengan register data (tabel 1.6).

Tabel 1. 6. Tidak menggunakan Decoder

Register Data

D7 D6 D5 D4 D3 D2 D1 D0
DP A B C D E F G

Tabel 1. 7. Code B
Register data di segment
char
D7* D6-D4 D3 D2 D1 D0 DP* A B C D E F G
0 0 X 0 0 0 0 0 1 1 1 1 1 1 0
1 1 X 0 0 0 1 1 0 1 1 0 0 0 0
2 0 X 0 0 1 0 0 1 1 0 1 1 0 1
3 1 X 0 0 1 1 1 1 1 1 1 0 0 1
4 0 X 0 1 0 0 0 0 1 1 0 0 1 1
5 1 X 0 1 0 1 1 1 0 1 1 0 1 1
6 0 X 0 1 1 0 0 1 0 1 1 1 1 1
7 1 X 0 1 1 1 1 1 1 1 0 0 0 0
8 0 X 1 0 0 0 0 1 1 1 1 1 1 1
9 1 X 1 0 0 1 1 1 1 1 1 0 1 1
- 0 X 1 0 1 0 0 0 0 0 0 0 0 1
E 1 X 1 0 1 1 1 1 0 0 1 1 1 1
H 0 X 1 1 0 0 0 0 1 1 0 1 1 1
L 1 X 1 1 0 1 1 0 0 0 1 1 1 0
P 0 X 1 1 1 0 0 1 1 0 0 1 1 1
Blank 1 X 1 1 1 1 1 0 0 0 0 0 0 0

1-6
F. DISPLAY TEST REGISTER

Display Test memiliki dua mode yaitu normal dan display test. Display
tes mode adalah menghidupkan semua LED, tetapi tidak mengubah control dan
digit register serta data sebelumnya/ di display test ini semua melakukan scaning
ke semua digit dan itensitas cahaya nya 31/32 duty cycle.

Tabel 1. 8. Format display – test register

Mode D7-D1 D0
Operasi Normal X 0
Mode Display - test X 1

1-7
ALAT DAN BAHAN YANG DIGUNAKAN

 1 unit PC/Notebook
 Trainer Serial Pheripheral Interface
 USB ASP
 Minimum System
 MAX7219 Modul
 1 kabel USB Type B
 2 kabel connector 10 pin

PROSEDUR

Gambar 1.4. Pengkabelan MAX7219

1. Hubungkan PORTB pada PORT Modul MAX7219 menggunakan


connector 5x2
2. Hubungkan Downloader dengan minimum system connector 5x2
3. Hubungkan Downloader ke PC menggunakan USB type B ke PC
4. Buka CVAVR dan buatlah project baru yang menggunakan
mikrokontroler Atmega16 dan konfigurasi clock 8Mhz.
5. Buatlah program dengan memperhatikan register SPCR, SPSR dan
PORTB. Sebagai berikut:
a. MOSI (PB 5) sebagai Output dan nilai awal 0, MISO (PB 6)
sebagai input, SCK (PB 7) sebagai output dan nilai awal 0, SS
(PB4) sebagai output dan nilai awal 1.

1-8
b. Pada SPCR konfigurasi menjadi SPI sebagai master, format
pengiriman data dari MSB terlebih dahulu, SPI mode di
konfigurasi menjadi 0, dan frekuensi pada SCK bernilai 1/128
dari frekuensi Oscilator.
c. Pada SPSR konfigurasi untuk tidak menggunakan double speed
SCK.
d. Catat program di hasil percobaan
6. Buatlah fungsi dengan listing program seperti berikut.

Gambar 1. 5 Fungsi spi() (Atmel, 138-139, 2010)

7. Buat lah fungsi instruksi mengirim 16bit data yang memiliki parameter
alamat register dan data register untuk berkomunikasi dengan
MAX7219 , perhatikan timing diagram pada Gambar 1.2 dan format
pengiriman pada tabel 1.1.
8. Buatlah instruksi memanfaatkan fungsi yang telah dibuat sebagai berikut
e. Disable display test
f. Disable shutdown mode
g. Berinilai 0xFF pada data di register Decode Mode.
h. Atur itensitas 17/32 duty cycle
i. Atur Scan – limit sehingga semua digit dapat menampilkan nilai
j. Instruksikan display untuk clear display menggunakan
instruksi blank
k. Tampilkan angka 0 pada digit 1 , 2 pada digit 2, dan
seterusnya sampai 7 pada digit terakhir dengan delay 1 detik.
l. Lalu hidup dan matikan display dengan delay 1 detik dengan
register shutdown pada looping.
9. Dengan program sebelumnya, cobalah ubah nilai data pada register
Decode Mode dengan 0x0F.

1-9
DATA HASIL PERCOBAAN
\
1. Code Program beserta dokumentasi pada langkah 5

2. Code Program beserta dokumentasi pada langkah 7

3. Code Program beserta dokumentasi pada langkah 8

4. Tampilan Pada seven segment dengan foto (3 buah foto) pada langkah
8!
5. Tampilan Pada seven segment dengan foto (3 buah foto) pada langkah
9!
6. Diskripsikan kejadian pada tampilan seven segment mulai dari pertama
minimum system diberi tegangan (atau setelah reset) sampai program
itu
menginstruksi loop.
Tampilan pada sevent segment dimulai dari 0,1,2,3,4,5,6,7 dan munculnya angka
sesuai pada delay yangg diatur. Kemuadian akan Kembali ke 0 setelah tombol
reset ditekan.

ANALISIS DATA

1. Jelaskan pengertian dari setiap baris program pada langkah ke 6 !


 Pada baris program SPDR=dat_; digunakan untuk menampung data yang
kemudian dikirimkan atau dibaca.
 Pada baris program while(!SPSR&(1<<SPI);. SPI interrupt flag
digunakan untuk menandakan bahwa pengirim data telah selesai dan
memiliki nilai 1.
 Pada baris program return SPDR; digunakan untuk pengembalian nilai
data SPDR.

2. Jelaskan urutan program pada langkah 7 ! mengapa demikian ?


Pada langkah 7 untuk berkomunikasi pada master harus
memberikan logika low pada pin SS(PORTB4). Lalu master
mempersiapkan data pada register dan data, kemudian kedua data tersebut
akan dikirim ke fungsi spi.SendByte.setelah itu, master akan
membangkitkan sinyal clock di pin SCK dan pada saat itu pertukaran data
berlangsung dan Untuk mengakhiri pertukaran data pada Pin SS diberi
logika high.

3. Seharusnya langkah ke 8 dan langkah ke 9 menampilkan karakter yang


berbeda. Jelaskan mengapa demikian ?

 Pada langkah 8 , pada program decode mode menggunakan nilai


data 0xFF artinya register decode mode berfungsi untuk mengatur
setiap digit menggunakan decoder BCD code B, yang artinya pada
saat akan mengatur nilai digit (digit 1-8) dapa yang terdapat pada
register tersebut sesuai dengan bentuk output dari seven segmen.

 Pada langkah 9 pada program decode mode menggunakan nilai


data 0x0F artinya register decode ini berfungsi untuk mengatur
pada digit 1-4 dengan menggunakan decoder BCD code B, pada
digit 5-8 tidak menggunakan decode mode, yaitu setiap bit dari
data yang dikirimkan ketika mengatur nilai digit akan seseuai
dengan jalur pada seven segmen.
KESIMPULAN

Pada pecobaan ini kami dapat membuat program SPI MAX 729, pada
program ini menggunakan header #include <delay.h> untuk mengatur jeda
waktu yang pada program yang keluarannya pada seven segmen. #include
<spi.h> untuk komunikasi serial sinkron SPI (Serial Peripheral Interface) pada
arduino. fungsi instruksi mengirim 16bit data yang memiliki parameter alamat register
dan data register untuk berkomunikasi dengan MAX7219 dengan menuliskan program :

char spiSendByte (char dat_)

//copy data into the SPI data register

SPDR = dat_;

//wait until transfer is complete

while (!(SPSR & (1 << SPIF)));

return SPDR;

Kemudian memasukkan program pada rangkaian kemudian disimulasikan yang hasilnya terdapat
pada tabel percobaan.
1-10
KOMUNIKASI ANTAR
MIKROKONTROLER MENGGUNAKAN SPI
(SERIAL PHERIPERAL INTERFACE)

TUJUAN
 Mahasiswa dapat menjelaskan bagaimana bagaimana proses komunikasi SPI.
 Mahasiswa dapat menjelaskan tentang konfigurasi register untuk komunikasi
SPI.
 Mahasiswa dapat mempraktekkan tenatan komunikasi antar
mikrokontroler menggunakan SPI.

SPI (SERIAL PHERIPERAL INTERFACE)

SPI merupakan sebuah modul komunikasi serial sinkron dengan kecepatan


tinggi. Sifat dari komunikasi ini adalah full duplex yaitu dimana komunikasi
berjalan dengan dua arah sekaligus. SPI digunakan untuk berkomunikasi antar
mikrokontroler atau dengan perangkat lainnya. SPI dapat dikonfigurasi sebagai
master ataupun slave. Komunikasi menggunakan SPI membutuhkan 4 Jalur yaitu
MOSI, MISO, SCK dan SS.

Gambar 2. 1. Diagram Komunikasi SPI slave dan master (Atmel, 136, 2010)
Gambar 2.1 mendiskripsikan tentang bagaimana cara SPI berkomunikasi.
Pada Master, Jalur MOSI dikonfigurasi sebagai output yang berfungsi untuk jalur
data dari master menuju ke slave, Jalur MISO dikonfigurasi sebagai masukan
yang

2-1
berfungsi untuk menerima data dari slave. Data selalu dikirim dari master menuju
slave melalui MOSI dan data selalu ditrima dari slave ke master melalui MISO.
Jalur Slave select atau disingkat dengan SS berfungsi untuk mengaktifkan
Register Shift pada slave. SPI pada master akan memulai berkomunikasi dengan
memberikan logika low pada SS pin kepada slave. Setelah itu master dan slave
mempersiapkan datanya yang akan dikirim pada shift register masingm- masing.
Kemudian master membangkitkan sinyal clock di pin SCK, pada saat itu juga
pertukaran data dimulai. Pin SS diberi logika high kembali untuk mengakhiri
pertukaran data. Setelah mengirim satu byte data, sinyal clock berhenti dan
memberikan tanda melalui SPIF (SPI Interupt Flag) berlogika high untuk
menandakan transmisi selesai.

Tabel 2. 1. Konfigurasi Pin SPI (Atmel, 136, 2010)

Pin Arah, Master SPI Arah, Slave SPI

MOSI Didefinisi oleh user Input


MISO Input Didefinisi oleh user
SCK Didefinisi oleh user Input
SS Didefinisi oleh user Input

A. REGISTER

1. SPI Control Register (SPCR)


Bit 7 6 5 4 3 2 1 0
SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0
Read⁄ R/W R/W R/W R/W R/W R/W R/W R/W
Write
Initial Value 0 0 0 0 0 0 0 0
Gambar 2. 2. Register SPCR (Atmel 2010:140)

2-2
a. Bit 7 - SPIE – SPI Interupt Enable
Bit ini untuk mengaktifkan interrupsi pada SPI. Interupsi akan
dieksekusi ketika bit SPIF pada register SPSR berlogika satu dan
gelobal interrupt di SREG berlogika high.

b. Bit 6 – SPE – SPI Enable


Bit ini harus bernilai satu jika ingin menggunakan segala operasi di SPI.

c. Bit 5 – DORD – Data Order


Bit ini mengatur pengiriman data dimulai dari LSB atau MSB dahulu.
Jika berlogika satu, maka data yang dikirim terlbih dahulu bermula di
LSB, jika berlogika nol maka data yang dikirim terlebih dahulu bermula
di MSB.

d. Bit 4 – MSTR – Master/Slave Select


Bit ini jika diberi nilai satu maka modul SPI akan menjadi mode master
dan bernilai nol menjadi mode slave. Jika pin SS dikonfigurasi menjadi
input dan ketika SS tersebut berlogika low ketika modul SPI
terkonfigurasi menjadi mode master maka register ini akan mengganti
nilainya menjadi nol dan register SPIF diSPSR akan bernilai satu.
Modul SPI menjadi slave dan harus diaktifkan kembali menjadi master
untuk mengembalikan ke mode master.

e. Bit 3 – CPOL – Clock Polarity


register ini berfungsi untuk mengatur logika clock. Jika register ini
diberinilai 1, maka keluaran pada pin SCK akan berlogika high ketika
idle. Jika register ini diberinilai 0 maka keluaran pada pin SCK akan
berlogika low ketika idle. Selain dari itu register ini mengatur
pembacaan data setiap bit pada tepi naik atau ditepi turun. Jika diberi
nilai 1 maka bit data akan diambil ketika tepi turun, jika diberi nilai 0
maka bit data

2-3
akan diambil ketika tepi naik. Lebih jelasnya dapat dilihat format
pengiriman pada Gambar 2.2 dan Gambar 2.3.
f. Bit 2 – CPHA – Clock Phase
Register ini berfungsi sebagai penentu bit data itu diambil tepi awal
clock atau tepi akhir clock. Jika register ini diberinilai 0 maka bit data
diambil dari tepi awal clock, jika register ini diberinilai 1 maka bit data
diambil dari tepi akhir clock. Lebih jelasnya dapat dilihat format
pengiriman pada Gambar 2.2 dan Gambar 2.3.

g. Bit 1, 0 – SPR1, SPR0 – SPI Clock Rate Select


Kedua bit ini berfungsi sebagai pengatur frekuensi clock yang akan
digunakan pada komunikasi SPI. Bit ini juga tidak memiliki efek
apapun ketika SPI dikonfigurasi sebagai slave. Hubungan frekuensi
oscillator dengan Frekuensi clock dapat dilihat di Tabel 2.2.

Tabel 2. 2. Hubungan Antara frekuensi Osilator dengan SCK


SPI2X SPR1 SPR0 Frekuensi SCK
1 0 0 𝑓𝑜𝑠𝑐/2
0 0 0 𝑓𝑜𝑠𝑐/4
1 0 1 𝑓𝑜𝑠𝑐/8
0 0 1 𝑓𝑜𝑠𝑐/16
1 1 0 𝑓𝑜𝑠𝑐/32
0 1 0 𝑓𝑜𝑠𝑐/64
1 1 1 𝑓𝑜𝑠𝑐/64
0 1 1 𝑓𝑜𝑠𝑐/128

Tabel 2. 3. Mode pengiriman data pada SPI dengan pengaturan CPOL dan
CPHA
Mode CPOL CPHA Tepi Depan Tepi Belakang
0 0 0 Ambil data ( tepi naik ) Ganti data (tepi turun)
1 0 1 Ganti data (tepi naik) Ambil data (tepi turun)
2 1 0 Ambil data ( tepi turun ) Ganti data (tepi naik)

2-4
3 1 1 Ganti data (tepi turun) Ambil data (tepi naik)

Gambar 2. 3. Format Pengiriman Data SPI ketika CPHA = 0

Gambar 2. 4. Format Pengirima Data SPI ketika CPHA = 1

2-5
2. SPSR - SPI status Register

Bit 7 6 5 4 3 2 1 0
SPIF WCOL - - - - - SPI2X
Read⁄ R R R R R R R R/W
Write
Initial Value 0 0 0 0 0 0 0 0
Gambar 2. 5. Register SPSR (Atmel 2010:142)

a. Bit 7 – SPIF – SPI interrupt Flag


Bit ini adalah bit untuk menandakan bahwa pengiriman data telah
selesai. Jika selesai maka bit ini memiliki nilai 1. Bit ini juga berperan
penting dalam eksekusi interupsi, interupsi akan dieksekusi ketika bit
ini berlogika satu dengan konfigurasi SPIE dan global interup SREG
aktif .

b. Bit 6 – WCOL – Write Colision Flag


Bit ini akan bernilai 1 jika SPDR tertulis ketika mengirim data. Artinya
bahwa bit ini menandakan tentang kejadia tabrakan data. Tabrakan data
terjadi ketika Register buffer data (SPDR) tertulis data dari perangkat
lain ketika SPI sedang melakukan pengiriman data.

c. Bit 5..1 – Reserved


Bit ini tidak digunakan pada atmega 16.

d. Bit 0 – SPI2X – Double SPI Speed


Bit ini dugunakan untuk melipat gandakan frekuensi pada SCK. Dapat
dilihat di Tabel 2.2.

2-6
3. SPDR - SPI Data Register

Bit 7 6 5 4 3 2 1 0
MSB LSB
Read⁄ R/W R/W R/W R/W R/W R/W R/W R/W
Write
Initial Value 0 0 0 0 0 0 0 0
Gambar 2. 6. Register SPDR (Atmel 2010:142)
SPI data register ini digunakan untuk menampung data untuk dikirim atau
dibaca. Menulis data ke SPDR ini artinya data akan dikirim ke slave melalui 8 bit
shift register, membaca register ini artinya mengambil data yang diterima dari
Data Buffer.

2-7
ALAT DAN BAHAN YANG DIGUNAKAN

 1 unit PC/Notebook
 Trainer Serial Pheripheral Interface
 Minimum System “A” ATmega 16
 Minimum System “B” ATmega 16
 Terminal ISP Downloader
 USB ASP Downloader
 Modul LCD 16x8
 1 kabel USB Type B
 5 kabel connector 5x2 pin

PROSEDUR

Gambar 2. 7. Pengkabelan Master Slave


Pada praktikum Komunikasi Antar Mikrokontroler menggunakna SPI ini
terdapat 2 buah Minimum system yang akan dikonfigurasi menjadi slave atau
master. Untuk memprogram mikrokontroler tersebut tidak bisa secara bersamaan.
Gunakan terminal ISP Downloader untuk memilih mikrokontroler yang akan
diprogram.

2-8
2. Hubungkan PORTB pada Minimum system “A” pada PORTB pada
Minimum System “B” .
3. Hubungkan PORTC pada PORT modul LCD 16x2.
4. Hubungkan terminal ISP “1” pada Minimum System “A”, dan terminal
ISP “2” pada minimum system “B”.
5. Hubungkan Downloader ke PC menggunakan USB type B ke PC
6. Buatlah program untuk mengirim 1 byte data dari Minimum System “A”
sebagai slave ke Minimum system “B” sebagai master, dengan langkah
sebagai berikut :
a. Buka CVAVR dan buatlah project baru yang menggunakan
mikrokontroler Atmega16 dan konfigurasi clock 8Mhz untuk
Minimum system “A”.
b. Konfigurasi Minimum system “A” sebagai slave dengan
konfigurasi pin MISO (PB6) sebagai Output dan pin lainnya
sebagai input.
c. Pada SPCR aktifkan SPI dengan fortmat pengiriman data dari
MSB terlebih dahulu.
d. Buatlah Fungsi dengan listing sebagai berikut :

Gambar 2. 8. Fungsi spi() (Atmel, 138-139, 2010)

e. Buatlah program di fungsi loop menggunakan fungsi spi() dengan


parameter berbentuk karakter (karakter terserah), karakter
tersebut akan dikirim ke master. Fungsi tersebut akan
menyimpan
data pada register SPDR secara terus menerus.

2-9
f. Compile program dan sambungkan downloader pada Minimum
system “A” dengan menggeser DIP switch “1” ke On pada
Terminal ISP. Lakukan upload program
g. buatlah project baru dengan menutup program sebelumnya
dengan spesifikasi mikrokontroler sama.
h. Konfigurasi Minimum system “B” sebagai master dengan
konfigurasi pin MOSI (PB 5), SCK (PB 7) dan SS (PB4) sebagai
output sedangkan pin lainnya sebagai input.
i. Pada SPCR aktifkan SPI dengan format pengiriman data dari
MSB terlebih dahulu dan atur frekuensi clock 1/16 nya dari
frekuensi clock CPU.
j. Buatlah fungsi seperti langkah 5.d
k. Buatlah program untuk berkomunikasi dengan slave dengan
prosedur komunikasi SPI lalu gunakan fungsi spi() untuk
mengirim dan menerima data dari Slave.
l. Tampung data yang diterima lalu tampilkan data ke LCD.
7. Dengan meneruskan program master slave sebelumnya buatlah program
untuk mengirim 12 karakter nama salah satu anggota kelompok dari
slave dan ditampilkan ke LCD melalui master. (Gunakan if else , array
dan
perulangan untuk menyelesaikannya)
8. Dengan kode program pada langkah 6 ubahlah frekuensi clock pada
register SPCR menjadi 1/4 dari frekuensi clock CPU.

2 - 10
DATA HASIL PERCOBAAN
\
1. Code Program Inisialisasi SPI pada Master dan Slave beserta dokumentasi
pada langkah 6
Master slave

2. Code Program loop pada Master dan Slave beserta dokumentasi pada
langkah 6
Master slave

3. Code Program Inisialisasi SPI pada Master dan Slave beserta dokumentasi
pada langkah 7
Master slave

4. Code Program loop pada Master dan Slave beserta dokumentasi pada
langkah 7
Master slave
5. Tampilan LCD pada langkah 6 (Foto)

6. Tampilan LCD pada langkah 7 (Foto)


7. Tampilan LCD pada langkah 8 (Foto)

ANALISIS DATA

2 - 11
1. Jelaskan pengertian dari setiap baris program pada langkah ke 6! (hanya
bagian dalam fungsi loop)

Pada Slave, pada program spi.SendByte(‘A’); untuk mengirimkan


karakter ‘A’ ke fungsi spi.SendByte.

Pada Master, pada program data=spi.SendeByte(0x7E); untuk


menerima data dari slave dan ditampung ppada variable data.
Lcd_gotoxy(0,0) untuk menampilkan karakter pada LCD. Dan
lcd_putchar(data); untuk menampilkan data berupa karakter ke
LCD.

2. Jelaskan pengertian dari setiap baris program pada langkah ke 7 ! (hanya


bagian dalam fungsi loop)
Pada Slave, int i; untuk mendeklarasikan variable i. perulangan for
(i=0;<=11;i++); untuk membaca indeks array 0 sampai 11.
spiSendByte(var[i]); untuk mengirim karakter dari indeks array 0
sampai 11.

Pada Master, int i; untuk mendeklarasikan variable n. perulangan for


(i=0;<=11;i++); untukmemberikan nilai n yang akan digunakan untuk
mengambil atau menaruh sebuah karakter. spiSendByte(0x7E);untuk
menerima data dari slave dan akan ditampung ke variable data.
Lcd_gotoxy(0,0) untuk menampilkan karakter pada LCD dengan baris
0 dan kolom n (n=0,1,2………11). Dan lcd_putchar(data); untuk
menampilkan data berupa karakter ke LCD.

3. Diskripsikan apa yang terjadi pada tampilan data di langkah 8 ? Berikan


penjelasan mengapa demikian dan cantumkan sumber referensi
penjelasannya !
Pada langkah 8 terdapat perubahan clock pada SPI yang terletak pada SPRI
dan SPR0 yang berfungsi untuk mengatur frekuensi clock yang akan
digunakan pada komunikasi SPI.
KESIMPULAN

Pada percobaan ini kami dapat mengertahui bagaimana proses komunkasi SPI
yaitu etiap satu clock SPI dilakukan, maka akan terjadi komunikasi full duplex antara
master device dengan slave device. Master mengirimkan satu Bit pada line MISO, lalu
slave akan membacanya. Setelah itu, pada line MISO slave device akan mengirimkan data
kembali ke master device dan master akan membacanya. Kami juga mengetahui
bagaimana konfigurasi pada SPI yaitu setiap satu clock SPI dilakukan, maka akan terjadi
komunikasi full duplex antara master device dengan slave device. Master mengirimkan
satu Bit pada line MISO, lalu slave akan membacanya. Setelah itu, pada line MISO slave
device akan mengirimkan data kembali ke master device dan master akan membacanya.
Urutan ini akan bertahan seperti di atas meskipun kita tidak menggunakan komunikasi
Full Duplex atau hanya menggunakan satu line komunikasi saja (seperti simplex ).
Kemudian kami membuat program yang seseuai dengan perintah pada modul
diatas, kemudian menjalankan simulasi dan hasil dari simulasi terdapat pada tabel
percobaan.
2 - 12

Anda mungkin juga menyukai