BAB II LANDASAN TEORI
2.1
Microcontroller ATmega32 Microcontroller dan microprocessor mempunyai beberapa perbedaan. Jika
ditelaah dari artinya maka, microprocessor adalah pengolah mikro sedangkan microcontroller adalah pengendali mikro. Dari pengertian diatas sebenarnya sudah bisa diketahui perbedaannya dimana microprocessor yang terdapat pada komputer seperti Intel Pentium, hanya dapat bekerja apabila terdapat komponen pendukung seperti RAM (Random Access Memory), hard disk, motherboard, perangkat I/O, dan sebagainya. Komponen-komponen tersebut diperlukan karena microprocessor hanya dapat melakukan pengolahan data, namun tidak dapat menyimpan data, menyimpan program, menerima masukan dari user secara langsung, ataupun menyampaikan data hasil pemrosesan ke keluaran. Berbeda dengan microprocessor, microcontroller sudah dilengkapi dengan komponenkomponen yang dikemas dalam satu chip seperti memori, perangkat I/O, timer, ADC (Analog to Digital Converter), dan lain-lain. Hal ini membuat microcontroller lebih tepat untuk digunakan pada aplikasi embedded system. (Putra, 2010). Microcontroller AVR (Alf and Vegard’s Risc processor) standar memiliki arsitektur 8bit, dimana semua instruksi dikemas dalam kode 16-bit, dan sebagian besar instruksi dieksekusi dalam 1 (satu) siklus clock. AVR berteknologi RISC (Reduced Instruction Set Computing). AVR dapat dikelompokkan menjadi empat
5
6
kelas, yaitu keluarga ATtiny, keluarga ATSOSxx, keluarga ATmega, dan AT86RFxx. Pada dasarnya, yang membedakan masing-masing kelas adalah memori, anda dapat mencoba ATmega8 atau ATtiny2313 dengan ukuran Flash Memory 2KB dengan dua input analog. Berikut adalah fitur yang terdapat pada microcontroller ATmega32 yaitu: 1. Saluran I/O ada 32 buah, yaitu Port A, Port B, Port C, dan Port D. 2. ADC (Analog to Digital Converter) 10 bit sebanyak 8 channel. 3. Tiga buah Timer/Counter. 4. CPU yang terdiri dari 32 buah register. 5. Memiliki 131 instruksi yang membutuhkan 1 siklus clock. 6. Watchdog timer dengan osilator internal. 7. Dua buah timer/counter 8 bit, satu buah timer/counter 16 bit. 8. Tegangan operasi 2.7 V – 5.5 V pada ATmega 16L. 9. Internal SRAM sebesar 1 KB. 10. Memori flash sebesar 32KB dengan kemampuan Read While Write. 11. Unit interupsi internal dan external. 12. Port antarmuka SPI. 13. EEPROM sebesar 512 byte yang dapat diprogram saat operasi. 14. Antarmuka komparator analog. 15. 4 channel PWM. 16. 32x8 general purpose register. 17. Hampir mencapai 16 MIPS pada Kristal 16 MHz. 18. Port USART yang dapat diprogram untuk komunikasi serial.
7
2.1.1. Konfigurasi PIN Konfigurasi pin microcontroller ATmega32 dan bentuk modul minimum system ATmega32 terdapat pada Gambar 2.1 dan Gambar 2.2.
Gambar 2.1 Modul Minimum System ATmega32 (Sumber: Innovative Electronics, 2011)
Gambar 2.2 Konfigurasi pin microcontroller ATmega32. (Sumber: ATMEL, 2003) Fungsi umum dari susunan pin microcontroller ATmega32 adalah sebagai berikut: 1. VCC merupakan catu daya positif. 2. GND sebagai pin ground catu daya negatif.
8
3. Port A (PAO..PA7) merupakan pin I/O dua arah dan dapat diprogram sebagai pin dari ADC. 4. Port B (PBO..PB7) merupakan pin I/O dua arah dan fungsinya sebagai, timer/counter, komparator analog, dan SPI. 5. Port C (PCO..PC7) merupakan pin I/O dua arah dan fungsinya sebagai, TWI, komparator analog, dan timer osilator. 6. Port D (PDO..PD7) merupakan pin I/O dua arah dan fungsinya sebagai, komparator analog, interupsi eksternal dan komunikasi serial. 7. Reset merupakan pin yang digunakan untuk me-reset microcontroller. 8. XTAL 1 dan XTAL 2 sebagai pin clock eksternal. Pada microcontroller membutuhkan sumber (clock) agar dapat mengeksekusi instruksi yang ada di memori. Semakin tinggi nilai kristalnya, maka semakin cepat microcontroller tersebut. 9. AVCC sebagai pin tegangan untuk ADC. 10. AREF sebagai pin tegangan referensi.
9
Gambar 2.3 Diagram blok Atmega32 (Sumber: ATMEL, 2003) Pada Gambar 2.3 dalam datasheet didasarkan pada simulasi dan characterization microcontrollers AVR, nilai tegangan pada ATmega32 adalah CMOS 8-bit daya rendah. Maka microcontroller akan meningkatkan Arsitektur RISC, dengan mengeksekusi instruksi dalam satu siklus. ATmega32 mencapai throughputs mendekati 1 MIPS per MHz memungkinkan system ini untuk mengoptimalkan konsumsi daya pada pengolahan kecepatan. (ATMEL, 2003).
10
2.2
Media Penyimpanan EEPROM AT24C16A EEPROM AT24C16A adalah media penyimpanan eksternal yang
memiliki kapasitas sebesar 524.288 bit atau 65.536 bit. Memori ini cukup efisien dalam penggunaan pin dengan microcontroler. AT24C16 dikenal dengan nama 2wire serial EEPROM menggunakan teknologi I2C. 2.2.1 Konfigurasi PIN AT24C01A/02/04/08A/16A menyediakan bit 1024/2048/4096/8192/16384 seri elektrik dihapus dan diprogram Read Only Memory (EEPROM) disusun sebagai 128/256/512/1024/2048 per-kata 8 bit. Alat ini dioptimalkan untuk digunakan dalam banyak aplikasi dimana daya rendah tegangan operasi sangat penting. AT24C01A/02/04/08A/16A tersedia dalam 8 PDIP, 8 Jedec Soic, 8 alamat, 5 SOT23 (AT24C01A/AT24C02/AT24C04), 8 TSSOP, dan 8 BGA2 paket dan diakses melalui dua jalur serial. Selain itu, (EEPROM) mempunyai catu daya 2.7V (2.7V ke 5.5V) dan 1.8V (1.8V untuk 5.5V).
Gambar 2.4 Konfigurasi pin AT24C16 (Sumber: ATMEL, 2005) Pada Gambar 2.4 fungsi umum dari susunan pin EEPROM AT24C16 adalah sebagai berikut: 1. Serial Clock (SCL) 2. Serial Data (SDA) 3. Pengalamatan (A2, A1, A0A)
11
4. AT24C04 menggunakan input pin A1 dan pin A2 5. AT24C08A hanya menggunakan input pin A2. Pin A0 dan pin A1 tidak terhubung. 6. AT24C16A tidak menggunakan alamat pin A0, pin A1, dan pin A2. 7. Perlindungan penulisan (WAP)T: 24C01A/02/04/08A/16A digunakan untuk menyediakan perlindungan data. Untuk melindungi data, pada format tulis dan baca, maka EEPROM harus terhubung ke pin (GND). Ketika menulis data, maka EEPROM harus terhubung ke pin (VCC) untuk mengaktifkan perlindungan penulisan data tersebut.
Gambar 2.5 Diagram blok AT24C16A (Sumber: ATMEL, 2005) Pada Gambar 2.5 AT24C16A memiliki 2 pin SCL (serial clock) dan SDA (serial data). Operasi pada I2C, memori ini juga memiliki pin untuk tujuan pengalamatan yaitu A1 dan A0 sehingga memungkinkan untuk penggunaan secara paralel hingga 4 unit sekaligus. AT24C16 dapat dipasang secara paralel dengan menggunakan jalur I2C, untuk mendapatkan hasil secara maksimal sebesar 256 kByte. Memori ini juga dilengkapi dengan pengaman bila terjadi kesalahan
12
prosedur yang dapat menghilangkan isinya, yaitu memiliki pin WP (write protect). Jika pin ini dihubungkan ke (VCC) maka operasi tulis akan diabaikan. Memori AT24C16A memiliki alamat internal 1010H. Pada saat melakukan operasi pengalamatan pada LSB harus ditambahkan sesuai dengan pin A1 dan A0. Format pengalamatan unit memori ini dapat dilihat pada Gambar 2.6.
Gambar 2.6 Format pengalamatan memori (Sumber: ATMEL, 2005) AT24C16A dapat dijalankan untuk operasi baca maupun tulis. Pada operasi menulis disediakan 2 mode, yaitu byte write atau penulisan isi memori per-byte dan page write yaitu penulisan memori per halaman dengan jumlah data tiap halaman adalah 128 byte. 2.3
American Standard Codes for International Interchange (ASCI) ASCII singkatan dari American Standard Code for Informasi Interchange.
Komputer hanya dapat memahami nomor, maka kode ASCII adalah representasi numerik dari karakter seperti 'a', '@'. ASCII dikembangkan dengan karakter nonprinting. Karakter ASCII yang termasuk dalam deskripsi pertama 32 karakter non-
13
printing, ASCII dirancang untuk digunakan dengan teletypes sehingga dapat ditampilkan dengan penulisan yang tidak jelas. Maka dapat mengkopi file ke dalam alamat yang ditujukan. Tabel 2.1 kode extended ASCII.
Karakter
Nilai Unicode (heksadesimal)
NUL SOH STX ETX EOT ENQ ACK BEL BS
0000 0001 0002 0003 0004 0005 0006 0007 0008
HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK
0009 000A 000B 000C 000D 000E 000F 0010 0011 0012 0013 0014 0015
SYN ETB
0016 0017
CAN EM SUB ESC FS GS RS US SP !
0018 0019 001A 001B 001C 001D 001E 001F 0020 0021
Tabel 2.1 Tabel ASCII Nilai ANSI Keterangan ASCII (desimal) 0 Null (tidak tampak) 1 Start of heading (tidak tampak) 2 Start of text (tidak tampak) 3 End of text (tidak tampak) 4 End of transmission (tidak tampak) 5 Enquiry (tidak tampak) 6 Acknowledge (tidak tampak) 7 Bell (tidak tampak) 8 Menghapus satu karakter di belakang kursor (Backspace) 9 Horizontal tabulation 10 Pergantian baris (Line feed) 11 Tabulasi vertikal 12 Pergantian baris (Form feed) 13 Pergantian baris (carriage return) 14 Shift out (tidak tampak) 15 Shift in (tidak tampak) 16 Data link escape (tidak tampak) 17 Device control 1 (tidak tampak) 18 Device control 2 (tidak tampak) 19 Device control 3 (tidak tampak) 20 Device control 4 (tidak tampak) 21 Negative acknowledge (tidak tampak) 22 Synchronous idle (tidak tampak) 23 End of transmission block (tidak tampak) 24 Cancel (tidak tampak) 25 End of medium (tidak tampak) 26 Substitute (tidak tampak) 27 Escape (tidak tampak) 28 File separator 29 Group separator 30 Record separator 31 Unit separator 32 Spasi 33 Tanda seru (exclamation)
14
" # $ % & ‘ ( ) * + , . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O
0022 0023 0024 0025 0026 0027 0028 0029 002A 002B 002C 002D 002E 002F 0030 0031 0032 0033 0034 0035 0036 0037 0038 0039 003A 003B 003C 003D 003E 003F 0040 0041 0042 0043 0044 0045 0046 0047 0048 0049 004A 004B 004C 004D 004E 004F
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
Tanda kutip dua Tanda pagar (kres) Tanda mata uang dolar Tanda persen Karakter ampersand (&) Karakter Apostrof Tanda kurung buka Tanda kurung tutup Karakter asterisk (bintang) Tanda tambah (plus) Karakter koma Karakter hyphen (strip) Tanda titik Garis miring (slash) Angka nol Angka satu Angka dua Angka tiga Angka empat Angka lima Angka enam Angka tujuh Angka delapan Angka sembilan Tanda titik dua Tanda titik koma Tanda lebih kecil Tanda sama dengan Tanda lebih besar Tanda tanya A keong (@) Huruf latin A kapital Huruf latin B kapital Huruf latin C kapital Huruf latin D kapital Huruf latin E kapital Huruf latin F kapital Huruf latin G kapital Huruf latin H kapital Huruf latin I kapital Huruf latin J kapital Huruf latin K kapital Huruf latin L kapital Huruf latin M kapital Huruf latin N kapital Huruf latin O kapital
15
P Q R S T U V W X Y Z [ \ ] ^ _ ` A B C D E F G H I J K L M N O P Q R S T U V W X Y Z { ¦ }
0050 0051 0052 0053 0054 0055 0056 0057 0058 0059 005A 005B 005C 005D 005E 005F 0060 0061 0062 0063 0064 0065 0066 0067 0068 0069 006A 006B 006C 006D 006E 006F 0070 0071 0072 0073 0074 0075 0076 0077 0078 0079 007A 007B 007C 007D
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
Huruf latin P kapital Huruf latin Q kapital Huruf latin R kapital Huruf latin S kapital Huruf latin T kapital Huruf latin U kapital Huruf latin V kapital Huruf latin W kapital Huruf latin X kapital Huruf latin Y kapital Huruf latin Z kapital Kurung siku kiri Garis miring terbalik (backslash) Kurung sikur kanan Tanda pangkat Garis bawah (underscore) Tanda petik satu Huruf latin a kecil Huruf latin b kecil Huruf latin c kecil Huruf latin d kecil Huruf latin e kecil Huruf latin f kecil Huruf latin g kecil Huruf latin h kecil Huruf latin i kecil Huruf latin j kecil Huruf latin k kecil Huruf latin l kecil Huruf latin m kecil Huruf latin n kecil Huruf latin o kecil Huruf latin p kecil Huruf latin q kecil Huruf latin r kecil Huruf latin s kecil Huruf latin t kecil Huruf latin u kecil Huruf latin v kecil Huruf latin w kecil Huruf latin x kecil Huruf latin y kecil Huruf latin z kecil Kurung kurawal buka Garis vertikal (pipa) Kurung kurawal tutup
16
~ DEL
007E 007F 0080 0081 0082 0083 0084 0085 0086 0087 0088 0089
126 127 128 129 130 131 132 133 134 135 136 137
¡ ¢ £ ¤ ¥ ¦
008A 008B 008C 008D 008E 008F 0090 0091 0092 0093 0094 0095 0096 0097 0098 0099 009A 009B 009C 009D 009E 009F 00A0 00A1 00A2 00A3 00A4 00A5 00A6
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 158 160 161 162 163 164 165 166
§ ¨ © ª
00A7 00A8 00A9 00AA
167 168 169 170
IND NEL SSA ESA
PLD PLU SS2 SS3 DCS PU1 PU2 STS CCH MW
CSI ST OSC PM APC
Karakter gelombang (tilde) Delete Dicadangkan Dicadangkan Dicadangkan Dicadangkan Index Next line Start of selected area End of selected area Character tabulation set Character tabulation with justification Line tabulation set Partial line down Partial line up Reverse line feed Single shift two Single shift three Device control string Private use one Private use two Set transmit state Cancel character Message waiting Start of guarded area End of guarded area Start of string Dicadangkan Single character introducer Control sequence introducer String terminator Operating system command Privacy message Application program command Spasi yang bukan pemisah kata Tanda seru terbalik Tanda sen (Cent) Tanda Poundsterling Tanda mata uang (Currency) Tanda Yen Garis tegak putus-putus (broken bar) Section sign Diaeresis Tanda hak cipta (Copyright) Feminine ordinal indicator
17
«
00AB
Left-pointing double angle quotation mark 00AC 172 Not sign 00AD 173 Tanda strip (hyphen) 00AE 174 Tanda merk terdaftar 00AF 175 Macron 00B0 176 Tanda derajat 00B1 177 Tanda kurang lebih (plus-minus) Kodok 178 Tanda kuadrat (pangkat dua) 00B3 179 Tanda kubik (pangkat tiga) 00B4 180 Acute accent 00B5 181 Micro sign 00B6 182 Pilcrow sign 00B7 183 Middle dot (Sumber: lookuptables, 2010)
¬ ® ¯ ° ± ² ³ ´ µ ¶ ·
2.4
171
Liqiud Cristal Display (LCD)
Gambar 2.7 Bentuk fisik LCD (Sumber: Hawkins, 2012) Pada Gambar 2.7 LCD merupakan salah satu komponen elektronika yang berfungsi untuk menampilkan data, baik karakter, huruf ataupun grafik. Di pasaran LCD sudah tersedia dalam bentuk modul yaitu layar LCD beserta rangkaian pendukungnya termasuk ROM dan lain-lain. LCD mempunyai pin DATA, kontrol catu daya, dan pengatur kontras tampilan seperti pada Tabel 2.2. Tabel 2.2 Konfigurasi pin dari LCD 2x16 M1632 Nomor PIN
Nama
Fungsi
Deskripsi
1.
Vss
Power
GND
2.
Vdd
Power
+5V
3.
Vee
Contras Adj.
(-2) 0 – 5 V
18
4.
RS
Command
Register Select
5.
R atau W
Command
Read atau Write
6.
E
Command
Enable (Strobe)
7.
D0
I atau O
Data LSB
8.
D1
I atau O
Data
9.
D2
I atau O
Data
10.
D3
I atau O
Data
11.
D4
I atau O
Data
12.
D5
I atau O
Data
13.
D6
I atau O
Data
14.
D7
I atau O
Data MSB
(Sumber: Hawkins, 2012)
Data Bus
Control
D0 D1 D2 D3 D4 D5 D6 D7
RS R atau W E
Supply VCC Gnd VLCD
Gambar 2.8 Konfigurasi dari LCD (Sumber: Hawkins, 2012) Fungsi dari pin-pin pada konfigurasi dari LCD yaitu: 1. Pin DATA dapat dihubungkan dengan bus data dari rangkaian lain seperti microcontroller dengan lebar data 8 bit. 2. Pin RS (Register Select) berfungsi sebagai indikator atau yang menentukan jenis data yang masuk, apakah data atau perintah. Logika low menunjukan yang masuk adalah perintah, sedangkan logika high menunjukan data. 3. Pin R atau W (Read Write) berfungsi sebagai instruksi pada modul jika low tulis data, sedangkan high baca data. 4. Pin E (Enable) digunakan untuk memegang data baik masuk atau keluar.
19
5. Pin VLCD berfungsi mengatur kecerahan tampilan (kontras) dimana pin ini dihubungkan dengan variabel resistor 5 kOhm, jika tidak digunakan dihubungkan ke ground, sedangkan tegangan catu daya ke LCD sebesar 5 Volt. LCD telah dilengkapi dengan microcontroller HD44780 yang berfungsi sebagai pengendali. LCD ini juga mempunyai CGROM (Character Generator Read Only Memory), CGRAM (Character Generator Random Access Memory) dan DDRAM (Display Data Random Access Memory). 2.4.1. Display Data Random Access Memory (DDRAM) DDRAM merupakan memori tempat karakter yang akan ditampilkan berada. Contoh, untuk karakter ‘A’ atau 41H yang ditulis pada alamat 00, maka karakter tersebut akan tampil pada baris pertama dan kolom pertama dari LCD. Apabila karakter tersebut ditulis di alamat 40, maka karakter tersebut akan tampil pada baris kedua kolom pertama dari LCD. 2.4.2. Character Generator Random Access Memory (CGRAM) CGRAM adalah memori untuk menggambarkan pola sebuah karakter dimana bentuk dari karakter dapat diubah-ubah sesuai dengan keinginan. Namun memori ini akan hilang saat power supply tidak aktif, sehingga pola karakter akan hilang. 2.4.3. Character Generator Read Only Memory (CGROM) CGROM adalah memori untuk menggambarkan pola sebuah karakter dimana pola tersebut sudah ditentukan secara permanen dari HD44780, sehingga pengguna tidak dapat mengubahnya. Karena ROM bersifat permanen, maka pola karakter tersebut tidak akan hilang walaupun sumber tegangan tidak aktif.
20
Pada Tabel 2.3 terlihat pola-pola karakter yang tersimpan dalam lokasilokasi tertentu dalam CGROM. Pada saat HD44780 akan menampilkan data 41H yang tersimpan pada DDRAM, maka HD44780 akan mengambil data di alamat 41H (0100 0001) yang ada pada CGROM yaitu pola karakter A. Tabel 2.3 Karakter Pada CGROM M1632 LCD
(Sumber: Hawkins, 2012) 2.5
Inter Integrated Circuit (I2C) Inter Integrated Circuit atau sering disebut I2C adalah standar komunikasi
serial dua arah menggunakan dua saluran yang didesain khusus untuk mengirim maupun menerima data. I2C merupakan bus standar yang didesain oleh Philips pada awal tahun 1980-an untuk memudahkan komunikasi antar komponen pada suatu rangkaian. I2C merupakan singkatan dari Inter IC atau komunikasi antar IC, sering disebut juga IIC atau I2C. Pada awalnya, kecepatan komunikasi maksimumnya atur pada 100kbps karena pada awalnya kecepatan tinggi belum dibutuhkan pada transmisi data. Untuk yang membutuhkan kecepatan tinggi, ada mode 400kbps dan sejak 1998 ada mode kecepatan tinggi 3,4Mbps. I2C tidak hanya digunakan pada komponen yang terletak pada satu board, tetapi juga digunakan untuk menghubungkan komponen yang terhubung melalui kabel.
21
Kesederhanaan dan fleksibilitas merupakan ciri utama dari I2C, kedua hal tersebut membuat bus ini mampu menarik penggunaanya dalam berbagai aplikasi. Fitur-fitur signifikan dari bus ini adalah : 1. Hanya 2 jalur/kabel yang dibutuhkan. 2. Tidak ada aturan baud rate yang ketat seperti pada RS232, di bus ini IC yang berperan sebagai master akan mengeluarkan bus clock. 3. Hubungan master/slave berlaku antara komponen satu dengan yang lain, setiap perangkat yang terhubung dengan bus mempunyai alamat unik yang diset melalui software. 4. IC yang berperan sebagai master mengontrol seluruh jalur komunikasi dengan mengatur clock dan menentukan siapa yang menggunakan jalur komunikasi. Jadi IC yang berperan sebagai slave tidak akan mengirim data kalau tidak diperintah oleh Master. 5. I2C merupakan bus yang mendukung multi-master yang mempunyai kemampuan arbitrasi dan pendeteksi tabrakan data. 2.5.1. Mekanisme Hubungan Antar Komponen I2C hanya membutuhkan dua jalur/kabel yaitu SDA dan SCL. SCL/serial clock merupakan jalur clock, digunakan untuk mensinkronkan data transfer antara Master dan Slave dalam I2C bus. SDA/Serial Data merupakan jalur komunikasi data dua arah. SDA dan SCL dihubungkan ke seluruh komponen dalam bus I2C. Selain kedua jalur/kabel masih ada jalur/kabel ketiga yaitu Ground/0 volt serta jalus Vcc/5v untuk menghidupkan perangkat/komponen. Baik SDA maupun SCL merupakan tipe open drain. Maksud dari open drain adalah chip bisa membuat outputnya berlogika 0, tapi tidak bisa membuat outputnya berlogika 1. Sehingga
22
agar mampu memberikan output 1, diperlukan pull up resistor yang dihubungkan ke suplai 5v. Jadi kita harus memberikan resistor pull up pada jalur SDA dan SCL yang ujung satunya dihubungkan ke 5v. Kita hanya memerlukan 1 buah resistor per jalur untuk seluruh I2C bus, tidak perlu satu-persatu untuk tiap perangkat. Ilustrasinya adalah terlihat pada Gambar 2.9.
Gambar 2.9 Ilustrasi SCL dan SDA (Sumber: I2C_Tutoria, 2000) Dari referensi, didapat bahwa ada yang memakai resistor dengan nilai mulai 1k8 (1800 Ohm) sampai 47k (47000 Ohm). Untuk penulisan, berdasar pengalaman cenderung memilih nilai 4k7 (4700 Ohm). Pemilihan nilai lain pun tidak masalah, asal masih dalam rentang tersebut karena berdasar pada spesifikasi bus I2C yang dirilis oleh NXP pada 2001, pull up device tergantung pada bus load. Jika bus load mencapai 200pF, maka pull up bisa berupa resistor, jika bus load antara 200-400pF (fast mode) maka pull up device bisa berupa sumber arus (min 3mA) atau switched resistor circuit. Jika tidak memberikan pull up device (resistor/sumber arus) maka jalur SDA dan SCL akan selalu berlogika rendah, hampir 0 volt, dan I2C bus tidak dapat bekerja. Rumus hukum Ohm : 1. Untuk mengukur besar kuat arus listrik dengan rumus I = Q T
23
keterangan : I = nilai arus Q = nilai muatan listrik T = nilai waktu 2. Untuk mengukur besar tegangan listrik dengan rumus V = I * R keterangan : V = nilai tegangan I = nilai arus R = nilai resistansi Diketahui nilai V = 5 volt, nilai R = 4K7 atau (4700 Ohm) jadi nilai I = V R I= 5 4700 I = 0,00106 A nilai diubah ke mA I = 1,06 mA 2.5.2. Protokol Fisik I2C Ketika master (controller) ingin berkomunikasi dengan slave, master akan mulai mengirim start sequence pada bus I2C. Start sequence adalah salah satu dari dua sequence spesial pada bus I2C, sequence spesial lainnya adalah stop. Start sequence dan stop sequence merupakan tahap spesial dimana merupakan kondisi dimana SDA (jalur data) boleh berubah ketika SCL (jalur clock) dalam kondisi naik (1). Start sequence menandai awal dari transaksi data dengan perangkat slave. Stop sequence menandai akhir transaksi data dengan perangkat slave seperti pada Gambar 2.10.
24
Gambar 2.10 Transaksi pada data SCL dan SDA (Sumber: I2C_Tutoria, 2000) Data ditransfer dalam rangkaian/sequence 8bit. Bit dikirim lewat jalur SDA dimulai dengan MSB (Most Significant Bit). Jalur SCL kemudian dipulsakan naik (1) kemudian turun (0). Tanpa pull-up device, chip tidak bisa mengubah garis ke kondisi naik (1). Untuk setiap 8 bit yang ditransfer, perangkat penerima data mengirim balik bit acknowledge (ACK), jadi ada 9 clock SCL untuk tiap transfer dari 8 bit data. Jika perangkat penerima mengirim balik sebuah low ACK bit (ACK=0) maka perangkat tersebut telah menerima data dan siap menerima data berikutnya. Jika perangkat penerima mengirim balik naik ACK bit (ACK=1) berarti perangkat tersebut tidak bisa lagi menerima data selanjutnya, sehingga master harus mengakhiri transfer data dengan mengirim stop sequence seperti pada Gambar 2.11.
Gambar 2.11 Alamat pengiriman pada SCL dan SDA (Sumber: I2C_Tutoria, 2000) Kecepatan serial clock (SCL) untuk I2C mencapai 100KHz. Untuk yang membutuhkan kecepatan tinggi, ada fast mode dimana clock bisa mencapai 400Khz dan sejak 1998 ada mode kecepatan tinggi dimana clock bisa mencapai 3,4MHz. Untuk aplikasi seperti robot dan modul embedded yang non vital
25
biasanya clock yang digunakan masih dibawah 100KHz. Berdasarkan I2C specification terbaru yang dikeluarkan NXP/Phillips, untuk transmisi data pada clock diatas 1Mhz dibutuhkan delay beberapa uS diantara setiap byte yang ditransfer.