TUJUAN
1-1
i
yang digunakan memiliki format (tabel 1.1) dan timing (gambar 1.2) data
tersendiri agar dapat mengatur fitur – fitur didalamnya.
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.
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.
1-4
D. SCAN – LIMIT REGISTER
E. 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).
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.
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
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.
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
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
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 :
SPDR = dat_;
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.
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.
A. REGISTER
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.
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.
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)
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)
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
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 :
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)
ANALISIS DATA
2 - 11
1. Jelaskan pengertian dari setiap baris program pada langkah ke 6! (hanya
bagian dalam fungsi loop)
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