Programmer MCS-51 dengan media MMC - library@petra

73
4 Universitas Kristen Petra 2. TEORI PENUNJANG 2.1 MULTI MEDIA CARD 2.1.1 Deskripsi Umum. Multi Media Card atau lebih dikenal dengan nama MMC adalah sebuah media penyimpanan universal yang umum dipakai untuk berbagai media seperti telepon genggam, PDA, kamera digital MP3 Player dan berbagai peralatan elektronik lainnya. MMC dibuat berbasis removeble flash memory, dimana media penyimpanan dengan basis ini memiliki bentuk fisik kecil, berdaya rendah, non- volatile, tidak butuh tenaga untuk menjaga data yang sudah tersimpan, daya tahan yang besar terhadap temperatur, getaran dan guncangan, serta murah harganya. Sehingga media berbasis flash banyak dipakai sebagai media penyimpanan portable yang mengunakan baterai. Sistem komunikasi dari MMC didasarkan pada 7 pin serial bus yang didesain bekerja pada range tegangan rendah. Model komunikasi ini adalah standar komunikasi yang lebih dikenal dengan nama Multi Media Card mode. Untuk menambah kompabilitas antara MMC dengan pengontrol yang ada, maka MMC menawarakan model komunikasi alternatif yang dibuat berdasarkan standar SPI atau Serial Peripheral Interface. 2.1.1.1 Spesifikasi Fisik MMC Tabel 2.1 Spesifikasi Fisik MMC Sumber: SunDisk Corporation. MultiMediaCard and Reduced-Size MultiMediaCard Product Manual. 28 September 2006, hal 16 <www.sundisk.com/download/ product_manual/mmc.html>

Transcript of Programmer MCS-51 dengan media MMC - library@petra

4Universitas Kristen Petra

2. TEORI PENUNJANG

2.1 MULTI MEDIA CARD

2.1.1 Deskripsi Umum.

Multi Media Card atau lebih dikenal dengan nama MMC adalah sebuah

media penyimpanan universal yang umum dipakai untuk berbagai media seperti

telepon genggam, PDA, kamera digital MP3 Player dan berbagai peralatan

elektronik lainnya. MMC dibuat berbasis removeble flash memory, dimana media

penyimpanan dengan basis ini memiliki bentuk fisik kecil, berdaya rendah, non-

volatile, tidak butuh tenaga untuk menjaga data yang sudah tersimpan, daya tahan

yang besar terhadap temperatur, getaran dan guncangan, serta murah harganya.

Sehingga media berbasis flash banyak dipakai sebagai media penyimpanan

portable yang mengunakan baterai.

Sistem komunikasi dari MMC didasarkan pada 7 pin serial bus yang

didesain bekerja pada range tegangan rendah. Model komunikasi ini adalah

standar komunikasi yang lebih dikenal dengan nama Multi Media Card mode.

Untuk menambah kompabilitas antara MMC dengan pengontrol yang ada, maka

MMC menawarakan model komunikasi alternatif yang dibuat berdasarkan standar

SPI atau Serial Peripheral Interface.

2.1.1.1 Spesifikasi Fisik MMC

Tabel 2.1 Spesifikasi Fisik MMC

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 16<www.sundisk.com/download/ product_manual/mmc.html>

Universitas Kristen Petra

5

Gambar 2.1 Bentuk Fisik MMCSumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 16<www.sundisk.com/download/ product_manual/mmc.html>

2.1.1.2 Pin MMC

Tabel 2.2 Pin MMC

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 16<www.sundisk.com/download/ product_manual/mmc.html>

Universitas Kristen Petra

6

2.1.2 SPI Mode MMC

2.1.2.1 Deskripsi

SPI (Serial Peripheral Interface) mode adalah protokol komunikasi

sekunder dan bersifat optional yang ditawarkan oleh MMC. Mode ini merupakan

bagian dari protokol MMC, yang didesain untuk berkomunikasi dengan channel

SPI (umumnya dijumpai pada beberapa merek microcontroller). Mode ini dipilih

saat pertama kali perintah reset (pertama kali) MMC dihidupkan (CMD 0), dan

mode ini tidak dapat diganti setelah MMC aktif.

Mode SPI hanya mendefinisikan sambungan fisiknya saja, bukan protokol

transfer data secara utuh. Mode SPI MMC tetap mengunakan bagian dari MMC

protokol dan command set-nya. Mode SPI ditujukan untuk pemakaian MMC

dalam jumlah kecil (umumnya satu), dan memiliki transfer rate lebih rendah

daripada protokol MMC.

2.1.2.2 Konsep Interface SPI

SPI adalah sebuah model komunikasi serial sinkron yang awalnya

implementasikan pada beberapa microcontroller Motorola, dan sekarang juga

banyak didapat pada microcontroller lainnya.

Interface SPI Multi Media Card sesuai dengan Host SPI yang ada di pasar.

Seperti halnya device SPI lainnya, MMC SPI terdiri dari empat signal yaitu:

• CS—Host to card Chip Select signal

• CLK—Host to card clock signal

• DataIn—Host to card data signal

• DataOut—Card to Host data signal

Seperti SPI pada umumnya, MMC juga mengimplementasi model byte

transfer. Semua data yang dikirim adalah data-data byte (8-bit) dan selalu

bersesuaian dengan signal CS.

2.1.2.3 Topologi Bus SPI.

Pada mode SPI, card identification and addressing metode(MMC mode)

digantikan oleh chip select signal secara hardware (pin CS), tidak ada lagi

Universitas Kristen Petra

7

perintah broadcast. Untuk setiap perintah, sebuah MMC (slave device) dipilih

dengan memberikan signal (active low) pada pin CS.

Signal pada pin CS harus tetap aktif selama terjadi komunikasi secara SPI

(Command, respond dan data). Pengecualian hanya terjadi pada saat

pemrograman MMC, dimana host dapat mematikan signal CS tanpa

mempengaruhi proses pemrograman.

Pin bi-directional CMD dan DAT (pada mode MMC) digantikan oleh

signal unidirectional DataIn dan Dataout. Dengan demikian hal ini

menghilangkan kemampuan MMC untuk mengerjakan perintah pada saat

membaca atau menulis data. Dan dengan demikian model operasi pembacaan dan

penulisan secara sequential tidak dapat terjadi. SPI mode hanya mendukung

pembacaan dan penulisan single block dan multiple block.

MMC SPI mode tetap memakai 7 signal pin yang sama dengan bus MMC

standar.

Gambar 2.2 Topologi Bus SPI

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 21<www.sundisk.com/download/ product_manual/mmc.html>

Universitas Kristen Petra

8

Tabel 2.3 Konfigurasi Pin SPI Mode MMC

S: power supply; I: input; O: output; PP: push-pull; OD: open-drain; NC: Notconnected (or logical high).

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 69<www.sundisk.com/download/ product_manual/mmc.html>

2.1.2.4 MMC Register

Pada MMC terdapat lima register yaitu OCR, CID, CSD, RCA dan DSR,

dimana tiap register hanya dapat dengan diakses dengan perintah yang

bersesuaian. Register tersebut antara lain:

• Operation Condition Register (OCR) panjangnya 32 bit

• Card Identification Register (CID) panjangnya 128 bit

• Card Specific Data Register (CSD) panjangnya 128 bit

• Relative Card Address Register (RCA) panjangnya 16 bit

• Driver State Register (DSR) panjangnya 16 bit

Dari semua register tersebut hanya OCR, CID dan CSD yang dapat diakses dalam

mode SPI.

1. Operation Condition Register

Operation Condition Register atau dikenal OCR adalah register yang

bersifat read only. OCR memiliki data 32 bit, dimana OCR berfungsi menyimpan

profil tegangan VDD MMC. Sebagai tambahan, register ini menyertakan status

information bit. Dimana status bit ini akan high, saat prosedur power-up MMC

telah selesai.

Universitas Kristen Petra

9

Tabel 2.4 OCR Register

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 24<www.sundisk.com/download/ product_manual/mmc.html>

2. Card Identification Register

Card Identification Register atau CID memiliki panjang 16 Byte atau 128

bit. CID berisi identitas kartu MMC yang unik. Register ini diprogram saat

pembuatan, dan tidak dapat diubah lagi.

Tabel 2.5 CID Register

Universitas Kristen Petra

10

Tabel 2.5 CID Register(Lanjutan)

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 25<www.sundisk.com/download/ product_manual/mmc.html>

3. Card Specific Data Register

Card Specific Data (CSD) Register memiliki panjang 16 Byte atau 128 Bit.

CSD berisi informasi konfigurasi yang diperlukan untuk mengakses MMC.

Contoh model CSD seperti tabel di bawah. Kolom Cell Type menjelaskan

register bagian CSD sebagai read-only (R), one-time programmable (R/W) atau

erasable (R/W/E). pada kolom The Model Depandent tanda (X), menandai

register-register yang nilainya bergantung pada model.

Universitas Kristen Petra

11

Tabel 2.6 CSD Register

Universitas Kristen Petra

12

Tabel 2.6 CSD Register (Lanjutan)

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 28<www.sundisk.com/download/ product_manual/mmc.html>

• READ_BL_LEN: register ini mendeskripsikan seberapa besar blok untuk

membaca data. Besar blok sama dengan 2 READ_BL_LEN . Jadi besar blok data

bervariasi pada range 1,2,4,8,….2048 Byte

Universitas Kristen Petra

13

Tabel 2.7 READ_BL_LEN Register

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 28<www.sundisk.com/download/ product_manual/mmc.html>

• C_SIZE: Register ini digunakan untuk menghitung besar kapasitaas

memori kartu MMC bersama-sama dengan register C_SIZE_MULT dan

READ_BL_LEN. Dimana perhitungannya adalah sebagai berikut:

MEMORY CAPACITY= BLOCKNR*BLOCK_LEN

Dimana:

BLOCKNR=(C_SIZE+1)*MULT

MULT=2C_SIZE_MULT+2, dimana C_SIZE_MULT<8

BLOCK_LEN=2READ_BLOCK_LEN, dimana READ_BLOK_LEN<12

Sehingga nilai maksimum yang mampu dihasilkan MMC adalah

4096*512*2048 = 4 Gbyte. Nilai C-SIZE dan C_SIZE_MUL bergantung pada

kapasitas kartu, misal pada kartu MMC 4MB nilai READ_BLOK_LEN = 512,

C_SIZE bisa dikodekan sebagai 2047 dan C_SIZE_MULT = 0.

• C_SIZE_MULT: register ini digunakan untuk mendefinisikan nilai

MULT(MULT = 2C_SIZE_MLT+2) sebagai salah satu faktor dalam perhitungan besar

kapasitas MMC.

Tabel 2.8 C_SIZE_MULT Register

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 33<www.sundisk.com/download/ product_manual/mmc.html>

Universitas Kristen Petra

14

• FILE_FORMAT_GRP: register ini menunjukan grup dari register file

format yang dipilih.

• COPY: Menandai kartu MMC sebagai original (0) atau non-original (1),

setelah di-set sebagai non-original, bit ini tidak dapat lagi di-set sebagai original.

Definisi dari original dan non-original adalah tergantung dari aplikasi dan tidak

mengubah karakteristik kartu.

• PERM_WRITE_PROTECT: Secara permanent melindungi semua isi dari

kartu MMC dari penulisan ulang dan penghapusan data (semua perintah menulis

dan menghapus kartu dimatikan secara permanent). Nilai default-nya adalah 0

(tidak permanent write protected).

• TMP_WRITE_PROTECT: Secara sementara melindungi semua isi dari

kartu MMC dari penulisan ulang dan penghapusan data (semua perintah menulis

dan menghapus kartu di matikan sementara). Bit ini dapat di-set dan di-reset. Nilai

default-nya adalah 0 (tidak write protected).

• FILE_FORMAT: menunjukkan file format dari kartu MMC

Tabel 2.9 FILE_FORMAT_GRP Register

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 35<www.sundisk.com/download/ product_manual/mmc.html>

Untuk lebih jelasnya deskripsi dari tiap register MMC dapat dilihat pada manual

MMC.

2.1.3. SPI Bus Protocol

Bila mode MultiMediaCard didasarkan pada Command dan data bit

streams (yang diaktifkan dengan start bit dan dimatikan dengan stop bit), mode

SPI adalah Byte oriented. Semua perintah dan data block adalah susunan 8 bit

Universitas Kristen Petra

15

Byte dan tiap byte-nya diselaraskan dengan signal CS (yang panjangnya adalah

multiple 8 clock cycle).

Mirip dengan MMC protocol, SPI memiliki Command, response dan data

block tokens. Host (master) mengendalikan semua komunikasi antara Host dan

kartu MMC. Host memulai semua transaksi dengan memberikan signal low pada

pin CS MMC. Sifat respon dari dari mode SPI berbeda dari mode MMC pada tiga

aspek berikut :

• Kartu yang dipilih selalu merespon tiap perintah.

• Tambahan (8,16 dan 40 bit) struktur respon digunakan

• Bila kartu mendapat masalah dalam menerima data, maka akan merespon

dengan error respond (mengantikan data yang ditunggu) bukan dengan

time-out seperti pada MMC mode.

Hanya operasi single dan multiple block read/write yang didukung oleh

SPI mode (sequntial mode tidak didukung). Sebagai tambahan pada Command

response, tiap data block yang dikirim pada kartu (saat operasi penulisan) akan

direspon dengan special data respond. Sebuah data block dapat sebesar satu

sector kartu atau sekecil satu byte. Operasi Partial block read/write diaktifkan

oleh pilihan kartu yang terdapat pada CSD register.

2.1.3.1 Mode Selection

MMC saat menyala akan masuk ke mode MMC. Untuk memasuki mode

SPI maka CS diberi signal low pada saat menerima Command reset (CMD0).

Memilih SPI mode tidak hanya terbatas pada idle state (kondisi yang dimasuki

kartu saat setelah dihidupkan) saja. Setiap kali kartu menerima CMD0 (termasuk

saat keadaan tidak aktif), CS signal dibaca.

Bila kartu mengenali bahwa MMC mode diperlukan (CS signal high),

maka kartu MMC tidak akan merespon Command dan akan tetap pada MMC

mode. Bila SPI mode diperlukan (CS signal low), kartu akan berpindah ke mode

SPI dan merespon dengan respon R1 dari mode SPI.

Satu-satunya cara untuk dapat kembali ke MMC mode adalah dengan

Power cycle (menyalakan dan mematikan supply), dan semua state machine mode

Universitas Kristen Petra

16

MMC tidak diperhatikan. Semua perintah MMC yang didukung dalam SPI mode

selalu dapat dipakai.

2.1.3.2 Bus Transfer Protection

CRC bit melindungi semua semua yang ditransfer dari MMC pada bus.

Pada SPI mode, kartu menawarkan mode tanpa proteksi (yang memungkinkan

sistem dapat dibangun dengan data link) yang dapat diandalkan tanpa

memerlukan hardware atau firmware yang diperlukan untuk mengimplementasi

fungsi penghasil dan verifikasi dari CRC.

Interface SPI diinisialisasi dalam SPI mode. Tetapi reset Command

(CMD0) yang diperlukan untuk berpindah ke SPI mode, diterima oleh kartu saat

berada pada mode MMC, sehingga harus memiliki CRC yang valid.

Karena CMD0 tidak memiliki argumen, isi dari semua bagian respon

termasuk bagian CRC-nya, selalu konstan dan tidak perlu dikalkulasi ulang saat

dipakai. Reset Command yang valid adalah: 40H, 00H, 00H, 00H, 00H, 95H.

Host dapat menyalakan dan mematikan fungsi CRC dengan Command

CRC_ON_OFF(CMD59)

2.1.3.3 Data Read

SPI mode mendukung model pembacaan single block dan mulitple block,

perbedaan yang paling utama dari SPI dan MMC mode adalah bahwa respon dan

data keduanya dikirim ke Host melalui DataOut signal. Oleh karena itu, respon

kartu terhadap STOP_COMMAND mungkin akan berakhir mendadak dan

mengantikan data block terakhir.

Gambar 2.3 Single Block Read

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 71<www.sundisk.com/download/ product_manual/mmc.html>

Universitas Kristen Petra

17

Unit dasar dari data transfer adalah block yang mana ukuran maksimum-

nya ditentukan oleh CSD (READ_BL_LEN). Jika READ_BL_PARTIAL di-set,

block dengan ukuran lebih kecil yang memulai dan mengakhiri alamat akan

tertampung seluruhnya dalam satu block fisik (seperti yang didefinisikan oleh

READ_BL_LEN) juga mungkin terkirim. CRC akan muncul pada tiap akhir block

untuk memastikan integritas data yang dikirim. CMD17

(READ_SINGLE_BLOCK) menjalankan pembacaan single block.

CMD18 (READ_MULTIPLE_BLOCK) memulai pengiriman beberapa

block berurutan. Jumlah block yang dikirim dalam operasi multiple block tidak

didefinisikan. Kartu akan terus mengirim data block sampai stop transmission

Command diberikan.

Gambar 2.4 Mulitiple Block Read

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 72<www.sundisk.com/download/ product_manual/mmc.html>

Dalam kasus penerimaan data salah, kartu tidak akan mengirimkan data,

sebagai gantinya error token akan dikirimkan ke Host.

Gambar 2.5 Data Error pada Read Operation

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 72<www.sundisk.com/download/ product_manual/mmc.html>

Universitas Kristen Petra

18

Operasi pembacaan multiple block pun dapat dimatikan dengan cara yang

sama (oleh data error) dengan mengantikan data block dimanapun pada

sequence. Host harus menghentikan dengan mengirimkan stop transmission

Command.

Jika Host mengirimkan stop transmission Command tidak dalam sequence

yang, tepat maka akan dianggap sebagai illegal Command.

2.1.4 Reset Sequence

MMC memerlukan reset sequence tertentu. Setelah power on reset atau

pun software reset (CMD0), kartu memasuki kondisi idle state. Pada kondisi ini

perintah dari Host yang legal hanyalah CMD1 (SEND_OP_COND) dan CMD58

(READ_OCR).

Host harus memilih kartu dengan cara terus-menerus mengirim CMD1

sampai “in-idle state” bit pada kartu merespon (dengan menujukan bit di-set low),

bahwa kartu sudah menyelesaikan proses inisialisasinya dan siap untuk perintah

selanjutnya.

Tetapi pada mode SPI, CMD1 tidak memiliki operand dan tidak memberi

nilai balik isi dari OCR, tetapi Host dapat mengunakan CMD58 (khusus pada

mode SPI) untuk membaca isi dari register.

Pengunaan dari CMD58 tidak hanya terbatas pada tahap inisialisasi saja,

tetapi dapat dipakai tiap saat. Host harus memilih kartu dengan cara terus-menerus

mengirim CMD1 sampai “in-idle state” bit pada kartu merespon dengan

menujukkan bit di-set low, kartu sudah menyelesaikan proses inisialisasinya dan

siap untuk perintah selanjutnya.

2.1.5 Clock Control

SPI bus dapat digunakan oleh Host SPI untuk mengatur kartu sehinga

memasuki energi saving mode atau untuk mengatur data flow (untuk menghindari

kondisi under run atau over run pada bus.) Host dapat mengganti clock frekwensi

atau pun mematikannya. Tetapi ada beberapa larangan yang harus diperhatikan.

• Frekwensi bus dapat diganti tiap saat dengan batasan maksimum

data transfer frekwensi MMC.

Universitas Kristen Petra

19

• Clock harus berjalan saat kartu mengeluarkan data dan saat

menerima respon.

Setelah transaksi SPI terakhir, Host perlu memberikan delapan clock

cycles sehingga kartu dapat menyelesaikan proses sebelum mematikan clock.

Keadaan CS signal tidak diperhatikan saat memberikan kedelapan signal clock.

Variasi transaksi delapan clock signal tersebut sebagai berikut:

• Command/ respond setelah card respon berakhir, dan CS tidak

diperhatikan.

• Read data setelah end bit block data terakhir.

• Write data setelah menerima CRC status.

2.1.6 Error Condition

Berisi penjelasan-penjelasan tentang kondisi error.

2.1.6.1 CRC Dan Illegal Command.

CRC bit menyediakan proteksi optional untuk semua Command. Bila

alamat MMC dicek salah, maka COM_CRC_ERROR bit akan di-set pada respon

kartu. Kemiripan terjadi saat Command ilegal diterima, maka

ILLEGAL_COMMAND bit akan di-set pada respon kartu.

Tipe-tipe Command ilegal antrara lain:

• Command milik kelas yang tidak didukung karu MMC (contoh

Interrupt dan I/O Commands).

• Command tidak didukung Mode SPI.

• Command tidak terdefinisi.

2.1.6.2 Read, Write Dan Erase Timeout

Periode waktu setelah terjadi timeout untuk read write dan erase

tergantung pada kartu. Dan biasanya sepuluh kali lebih lama dari pada akses

program typical. Sebuah kartu akan menyelesaikan sebuah perintah pada sebuah

periode waktu tertentu atau akan mengembalikan error massage. Bila Host tidak

menerima respon apapun pada periode time pot yang diberikan, maka dapat

Universitas Kristen Petra

20

dipastikan kartu tidak akan merespon lagi dan harus mencoba di-recovery (misal

reset modul). Waktu Akes dan program typical adalah sebagai berikut .

Tabel 2.10 Timeout Condition

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 76<www.sundisk.com/download/ product_manual/mmc.html>

2.1.7 SPI Command Set

Berisi penjelasan tentang Command MMC.pada SPI mode.

2.1.7.1 Command Class.

SPI Command dibagi menjadi beberapa kelas dan tiap kelas mendukung

beberapa set fungsi kartu sesuai tabel 2.11. MMC mendukung optional Command

set yang sama pada kedua mode komunikasinya. Command class yang tersedia

dan Command class yang didukung untuk specific class berbeda pada kedua mode

Tabel 2.11 Command Class Pada SPI Mode

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 77<www.sundisk.com/download/ product_manual/mmc.html>

Universitas Kristen Petra

21

2.1.7.2 Command Description

Pada tabel dijelaskan detail diskripsi tiap Command SPI mode. “yes” pada

tabel menjelaskan bahwa Command didukung pada mode MMC. Bila Command

tidak membutuhkan argument, nilai dari field-nya diisi nol. Reserved pada SPI

Command juga adalah reserved pada MMC mode Command

Tabel 2.12 SPI Command Description

Universitas Kristen Petra

22

Tabel 2.12 SPI Command Description (Lanjutan)

Universitas Kristen Petra

23

Tabel 2.12 SPI Command Description (Lanjutan)

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 77<www.sundisk.com/download/ product_manual/mmc.html>

2.1.8 Responses

Ada beberapa jenis respon dan semuanya dikirim MSB dulu.

2.1.8.1 R1 Format

Kartu selalu mengirimkan respon ini tiap menerima Command dengan

perkecualian SEND_STATUS Command. Panjangnya satu byte, MSB selalu nol

dan bit lainnya adalah indicator error (1=error).

Gambar 2.6 Format Respon R1

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 80<www.sundisk.com/download/ product_manual/mmc.html>

Universitas Kristen Petra

24

Tabel 2.13 Respon R1

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 80<www.sundisk.com/download/ product_manual/mmc.html>

2.1.8.2 R1b Format

Respon ini identik dengan R1 format dengan tambahan busy signal. Busy

signal token dapat angka byte sembarang. Nilai Nol menunjukan kartu sibuk dan

bukan nol, kartu siap untuk Command selanjutnya.

2.1.8.3 R2 Format

Kartu mengirimkan respon sepanjang dua byte sebagai respon dari

SEND_STATUS Command

Gambar 2.7 Format Respon R2

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 81

<www.sundisk.com/download/ product_manual/mmc.html>

Universitas Kristen Petra

25

Isi dari byte pertama sama dengan R1 response dan isi dari byte ke dua

sesuai tabel:

Tabel 2.14 Respon R2

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 81<www.sundisk.com/download/ product_manual/mmc.html>

2.1.8.4 R3 format

Kartu mengirimkan respon ini saat READ_OCR command diterima

panjang respon lima byte. Struktur dari byte pertama sama dengan respon R1 dan

empat byte selanjutnya berisi OCR register.

Gambar 2.8 Format Respon R3

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 81<www.sundisk.com/download/ product_manual/mmc.html>

2.1.8.5 Data response

Tiap data block yang di tulis ke MMC di-acknowlaged dengan data

respon. Panjangnya satu byte dan format-nya sebagai berikut:

Universitas Kristen Petra

26

Gambar 2.9 Format Data Respon

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 82<www.sundisk.com/download/ product_manual/mmc.html>

Arti dari status bit di definisikan sebagai berikut:

• 010 data di terima

• 101 data ditolak karena CRC error

• 110 data ditolak karena write error

Dalam kasus error (pada saat write multiple block operation), Host harus

membatalkan proses dengan mengirimkan stop trasmission. Host dapat mengirim

CMD13(SEND_STATUS) untuk mengetahui kesalahan apa yang terjadi.

2.1.9 Data Token

Command write dan read memiliki data transfer terkait dengan data token.

Data dikirim dan diterima melalui data token. Semua data dikirim MSB terlebih

dahulu. Data token panjangnya adalah 4 sampai (N+3) byte (panjang data block

di-setting dengan SET_BLOCK_LENGTH Command) dengan format sebagai

berikut:

• Byte pertama start block

• Byte dua sampai (N+1) user data

• Dua byte terakhir 16 bit CRC

Tabel 2.15 Start Data Block Token Format

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 83<www.sundisk.com/download/ product_manual/mmc.html>

Universitas Kristen Petra

27

2.1.10 Data ErrorToken

Bila proses membaca gagal dan kartu tidak dapat menyediakan data yang

diperlukan, maka data error token akan dikirim. Panjangnya satu byte dengan

format sebagai berikut:

Gambar 2.10 Data Error Token

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 83<www.sundisk.com/download/ product_manual/mmc.html>

2.1.11 Clearing Status Bit

Pada SPI mode, status bit dikirim pada Host dengan tiga format R1, R2

dan data error token (bit yang sama mungkin muncul pada beberapa tipe respon

yang berbeda, mis: card ecc failed). Error bit akan di-clear setelah dibaca oleh

Host (tanpa memperhatikan format responnya). Keadaan indikator dapat di-clear

karena pembacaan atau menurut keadaan kartu.

Tipe:

• E: error bit

• S: status bit

• R: dibaca dan di set untuk Command respon yang sebenarnya

• X: dibaca dan di-set saat eksekusi Command. Host harus mengirim

status Command untuk melihat bit ini.

Kondisi clear :

• A: tergantung pada state kartu

• C: clear oleh pembacaan

Universitas Kristen Petra

28

Tabel 2.16 SPI Mode Status Bit

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 83<www.sundisk.com/download/ product_manual/mmc.html>

Universitas Kristen Petra

29

2.1.12 SPI Bus Timing Diagram

Semua timing diagram mengunakan simbol-simbol dengan penjelasan

seperti dalam tabel:

Tabel 2.17 Singkatan Dalam SPI Bus Timing

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 83<www.sundisk.com/download/ product_manual/mmc.html>

Host harus tetap menjalankan clock selama Ncr clock cycle setelah respon

kartu diterima. Batasan ini berlaku untuk Command dan data response token.

2.1.12.1 Command Dan Response

• Host Command to Card Response—Card is Ready

Gambar 2.11 Host Command to Card Response, Card is Ready

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 85<www.sundisk.com/download/ product_manual/mmc.html>

• Host Command to Card Response--Card is Busy

Timing diagram gambar mengambarkan Command response saat

responnya tipe R1b contoh, SET_WRITE_PROT dan ERASE.

Saat kartu men-signal busy, Host dapat melepasnya tiap waktu dengan

memberi signal high pada CS. Kartu akan melepas data out satu clock setelah CS

rise high. Untuk mengecek kartu apakah masih sibuk, kartu harus dipilih lagi

Universitas Kristen Petra

30

dengan memberi signal low pada CS. Kartu akan meneruskan signal busy, satu

clock setelah CS falling edes

Gambar 2.12 Command Response Transaction Timing, Card is Busy

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 86<www.sundisk.com/download/ product_manual/mmc.html>

• Card Response to Host Command

Gambar 2.13 Card Response to Next Host Command Timing

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 86<www.sundisk.com/download/ product_manual/mmc.html>

2.1.12.2 Data Read

• Card Response to Host Command

Gambar 2.14 Single Block Read Transaction Timing

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 86<www.sundisk.com/download/ product_manual/mmc.html>

• Multiple Block Read— Stop transmission is sent between blocks

Gambar 2.15 Multiple Block Transaction Timing (no data overlap)

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 86<www.sundisk.com/download/ product_manual/mmc.html>

Universitas Kristen Petra

31

Timing untuk melepas CS signal setelah kartu merespon sama dengan

Command respon standar.

• Multiple Block Read—Stop transmission is sent within a block

Gambar 2.16 Multiple Block Transaction Timing (data overlap)

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 86<www.sundisk.com/download/ product_manual/mmc.html>

Stop transmition Command dapat dikirim secara asyncronus terhadap data

yang keluar dari kartu dan dapat menyebebkan overlap data block. Pada kasus

seperti ini, kartu akan berhenti mengeluarkan data dan mengeluarkan response

token. Delay antara Command dan respon adalah standart Ncr clock.

Timing untuk melepas CS signal setelah kartu merespon sama dengan

Command respon standar.

• Reading the CSD Register

Bagian ini mendeskripsikan SEND_CSD Command. Nilai time out antara

respon dan data block adalah Ncx karena nilai Nac tidak diketahui.

Gambar 2.16 Read CSD Register Timing

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 86<www.sundisk.com/download/ product_manual/mmc.html>

2.1.13 Timing Value

Berikut adalah tabel dari nilai timing dan definisinnya:

Universitas Kristen Petra

32

Tabel 2.18 Timing Constants Definitions

Sumber: SunDisk Corporation. MultiMediaCard and Reduced-SizeMultiMediaCard Product Manual. 28 September 2006, hal 87<www.sundisk.com/download/ product_manual/mmc.html>

2.2 Microcontroller AVR ATmega32.

AVR adalah microcontroller 8-bit RISC yang dikeluarkan oleh Atmel.

Varian dari Atmel AVR yang digunakan pada Tugas Akhir ini adalah ATmega32.

ATmega32 memiliki arsitektur RISC sehingga mampu mengeksekusi perintah

hingga 1 MIPS per MHz atau 1 perintah tiap cycle mesin, dan memiliki fitur-fitur

seperti internal clock, internal PWM, internal ADC dan berbagai fitur lainya

membuat ATmega32 cocok digunakan dalam aplikasi single chip.

ATmega32 dipilih untuk pembuatan Tugas Akhir ini karena memiliki

fitur-fitur seperti berikut:

• Non volatile program dan data memori

- 32K byte flash memory

• Fitur-fitur periperal

- SPI interface

- I2c Interface

• Fitur-fitur microcontroller

- internal clock

- 32 pin programmable I/O

2.2.1 Konfigurasi Pin

Konfigurasi pin ATmega 32 adalah seperti pada gambar:

Universitas Kristen Petra

33

Gambar 2.17 Pin AVR

Sumber: Atmel Corporation. ATMega 32 Datasheet. 28 September 2006, hal 2<http://www.atmel.com/dyn/resources/prod_documents/doc2487.pdf>

VCC : supply digital microcontroller

GND : Ground

Port A,B,C,D : 8-bit bidirectional I/O dengan internal pull up (dapat di-setting

untuk tiap pin). Port output buffer memiliki output karakteristik

yang sama untuk sink dan source. Sebagai input port akan

mengeluarkan arus (bila secara external di-pull low) dan secara

internal pull up resistor aktif. Port akan masuk kondisi tri-state

saat di-reset (walaupun clock tidak aktif). Dan tiap port memiliki

beberapa fungsi khusus tertentu.

XTAL1 : input inverting ampifier oscillator dan input internal clock

XTAL2 : output inverting ampifier oscillator.

RESET : input reset, bila pin diberi signal low lebih dari nilai minimum

lebar pulsa, maka akan terjadi reset (walaupun clock tidak aktif).

AVCC : merupakan pin untuk supply tegangan untuk port A dan untuk

fungsi A/D converter. Harus dipasangkan dengan VCC secara

external (walaupun fungsi ADC tidak dipakai). Bila fungsi ADC

dipakai, maka harus dihubungkan dengan VCC melalui low pass

filter.

AREF : pin untuk referensi tegangan AD converter.

Universitas Kristen Petra

34

2.2.2. I/O Port

Semua port AVR memiliki true write-read-modify functionality. Artinya

saat dipakai sebagai general I/O, tiap pin dapat diatur arah dan nilainya tanpa

menggangu pin yang lainnya. Tiap pin dari AVR punya karakteristik drive output

sink dan source yang sama. Dan tiap pin mampu men-drive sebuah LED secara

langsung. Tiap pin memiliki pull up resistor yang dapat diatur.

Tiap pin memiliki tiga register yang dapat diatur. DDxn pada DDRx ,

PORTxn pada PORTx dan PINxn pada PINx, dimana ‘x’ adalah port yang

diinginkan dan ‘n’ adalah pin yang diinginkan (mis PINa1 adalah register PIN

milik port A bit ke satu).

DDxn pada DDRx digunakan untuk mengatur arah dari pin yang

bersangkutan. Bila di-set, maka pin akan berfungsi menjadi output, dan bila di-

clear, maka pin akan berfungsi sebagai input.

Bila PORTxn di-set saat pin difungsikan sebagai input, maka pull up

resistor akan aktif. PORTxn di-clear saat sebagai input, maka pull up akan mati.

Jika PORTxn di-set saat pin difungsikan sebagai output, maka pin akan

bernilai high (‘1’), dan bila di-clear, maka pin akan bernilai low (‘0’).

Pada umumnya saat memindah dari tri-state ({DDxn, PORTxn} = 0,0)

menjadi nilai output high ({DDxn, PORTxn} = 1,1), akan ditemui keadaan input

pull up ({DDxn, PORTxn} = 0,1) atau output low ({DDxn, PORTxn} = 1,0).

Biasanya keadan pull up dapat diterima karena pada lingkungan high impedance

tidak tampak bedanya (antara drive high dan pull up). Bila tidak, maka PUD pada

SFIOR dapat di-set untuk mematikan semua pull up. Secara ringkas tentang

register I/O dapat dilihat pada tabel:

Tabel 2.19 Konfigurasi Pin Port

Sumber: Atmel Corporation. ATMega 32 Datasheet. 28 September 2006, hal 2<http://www.atmel.com/dyn/resources/prod_documents/doc2487.pdf>

Universitas Kristen Petra

35

2.2.2.1 Fungsi Khusus Pin.

Hampir semua pin pada AVR memiliki fungsi-fungsi lain selain sebagai

I/O. Dari semua fungsi khusus yang dimiliki oleh pin-pin pada ATmega 32, fungsi

yang dimanfaatkan dalam Tugas Akhir ini antara lain

1. SPI pada Port B bit 4,5,6,7

Ø Port B bit 4 (SS):

Slave select input. Saat SPI di-set sebagai slave, pin ini

akan menjadi input (apapun nilai dari DDB4). Saat SPI di-set

master arah dari pin ini diatur oleh DDB4 (saat menjadi slave).

Walaupun pin dipaksa menjadi input, tetapi pull up tetap diatur

oleh PORTB4.

Ø Port B bit 5(MOSI):

Master data Out Slave data In. Saat SPI di-set sebagai

slave, data dari master masuk melalui pin ini (karena itu keadaan

pin ini selalu input). Saat di-set sebagai master, data keluar dari pin

ini ke slave device (dan data direction dapat diatur dengan

DDRB5). Saat di-set sebagai Slave, pull up tetap dapat diatur oleh

PORTB5.

Ø Port B bit 6(MISO):

Master data In Slave data Out. Pada saat SPI di-set sebagai

master, pin ini akan selalu menjadi input (apapun nilai dari

DDRB6). Saat di-set sebagai slave, data direction dari pin ini

diatur oleh PORTB6.

Ø Port B bit 7(SCK):

Serial Clock. Pin ini menjadi output saat, di-set sebagai

master, Data direction dapat diatur oleh DDRB7, dan menjadi

input, saat di-set sebagai slave (apapun nilai dari DDRB7). Saat di-

set sebagai input oleh SPI, pull up tetap dapat diatur oleh PORTB7

Universitas Kristen Petra

36

2. Two Wire Serial Interface (I2c) pada Port C bit 0 dan 1.

Ø Port C bit 0(SCL):

Two wire serial interface clock. Saat TWEN pada TWCR

di-set, maka PC0 putus dari port dan menjadi serial clock I/O

(untuk two wire interface). Pada pin ini ada spike filter untuk

menekan spike lebih pendek dari 50ns (pada signal input). Pin

dikendalikan secara open drain dengan limitasi slew rate. Saat

dipakai dalam mode TWSI, pull up tetap dapat diatur oleh

PORTC0.

Ø Port C bit 1(SDA):

Two wire serial interface data. Saat TWEN pada TWCR

di-set, maka PC1 putus dari port dan menjadi serial data I/O untuk

two wire interface. Pada pin ini ada spike filter untuk menekan

spike lebih pendek dari 50ns (pada signal input). Pin dikendalikan

secara open drain dengan limitasi slew rate. Saat dipakai dalam

mode TWSI, pull up tetap dapat diatur oleh PORTC1.

2.2.3 ATmega32 SPI

SPI ATmega 32 memungkinkan transfer data pada kecepatan tinggi secara

sinkron dengan device SPI lainnya. Secara khusus koneksi SPI ATmega 32

memiliki fitur-fitur seperti:

• Full-duplex, three-wire synchronous data transfer

• Operasi sebagai Master atau Slave

• Pilihan transfer data MSB dahulu atau LSB dahulu

• Tujuh pilihan bit rate

• End of transmition interupt flag

• Write collision flag

• Double speed (ck/2) master SPI mode.

Blok diagram dari SPI ATmega 32 dapat dilihat pada gambar :

Universitas Kristen Petra

37

Gambar 2.18 Blok Diagram SPI

Sumber: Atmel Corporation. ATMega 32 Datasheet. 28 September 2006, hal 133<http://www.atmel.com/dyn/resources/prod_documents/doc2487.pdf>

Model koneksi dari SPI dapat dilihat pada gambar 2.18, sistem terdiri dari

2 shift register dan sebuah master clock generator. Master SPI memulai koneksi

dengan menarik pin SS low. Master dan slave menyiapkan data yang akan

dikirimkan pada shift register yang bersangkutan. Master menghasilkan clock

untuk melakukan pertukaran data. Data selalu keluar dari master ke salve melalui

pin MOSI, dan data dari slave keluar masuk ke master selalu melalui pin MISO.

Saat menjadi master, pin SS harus diatur secara manual oleh software

untuk memulai koneksi. Setelah selesai, master dapat memulai pengiriman data

dengan mengirimkan data ke SPI data register, dan memulai SPI clock generator.

Setelah satu byte data dikirimkan ke salve, maka clock generator berhenti dan

menyalakan end of trasmission flag (SPIF). Bila SPI interrupt (SPIE) pada SPDR

dinyalakan, maka akan terjadi interrupt.

Universitas Kristen Petra

38

Gambar 2.19 Interkoneksi SPI

Sumber: Atmel Corporation. ATMega 32 Datasheet. 28 September 2006, hal 133<http://www.atmel.com/dyn/resources/prod_documents/doc2487.pdf>

Sistem single buffer pada bagian transmit dan dobel buffer pada bagain

receive. Artinya data harus sudah terkirim semua, sebelum data baru dapat masuk

dalam SPI data register. Dan data harus sudah dibaca, sebelum data yang baru

selesai masuk. Pin dari SPI saat SPI diaktifkan dapat dilihat pada tabel:

Tabel 2.20 SPI Pin Override

Sumber: Atmel Corporation. ATMega 32 Datasheet. 28 September 2006, hal 133<http://www.atmel.com/dyn/resources/prod_documents/doc2487.pdf>

2.2.3.1 Fungsi Pin SS Pada Master Mode

Saat SPI di-set sebagai master (MSTR dalam SPCR di-set), arah dari pin

SS dapat diatur. Bila di-set sebagai output (pada master mode), maka pin SS akan

dianggap sebagai pin output normal. Dan nilainya tidak mempengaruhi sistem

SPI. Umumnya pin ini hanya berfungsi untuk men-drive slave device.

Bila pin SS diatur sebagai input (pada saat menjadi master), maka pin ini

harus ditahan high untuk menjaga koneksi sebagai master. Bila pin SS di-drive

low (saat menjadi input dalam master mode), maka akan dianggap ada master

device lain yang memilih device dan mau meminta atau mengirim data. Untuk

menghindari kesalahan bus, maka sistem SPI akan melakukan:

Universitas Kristen Petra

39

• MSTR pada SPCR di-clear, sehingga device menjadi slave, dan karena

device menjadi slave, maka MOSI dan SCK menjadi input.

• SPIF flag pada SPSR di-set, sehingga bila SPI interrupt dinyalakan, dan I-

bit pada SREG interrupt aktif, maka akan terjadi interrupt.

Bila memasuki slave mode, maka user harus mengubah register-nya

secara manual untuk kembali memasuki master mode.

2.2.3.2 Register SPI

SPI memiliki tiga Register SPDR, SPCR dan SPSR.

Ø SPCR

SPCR atau SPI Control Register. Register ini memiliki panjang 8

bit isi dari register ini dapat dilihat pada gambar:

Gambar 2.20 Figur SPCR Register

Sumber: Atmel Corporation. ATMega 32 Datasheet. 28 September 2006, hal 136<http://www.atmel.com/dyn/resources/prod_documents/doc2487.pdf>

• Bit 7 SPIE : SPI Interrupt Enable.

Bit ini menyebabkan Interrupt dieksekusi, bila bit SPIF di SPSR

dan global interrupt enable di SREG di-set.

• Bit 6 SPE : SPI Enable

Bila bit ini di-set, maka SPI akan aktif. Bit ini harus diaktifkan saat

mengunakan operasi SPI.

• Bit 5 DORD : Data Order

Bila DORD di-set , maka LSB dari data akan dikirim lebih dulu

Bila DORD di-clear, maka MSB dari data akan dikirim lebih dulu

• Bit 4 MSTR : Master Slave Select

Bila bit di set maka akan memasuki master SPI mode, dan bila di-

clear, akan memasuki slave SPI mode. Bila pin SS sebagai input dan

diberi input-an low, maka MSTR akan di-clear dan SPIF pada SPSR akan

Universitas Kristen Petra

40

di-clear. MSTR harus di-set ulang secara manual untuk memasuki master

mode.

• Bit 3 CPOL : Clock Polarity

Bila bit ini di-set, maka SCK akan high (saat idle), dan bila di-

clear, maka SCK akan low saat Idle. Secara jelas dapat dilihat pada tabel :

Tabel 2.21 Fungsi CPOL

Sumber: Atmel Corporation. ATMega 32 Datasheet. 28 September 2006, hal 137<http://www.atmel.com/dyn/resources/prod_documents/doc2487.pdf>

• Bit 2 CPHA : Clock Phase

Bit ini mengatur apakah data di-sampling saat SCK leading atau

trailing

Tabel 2.22 Fungsi CPHA

Sumber: Atmel Corporation. ATMega 32 Datasheet. 28 September 2006, hal 137<http://www.atmel.com/dyn/resources/prod_documents/doc2487.pdf>

• Bit 1,0 SPR1,SPR0 :SPI Clock Rate Select 1 dan 0

Bit ini digunakan untuk mengatur clock rate SCK master. Bit ini

tidak dipakai saat menjadi Slave. Hubungan antara Oscillator Clock fosc

dan SCK dapat dilihat pada tabel :

Tabel 2.23 Relasi SCK dan Oscilator Frekwensi

Sumber: Atmel Corporation. ATMega 32 Datasheet. 28 September 2006, hal 137<http://www.atmel.com/dyn/resources/prod_documents/doc2487.pdf>

Universitas Kristen Petra

41

Ø SPSR

SPSR atau SPI Status Register. Panjang register 8 bit, lebih

jelasnya dapat dilihat pada gambar:

Gambar 2.21 Figur SPSR Register

Sumber: Atmel Corporation. ATMega 32 Datasheet. 28 September 2006, hal 138<http://www.atmel.com/dyn/resources/prod_documents/doc2487.pdf>

• Bit 7 SPIF : SPI Interrrupt Flag.:

Saat selesai mengirim data, SPIF di-set. Bila SPIE dan global

interrupt di-set, maka akan terjadi interrupt. Bila pin SS di-set input (saat

SPI master dan diberi input-an low), maka bit ini akan di-set. SPIF akan

di-clear oleh hardware saat interrupt yang bersangkutan dieksekusi. SPIF

juga akan di-clear (saat SPSR dibaca dengan SPIF di-set), kemudian

mengakses SPDR.

• Bit 6 WCOL : Write Colision Flag:

WCOL akan di-set saat SPDR ditulis (saat mengirim data). WCOL

akan di-clear (saat membaca SPSR), lalu mengakses SPDR.

• Bit 5-1 : reserved BIT:

Bit ini reserved dalam AT mega 32 dan nilai bit ini akan selalu

terbaca ‘0’.

• Bit 0 SPI2X : Double SPI speed bit

Saat bit ini di-set saat dalam Master mode, maka kecepatan SCK

SPI akan digandakan.

Ø SPDR

SPDR atau SPI data register, digunakan untuk komunikasi antara

register file dan SPI shift register. Bila data ditulis ke SPDR, berarti data

akan dikirim keluar dari shift register, dan bila SPDR dibaca maka

menyebabkan shift register receive buffer dibaca.

Universitas Kristen Petra

42

2.2.4 ATmega32 Two Wire Serial Interface

TWI pada ATmega 32 mampu dihubungkan dengan lebih dari 128 device

berbeda. TWI hanya membutuhkan 2 koneksi untuk berkomunikasi (SDA untuk

data dan SCL untuk clock). Tiap device yang dihubungkan pada TWI memiliki

address sendiri-sendiri, dan mekanisme untuk melakukan hubungan dengan TWI

bus. Secara lengkap keunggulan dari TWI ATmega 32 adalah

• Operasi sebagai master atau slave

• Operasi sebagai receiver atau transmitter

• 7 bit address mampu digunakan sampai 128 device

• 400 KHz data transfer rate

• Noise Supression dan spike rejection pada bus

Bentuk koneksi dari bus seperti pada gambar :

Gambar 2.22 Interkoneksi TWI.

Sumber: Atmel Corporation. ATMega 32 Datasheet. 28 September 2006, hal 169.<http://www.atmel.com/dyn/resources/prod_documents/doc2487.pdf>

2.2.4.1 Modul TWI

Secara internal TWI terdiri dari beberapa sub modul. Secara jelas dapat

dilihat pada gambar :

Universitas Kristen Petra

43

Gambar 2.23 TWI Modul Overview

Sumber: Atmel Corporation. ATMega 32 Datasheet. 28 September 2006, hal 176.<http://www.atmel.com/dyn/resources/prod_documents/doc2487.pdf>

• SCL dan SDA

Pin ini menghubungkan TWI AVR dengan bagian MCU lainnya. Output

driver-nya memiliki slew rate control untuk memenuhi kriteria TWI. Input driver-

nya memiliki spike filter (dapat digunakan menekan spike lebih pendek dari

50ns). Pull up pin internal tetap dapat diakses secara manual dan dalam beberapa

sistem memungkinkan untuk dipakai sebagai pengganti rangkaian pull up

external.

• Bit Rate Generator

Unit ini digunakan untuk mengontrol periode SCL pada master mode. Bit

rate-nya dapat diatur dengan mengatur TWI Bit Rate Register(TWBR) dan bit

prescaler pada TWI Status Register (TWSR). Pada mode slave, operasi tidak

tergantung pada TWBR dan prescaler. Tetapi CPU clock harus lebih besar dari 16

kali SCL master. Frekwensi dari SCL dapat dihitung dengan persamaan

4).(216TWPS

TWBR

equencyCPUclockfrcySCLfrequen

+=

dimana :

o TWBR : nilai TWI Bit Rate Register

Universitas Kristen Petra

44

o TWPS : nilai prescaler bit pada TWSR

• Bus Interface Unit

Modul ini berisi Start/Stop controller, Address/Data shift register TWDR

dan Arbitration detection TWDR berisi data atau address yang ingin dikirimkan

atau data atau address yang diterima. Selain 8-bit TWDR, juga ada bit (N)ACK

untuk transmit dan receive. Bit ini tidak dapat dibaca langsung secara software.

Tetapi saat receive, bit ini dapat di-set atau di-clear melalui manipulasi TWCR.

Dan saat transmit, nilai dari (N)ACK yang diterima dapat dipastikan melalui

TWSR.

START/STOP control digunakan utuk membangkitkan dan mendeteksi

START, REPEATED START dan STOP. START/STOP control tetap dapat

mendeteksi adanya START, walaupun AVR MCU dalam keadaan sleep.

• Control Unit

Control unit digunakan untuk memonitor bus dan menghasilkan respon

sesuai dengan setting pada TWCR. Bila ada hal yang perlu diperhatikan pada bus,

maka TWINT akan di-set pada clock selanjutnya, dan TWSR akan berisi data

status yang sesuai dengan hal yang terjadi. TWSR hanya berubah bila TWINT di-

set. Bila tidak, TWSR akan berisi data khusus yang menunjukkan tidak ada status

yang sesuai terjadi. Selama TWINT di-set, maka SCL akan selalu low. Sehingga

software dapat menyelesaikan tugasnya sebelum transmisi TWI dapat dilanjutkan.

TWINT di-set karena kejadian-kejadian berikut :

o Setelah TWI mengirim START/REPEATED START condition

o Setelah TWI mengirim SLA+R/W

o Setelah mengirim address byte

o Setelah menerima data byte

o Setelah menerima slave address-nya sendiri atau general call.

o Saat bus error karena START/STOP bit salah

o Setelah menerima START/STOP saat masih menjadi slave.

o Saat kehilangan arbitration

Universitas Kristen Petra

45

2.2.4.2 TWI Register

Ada beberapa register yang digunakan pada komunikasi TWI antara lain

TWBR, TWSR, TWCR, TWDR dan TWAR.

Ø TWBR

TWBR atau TWI Bit Rate Register

Gambar 2.24 Figur TWBR Register

Sumber: Atmel Corporation. ATMega 32 Datasheet. 28 September 2006, hal 177.

<http://www.atmel.com/dyn/resources/prod_documents/doc2487.pdf>

TWBR digunakan untuk menentukan faktor pembagi untuk bit rate

generator. Bit rate generator digunakan untuk membangkitkan SCL pada

master mode.

Ø TWCR

TWCR atau TWI Control Register. Register ini digunakan untuk

mengontrol operasi TWI. Register ini digunakan untuk enable TWI,

mengaktifkan master mode setelah mengirim start condition ke bus,

receive acknowledge, membangkitkan stop condition, menunjukkan write

collision.

Gambar 2.25 Figur TWCR Register

Sumber: Atmel Corporation. ATMega 32 Datasheet. 28 September 2006, hal 177.<http://www.atmel.com/dyn/resources/prod_documents/doc2487.pdf>

• Bit 7 TWINT : TWI Interrupt flag

Bit ini di-set oleh hardware setelah menyelesaikan pekerjaan yang

sedang dilakukan dan menantikan respon dari software aplikasi. Bila bit-I

pada SREG dan TWIE pada TWCR di-set, maka akan melompat ke

interrupt vektor yang bersangkutan. Saat TWI di-set, periode low SCL

dipanjangkan.

Universitas Kristen Petra

46

TWINT harus di-clear dengan menulis logic ‘1’ ke register.

Register ini tidak akan di-clear secara otomatis oleh hardware (setelah

melakukan rutin interrupt). Juga perhatikan dengan meng-clear bit ini,

akan memulai operasi TWI (sehingga akses ke register lainnya harus

sudah selesai saat bit ini di-clear).

• Bit 6 TWEA : TWI Enable Acknowlage bit

Bit ini digunakan untuk menghasilkan pulse acknowladge. Bila

TWEA di-set ‘1’, maka pada bus akan dibangkitkan pulse acknowlage bila

kondisi tersebut di bawah terpenuhi.

1. Bila device menerima slave address-nya sendiri

2. General call diterima saat TWGCE pada TWAR di-set

3. Data byte telah diterima saat master receive ataupun slave receive.

Dengan menulis TWEN ‘0’, maka TWI akan terputus secara

virtual dari bus TWI. Address recognition dapat dilanjutkan kembali saat

TWEA di-set ‘1’ kembali.

• Bit 5 TWSTA : TWI Start Condition Bit

Aplikasi dapat menulis ‘1’ ke bit TWSTA (saat menjadi master

pada TWI bus). Hardware akan mengecek apakah bus sedang kosong

(tidak ada master lain yang aktif), lalu membangkitkan start condition

(bila bus kosong). Bila bus belum kosong, maka hardware akan menunggu

sampai ada stop bit (sebelum memulai mengirim start condition untuk

mengambil alih bus). TWSTA harus di-clear oleh software, setelah start

condition sudah dikirim.

• Bit 4 TWSTO : TWI STOP Condition Bit

Menulis ‘1’ ke TWSTO (saat menjadi master) akan membuat

device mengirimkan stop condition ke bus. Setelah stop condition

dieksekusi, maka TWSTO akan di-clear secara otomatis. Pada saat

menjadi slave, bila TWSTO di-set, maka akan memasuki keadaan

unaddressed slave, dan pin SCD dan SDL akan dilepas menjadi high

impedance.

Universitas Kristen Petra

47

• Bit 3 TWWC : TWI Write Collision flag

TWWC akan di-set, bila mencoba menulis ke TWDR (saat TWINT low).

Dan TWWC akan di-clear, bila menulis ke TWDR (saat TWINT high).

• Bit 2 TWEN : TWI Enable Bit

Bila TWEN di-set, maka akan mengaktifkan TWI dan TWI

interface. Saat TWEN ditulis ’1’ maka pin SCD dan SDL akan

mengaktifkan slew rate limiter dan spike filter. Bila TWEN ditulis ‘0’,

maka akan mematikan TWI dan semua transaksi yang berjalan akan

dimatikan. Tidak perduli akan transaksi yang sedang berlangsung.

• Bit 1 Reserve Bit

Bit ini akan selalu terbaca ‘0’

• Bit 0 TWIE : TWI Interrupt Enable

Bila bit ini ditulis ‘1’ dan I-bit pada SREG di-set, maka akan

terjadi interrupt selama TWINT high.

Ø TWSR

TWI Status Register

Gambar 2.26 Figur TWSR Register

Sumber: Atmel Corporation. ATMega 32 Datasheet. 28 September 2006, hal 178.<http://www.atmel.com/dyn/resources/prod_documents/doc2487.pdf>

• Bit 7-3 TWS : TWI Status

Lima bit ini berfungsi nutuk menunjukan status dari TWI.

Biasanya nilai dari bit–bit ini di-masking dari bit prescaler untuk

memudahkan pembacaan.

• Bit 2 Reserve Bit

Bit ini akan selalu terbaca ‘0’

• Bit 1,0 TWPS : TWI Prescaler Bit

Bit ini digunakan untuk membaca dan menulis nilai dari prescaler.

Universitas Kristen Petra

48

Tabel 2.24 TWI Bit Rate Prescaler

Sumber: Atmel Corporation. ATMega 32 Datasheet. 28 September 2006, hal 179.<http://www.atmel.com/dyn/resources/prod_documents/doc2487.pdf>

Ø TWDR

TWI Data Register.

Gambar 2.27 Figur TWDR Register

Sumber: Atmel Corporation. ATMega 32 Datasheet. 28 September 2006, hal 179.<http://www.atmel.com/dyn/resources/prod_documents/doc2487.pdf>

Saat transmit mode, TWDR berisi data yang akan dikirim. Dan saat

receive mode, TWDR berisi byte data terakhir yang telah diterima. TWI

dapat diakses saat tidak dalam proses shifting byte. TWDR tetap stabil

selama TWINT di-set. Saat data di-shifted out, secara simultan data juga

di-shifted in.

Ø TWAR

TWI Address Register.

Gambar 2.28 Figur TWAR Register

Sumber: Atmel Corporation. ATMega 32 Datasheet. 28 September 2006, hal 179.<http://www.atmel.com/dyn/resources/prod_documents/doc2487.pdf>

TWAR 7 bit MSB dari TWAR dapat diisi di mana device akan

menjawab, bila alamat tersebut dipanggil (saat menjadi slave).

• Bit 7-1 TWA : TWI(slave) Address Register

Tujuh bit ini menyediakan alamat slave address TWI

Universitas Kristen Petra

49

• Bit 0 TWGCE : TWI General Call Recognition Enable Bit

Bila di-set, maka akan memungkinkan untuk pengenalan device

saat terjadi general call.

2.3 Serial EEPROM

Serial Electrically Erasable and Programmable Read Only Memory. Atau

dikenal sebagai SEEPROM adalah sebuah media penyimpanan non-volaitile,

sehingga tidak akan kehilangan data saat supply tegangan dimatikan.

Tipe SEEPROM yang digunakan dalam Tugas Akhir ini adalah AT24C64.

Keungulan dari tipe ini sehingga dipilih adalah:

• Komunikasi Two Wire Interface

• Bit rate sampai dengan 400KHz

• High reliability dengan write cycle 100juta kali

• Kapasitas memori 8K byte

2.3.1 Konfigurasi Pin

Konfigurasi pin dari AT24C64 adalah seperti berikut :

Gambar 2.29 Pin AT24C64

Sumber: Atmel Corporation. AT24C64 Datasheet. 28 September 2006, hal 1<http://www.atmel.com/dyn/resources/prod_documents/doc5174.pdf>

• Serial Clock (SCL):

Serial clock diperlukan positif edge untuk memasukkan data ke EEPROM,

dan negatif edge untuk mengeluarkan data dari EEPROM

• Serial Data (SDA):

Pin SDA ini bersifat bi-directional, dan di-drive secara open drain.

• Device Address(A0-A2):

Universitas Kristen Petra

50

Pin ini berfungsi sebagai alamat device harus disambung secara hardware

(atau dibiarkan tidak terpasang). Bila dipasang, maka dapat dihubungkan hingga 8

device. Bila dibiarkan tidak terpasang, maka nilai default-nya adalah nol.

• Write Protect:

Pin ini bila disambung ke ground, maka proses menulis akan berjalan

seperti biasa. Tetapi bila dihubungkan ke VCC, maka proses menulis ke 16K bit

memory teratas tidak dapat dilakukan. Bila pin ini tidak dihubungkan, maka akan

di-pull low secara internal.

2.3.2 Device Addressing

EEPROM memerlukan 8-bit device address (setelah start condition untuk

enable chip) untuk operasi penulisan atau pembacaan. Device address ini dimulai

dengan sequnece ‘1010’ (yang umum digunakan pada TWI EEPROM). Lalu

dikuti oleh tiga address bit A2, A1, A0 (yang memungkinkan adanya 8 device

pada 1 bus yang sama). Bit ini akan dibandingkan dengan bit yang terhubung pada

pin (secara hardwire). Bit ke delapan adalah perintah untuk operasi read atau

write (perintah read bila ‘1’ dan write bila ‘0’).

Setelah semua addressing bit dikirim, device akan mengeluarkan signal

low (bila hasil komparasi benar). Bila hasil komparasi salah, device akan segera

kembali ke standby state

Gambar 2.30 Figur Device Address

Sumber: Atmel Corporation. AT24C64 Datasheet. 28 September 2006, hal 11<http://www.atmel.com/dyn/resources/prod_documents/doc5174.pdf>

2.3.3 Operasi Byte Write

Operasi write memerlukan dua 8-bit data word address di belakang device

address word dan acknowlagement. Setelah menerima alamat ini, EEPROM

sekali lagi akan merespon dengan nol dan kemudian menerima 8-bit data word.

Universitas Kristen Petra

51

Setelah menerima 8-bit tersebut, sekali lagi EEPROM akan mengeluarkan respon

nol. Setelah ini, maka microcontroller harus mengeluarkan stop condition.

Saat ini EEPROM akan memasuki internally–timed write cycle (twr), ke

dalam non-volatile memory. Semua input akan di-disable dan akan merespon

kembali setelah proses selesai.

Gambar 2.31 Operasi Byte Write

Sumber: Atmel Corporation. AT24C64 Datasheet. 28 September 2006, hal 11<http://www.atmel.com/dyn/resources/prod_documents/doc5174.pdf>

2.3.4 Operasi Random Read

Operasi random read adalah operasi pembacaan alamat pada SEEPROM

secara acak. Operasi random read memerlukan sebuah “dummy” byte write

sequence untuk melompat dan membaca data pada alamat yang diinginkan.

Setelah device address word dan data word address “dummy” di-clock in dan di-

acknowledged oleh EEPROM, microcontroller harus mengirimkan start condition

lagi. Lalu microcontroller mengirimkan device address dengan read/write select

bit di-set high. EEPROM akan mengirim acknowledged lalu mengirimkan data

keluar. Setelah selesai, microcontroller merespon dengan mengirimkan stop

condition.

Gambar 2.32 Operasi Random Read

Sumber: Atmel Corporation. AT24C64 Datasheet. 28 September 2006, hal 12<http://www.atmel.com/dyn/resources/prod_documents/doc5174.pdf>

Universitas Kristen Petra

52

2.4 AT89S51

AT89S51 adalah sebuah microcontroller berbasis MCS-51 produksi

Atmel. Dan merupakan salah satu produk microcontroller kelas MCS-51 yang

paling umum dipakai di Indonesia.

2.4.1 Konfigurasi Pin AT89S51.

AT89S51 memiliki beberapa model konfigurasi pin out. Model yang

paling umum dipakai adalah model PDIP 40 pin dengan konfigurasi seperti pada

gambar:

Gambar 2.33 Konfigurasi Pin AT89S51

Sumber: Atmel Corporation. AT89S51 Datasheet. 28 September 2006, hal 2<http://www.atmel.com/dyn/resources/prod_documents/doc2503.pdf>

VCC: Tegangan input AT89S51

GND: Ground AT89S51

Port1: Port 1 adalah 8-bit I/O dengan internal pull up. Memiliki kemampuan

untuk men-drive sink/source empat TTL input. Port ini memiliki fungsi

alternatif seperti pada tabel :

Tabel 2.25 Fungsi Alternatif Port 1

Sumber: Atmel Corporation. AT89S51 Datasheet. 28 September 2006, hal 4<http://www.atmel.com/dyn/resources/prod_documents/doc2503.pdf>

Universitas Kristen Petra

53

XTAL1: Input ke inverting oscillator amplifier dan internal clock operating

circuit

XTAL2: Output dari inverting oslillator amplifier

RST: Reset input. Bila pin ini ditahan high selama 2 cycle mesin, maka akan

terjadi reset.

2.4.2 Pemrograman Flash Secara Serial

Array memori kode dapat diprogram secara serial menggunakan interface

ISP (saat RST di-pull ke VCC). Serial interface ini terdiri dari pin SCK,

MOSI(input) dan MISO(output). Setelah RST di-set high, maka instruksi

Programming Enable harus dikirim terlebih dahulu (sebelum instruksi yang lain

dapat dieksekusi). Sebelum pemrograman ulang dapat dilakukan, maka operasi

Chip Erase harus dilakukan. Operasi Chip Erase dapat membuat semua memori

yang terletak pada code array menjadi FFH.

Untuk dapat melakukan pemrograman secara serial diperlukan clock ke

pin XTAL1 atau crystal dihubungkan di antara pin XTAL1 dan XTAL2.

Frekwensi serial clock maksimum (SCK) harus lebih kecil dari 1/16 dari

frekwensi crystal.

Gambar 2.34 Konfigurasi Pemrograman AT89S51 Secara Serial

Sumber: Atmel Corporation. AT89S51 Datasheet. 28 September 2006, hal 17<http://www.atmel.com/dyn/resources/prod_documents/doc2503.pdf>

Universitas Kristen Petra

54

2.4.2.1 Alogaritma Pemrograman

Untuk memprogram dan verify AT89S51 dalam mode pemrograman serial

sequence berikut direkomendasikan:

1. Power up sequence: beri tegangan antara pin VCC dan GND. Set RST

high. Bila crysatal tidak digunakan, beri clock 3-33MHz ke XTAL1 dan

tunggu setidaknya 10ms

2. Enable serial programming dengan mengirim Programming Enable serial

instruction ke pin MOSI (Port1.5). Frekwensi clock yang diberikan pada

SCK (Port1.7) tidak boleh lebih dari 1/16 CPU clock di XTAL1

3. Code array diprogram satu persatu, baik dalam pemrograman secara Byte

mode atau pun secara Page mode. Write cycle-nya self-timed dan secara

normal butuh kurang dari 0,5 ms di tegangan 5V.

4. Alamat memori manapun dapat di-verified dengan mengunakan instruksi

read (yang memberi nilai balik alamat yang diinginkan) pada

MISO(Port1.6)

5. Setelah pemprograman selesai, RST dapat di-clear untuk melakukan

operasi device normal.

Tabel 2.26 Serial Programming Instruction Set

Sumber: Atmel Corporation. AT89S51 Datasheet. 28 September 2006, hal 18<http://www.atmel.com/dyn/resources/prod_documents/doc2503.pdf>

Universitas Kristen Petra

55

setelah reset signal high, SCK harus low setidaknya 64 system clock (sebelum

high lagi) untuk enable data. Tidak perlu untuk pulsing signal reset.

Gambar 2.35 Serial Programming Waveform

Sumber: Atmel Corporation. AT89S51 Datasheet. 28 September 2006, hal 17<http://www.atmel.com/dyn/resources/prod_documents/doc2503.pdf>

Gambar 2.36 Serial Programming Timing.

Sumber: Atmel Corporation. AT89S51 Datasheet. 28 September 2006, hal 19<http://www.atmel.com/dyn/resources/prod_documents/doc2503.pdf>

Tabel 2.27 Karakteristik Serial Programming

Sumber: Atmel Corporation. AT89S51 Datasheet. 28 September 2006, hal 19<http://www.atmel.com/dyn/resources/prod_documents/doc2503.pdf>

Universitas Kristen Petra

56

2.5 FAT16

FAT atau File Allocation Table adalah sistem file yang dipatenkan oleh

Microsoft untuk MS-DOS. Dan merupakan file system utama untuk produk

Microsoft Windows sampai Windows Me.

File sistem FAT dianggap tidak terlalu rumit dan banyak dipakai oleh

beberapa sistem operasi untuk komputer. Selain itu, file sistem ini juga dipakai

pada floppy disk dan memory card. Sehingga memudahkan pertukaran data di

antara sistem operasi yang berbeda. Secara sederhana, sebuah disk yang

mengunakan sistem FAT16 akan memiliki bagian-bagain seperti pada gambar:

Gambar 2.37 Struktur FAT16

Sumber: Clark. File allocation table - 16bit. n.d. 28 Sept. 2006<www.beginningtoseethelight.org/ fat16/>

Gambar tersebut adalah potongan dari disk yang menggunakan FAT16

(contoh ini menggunakan drive sebesar 20 MB). Bila semua area data ditunjukkan

maka total akan ada 44,815 block. Struktur FAT 16 akan memiliki Master Boot

Record, Boot Record, FAT Table, Root Directory dan Data Entry.

2.5.1 Master Boot Record

Gambar berikut adalah contoh sebuah MBR pada sebuah drive:

Universitas Kristen Petra

57

Gambar 2.38 Struktur MBR FAT16

Sumber: Clark. File allocation table - 16bit. n.d. 28 Sept. 2006<www.beginningtoseethelight.org/ fat16/>

MBR selalu terletak pada bagian paling awal sebuah drive. Bagian ini

adalah yang paling pertama diakses oleh sistem. MBR memiliki ukuran sebesar

512 byte. Tetapi bila terjadi kerusakan pada bagian ini, semua bagian drive tidak

dapat diakses oleh sistem.

MBR dapat memiliki sampai empat partisi (tiap entry menempati 16 byte).

Bila tidak digunakan, maka filled akan diisi dengan 00H. Tiap entry memiliki

addressing parameter untuk partisinya. Alamat dari tiap partisi dapat dilihat pada

tabel berikut:

Universitas Kristen Petra

58

Tabel 2.28 Alamat MBR

Sumber: Dobiash, Jack. FAT16 Structure Information. 28 September 2006<home.teleport.com/~brainy/fat16.htm>

Dari tabel di atas, maka partition entry pertama dari Gambar2.36 adalah:

Gambar 2.39 Partition entry Pertama MBR

Sumber: Clark. File allocation table - 16bit. n.d. 28 Sept. 2006<www.beginningtoseethelight.org/ fat16/>

• Executable Code(446 btye)

Ini adalah bagian pertama yang dijalankan oleh software saat pertama kali

komputer load up. Isinya bisa kurang dari 446 byte. Byte yang tidak digunakan

diisi dengan 00H

• Boot Indicator (1 byte)

Memastikan partisi yang mana dari boot yang aktif. 00H berarti tidak aktif

dan 80H berarti aktif. Hanya boleh ada 1 partisi yang aktif, tidak boleh lebih dan

kurang (karena dapat menyebebkan error).

• Starting Head (1 byte)

Menunjukan posisi awal head untuk partisi dalam hex. Misal 01, maka

head 1. Bila 3FH, maka posisi head 63. Nilai maksimum dari head adalah 256

(FFH).

• Starting Sector/Cylinder (2 bytes)

Menyatakan sector dan cylinder tempat partisi dimulai. Meskipun tampak

seperti bit pertama menuliskan sector dan bit kedua cylinder dalam hex. Tetapi

tidak demikian. Contoh bila ada 62 sector dan 690 cylinder, pada MBR akan

Universitas Kristen Petra

59

terbaca BEH,B2H. Untuk membaca mula-mula semua dikonversi ke biner menjadi

1011 1110, 1011 0010. 6 bit terakhir dari byte pertama bernilai 11 1110 = 3EH

dalam desimal bernilai 62. Ini adalah nilai sector (6 bit), berarti nilai sector antara

1-63. Lalu untuk cylinder gabungkan 2 bit awal dari byte pertama dengan byte

terakhir 10 1011 0010 =2B2H dalam desimal bernilai 690 cylinder. 10 bit memberi

nilai maksimum cylinder 1024.

• Partition Type (1 byte )

byte ini menentukan jenis partisi MBR

Tabel 2.29 Partition type MBR

Sumber: Dobiash, Jack. FAT16 Structure Information. 28 September 2006<home.teleport.com/~brainy/fat16.htm>

• Ending Head ( 1 byte )

Cara membaca sama seperti starting head, tetapi byte ini digunakan untuk

ending.

• Ending Sector/Cylinder ( 2 bytes )

Cara membaca sama seperti starting sector/cylinder, tetapi byte ini

digunakan untuk ending.

• Starting Sector ( 4 bytes )

Menunjukkan logical sector jump ke partisi. Bagian ini berisi boot record

dari partisi. Cara membacanya adalah seperti berikut: misal pada MBR

terbaca 40H, 03H, 07H, 01H maka nilai tersebut harus dibalik menjadi 01H,

Universitas Kristen Petra

60

07H, 03H, 40H lalu diubah ke desimal. Jadi sector yang dimaksud adalah

sector 17.236.800.

• Sectors In The Partition ( 4 bytes )

Menunjukkan jumlah sector dalam partisi. Contoh pembacaan: bila hasil

pembacaan dari MBR adalah F0H, AEH, 24H, 00H maka nilai tersebut harus

dibalik menjadi 00H, 24H, AEH, F0H lalu diubah ke desimal, maka nilainya

adalah 2.404.080 sector.

• Executable Signature ( 2 bytes )

Dua byte ini menunjukkan bahwa sector ini executable. Nilai dari byte ini

adalah 55H, AAH.

Sector antara MBR dan boot record biasanya dibiarkan kosong. Aplikasi

yang memanfaatkan sector ini adalah program-program multi boot loader,

program-program recovery dan beberapa jenis virus.

2.5.2 Boot Record

Informasi Boot record selalu terletak di awal tiap partisi. Model boot

record adalah seperti pada Gambar 2.38

Universitas Kristen Petra

61

Gambar 2.40 Boot Record

Sumber: Clark. File allocation table - 16bit. n.d. 28 Sept. 2006<www.beginningtoseethelight.org/ fat16/>

Gambar 2.41 Keterangan Boot Record

Sumber: Clark. File allocation table - 16bit. n.d. 28 Sept. 2006<www.beginningtoseethelight.org/ fat16/>

• Jump Code(3 byte)

Universitas Kristen Petra

62

Menunjukkan offset lompatan ke executable boot (strap) code dan nop.

Bila terbaca pada boot record

EBH 3EH 90H artinya: lompat ke alamat | offset 3EH | no operation.

• Oem/Id Name ( 8 bytes )

Menunjukan sistem apa/siapa yang membuat format partisi.

• Bytes Per Sector ( 2 bytes)

Normal besarnya 512 byte. Cara membaca nilai dari BR adalah dibalik

urutan datanya, lalu dikonversi ke desimal (misal 00H, 02H, maka dibalik

menjadi 02H, 00H dikonversi ke desimal 512).

• Sectors Per Cluster ( 1 byte )

Menunjukan jumlah sector per cluster. Nilai ditulis dalam hex, jadi harus

dikonversi ke desimal. Misal 10H berarti 16 sector.

Tabel 2.30 Sector Per-Clustersize ranges (mb)

FAT type

no. sectors

cluster size

0 - 15

12

8

4,096 bytes

16 - 127

Universitas Kristen Petra

63

16

4

2,048 bytes

128 - 255

16

8

4,096 bytes

256 - 511

16

16

8,192 bytes

512 - 1023

16

32

16,384 bytes

Universitas Kristen Petra

64

1024 - 2047

16

64

32,768 bytes

Sumber: Clark. File allocation table - 16bit. n.d. 28 Sept. 2006<www.beginningtoseethelight.org/ fat16/>

• Reserved Sectors ( 2 bytes )

Menunjukkan jumlah reserved sector dari FAT. Cara membaca, misal:

01H, 00H dibalik nilainya menjadi 00H, 01H lalu diubah ke desimal =1.

• No. Of FATs ( 1 byte )

Menunjukkan jumlah FAT yang dipakai. Normalnya bernilai 2.

• Root Entries ( 2 bytes )

Menunjukan nilai maksimum dari 32 byte entries di root directory. Nilai

terbaca 00H ,02H dibalik menjadi 02H, 00H lalu diubah ke desimal = 512;

512*32(byte)= 16384 byte (data disimpan mulai dari poin ini).

• Total Sectors(16) ( 2 bytes )

Pada FAT 16 nilai byte ini di-set 00H, 00H.

• Media Type ( 1 byte )

Bernilai F8H untuk hard disk dan F0H untuk standard floppy disk.

• Sectors per FAT ( 2 bytes )

Jumlah sector untuk satu FAT untuk pembacaan nilai terbaca, misal: 09H,

00H dibalik menjadi 00H, 09H.diubah ke desimal = 9. Bila ada 2 FAT,

maka jumlah sector dikali 2.

• Sectors Per Track ( 2 bytes )

Menunjukkan jumlah sector per track.

• No. Of Heads ( 2 bytes )

Universitas Kristen Petra

65

Menunjukkan head disk drive. Untuk pembacaan: nilai terbaca dibalik

urutannya lalu diubah ke desimal.

• Hidden Sectors ( 4 bytes )

Nilai ini akan dicocokkan dengan starting sector (yang ada pada MBR).

Menunjukkan jumlah hidden sector antara awal drive sampai boot record.

Untuk membaca nilai, nilai yang tertulis dibalik urutannya terlebih dahulu,

lalu dikonversi ke desimal.

• Total Sectors(32) (4 bytes )

Nilai ini dipakai bila nilai total sector (16) bernilai 00H, 00H. Untuk

pembacaan nilai: nilai tertulis dibalik urutannya kemudian dikonversi ke

desimal.

• Drive Id ( 1 byte )

Di-set 00H untuk floppy disk dan 80H untuk hard disk.

• NT Reserved ( 1 byte )

Nilai di-set 00H dan tidak terpakai.

• Extended Boot Signature ( 1 byte )

Di-set 29H. Untuk menunjukan adanya serial, label dan tipe data.

• Volume Serial Number ( 4 bytes )

Saat partisi di-format, maka serial number akan diganti oleh program.

• Volume/Partition Name ( 11 bytes )

Menunjukkan nama dari drive (maksimum 11 karakter).

• FAT Type ( 8 bytes )

Menujukkan tipe FAT yang dipakai. Tetapi tidak digunakan untuk

menentukan tipe FAT oleh sistem dan nilainya dapat diubah. Dapat

digunakan untuk referensi cepat tipe FAT.

• Executable Boot Code ( 448 bytes )

Ini adalah bagian pertama partisi yang dijalankan oleh software (saat

pertama kali komputer load up). Byte-byte yang tidak digunakan diisi

dengan 00H.

• Executable Signature ( 2 bytes )

Berisi Signature 55H,AAH.

Universitas Kristen Petra

66

Dari nilai yang terbaca pada MBR dan boot record, maka dapat ditentukan

layout dari sebuah disk dimana:

• Alamat boot record adalah MBR ditambah dengan Starting Sector(MBR).

• Alamat FAT Table pertama adalah alamat Boot record ditambah reserved

sector (BR).

• Alamat FAT Table ke dua adalah alamat BR ditambah reserved sector

(BR) ditambah dengan sector per FAT (BR).

• Alamat root directory adalah alamat BR ditambah reserved sector (BR)

ditambah dua kali sector per FAT (BR).

• Alamat data adalah alamat root directory ditambah dengan ((root

directory entries * 32) / bytes per sector).

2.5.3 FAT Table

Universitas Kristen Petra

67

Gambar 2.42 FAT Table

Sumber: Clark. File allocation table - 16bit. n.d. 28 Sept. 2006<www.beginningtoseethelight.org/ fat16/>

Tabel 2.31 Arti Kode FAT

Sumber: Dobiash, Jack. FAT16 Structure Information. 28 September 2006<home.teleport.com/~brainy/fat16.htm>

File Allocation Tabel (FAT) terletak di antara boot record dan root

directory. Normalnya ada dua copy FAT yang identik untuk mencegah terjadinya

error pada disk yang kurang reliable.

• Media Type ( =2 bytes )

Dua byte pertama pada FAT 16 menunjukan tipe media. Bernilai F8H

untuk hard disk dan F0H untuk floppy disk. Nilai ini harus sesuai dengan

nilai pada boot record.

• Partition State ( =2 bytes )

Universitas Kristen Petra

68

Akan di-set FFH, FFH saat di-format atau shut down pada hard disk. Yang

artinya partisi bersih atau belum ditulis. Browsing directory, melihat

properties, membuka file, tidak akan mengotori disk walaupun alamat

akses terakhir berubah. Tetapi bila data atau entry di-rename atau di-save

maka byte ini akan ditulis FFH, F7H menunjukan partisi kotor atau dipakai.

Saat start up bila sistem tahu bahwa partisi kotor, maka sistem akan tahu

bahwa sistem tidak di-shut down dengan benar (hanya berlaku pada hard

disk).

• FAT Attributes (ukuran bervariasi)

Data cluster dimulai tepat setelah root directory. Pada FAT 16 satu cluster

direpresentasikan dengan 2 byte pada FAT. Tiap 2 byte pada FAT

menandai posisi pada data area dari partisi. Bila cluster adalah bagian dari

rantai cluster yang menempati lebih dari 1 cluster, maka akan dinamai

dengan urutan hex dengan angka mulai 03H, 00H sampai 99H, FFH

(ditambah dari kiri). Bila cluster adalah yang terakhir dari rantai (atau bila

hanya menempati 1 cluster), maka akan ditandai dengan FFH, FFH. Bila

sebuah file di-save ulang dan melebihi cluster yang telah disediakan, maka

file atau directory tersebut akan dibagi dua, dan cluster (lebihnya) ditaruh

di suatu tempat lain pada drive. FAT akan diubah, sehingga cluster

terakhir pada rantai pertama akan menunjukkan awal dari cluster

selanjutnya.

Pada gambar 2.42, cluster pertama menunjuk pada cluster 6 (meskipun

tertulis cluster 07H, 00H itu adalah cluster 6). Hal ini dikenal dengan

fragmenting, dan dapat memperlambat sistem. Karena bagian–bagian ini

perlu digabungkan lagi sebelum dapat dipakai. Defregmentasi akan

memindahkan data tersebut (sehingga semua rantai cluster akan

dikelompokkan kembali menjadi satu). Bila tidak ada data atau data sudah

dihapus, maka FAT akan ditandai sebagai 00H, 00H. Terkadang sistem

tidak mampu mengikuti hal ini. Misal ada 20 cluster entry dihapus, dan 5

cluster baru ditulis. Ada kemungkinan data akan diletakkan setelah 20

cluster yang dihapus. Reboot mungkin diperlukan supaya sistem meng-

Universitas Kristen Petra

69

acknowledge. Cluster rusak akan ditandai dengan F7H, FFH dan data tidak

akan ditulis ke area ini.

2.5.4 Data Entry

Tiap entry pada sebuah directory list panjangnya 32 byte. Satu-

satunya directory yang lokasinya fix, adalah root directory. Dan directori

ini juga merupakan satu-satunya directory yang volume label attribut-nya

boleh di-set.

Sub-directories dibuat dengan mengalokasikan sebuah cluster yang

kemudian di-clear (sehingga tidak mempunyai directory entry). Kemudian

dua default entries dibuat dengan nama ‘.’. Untuk menujukan entry point

dari directory itu sendiri dan ‘..’ untuk menunjukan entry point dari parent

directory. Bila isi dari sebuah sub-directory berkembang lebih besar dari

yang mampu ditampung cluster, maka cluster yang baru dialokasikan

dengan cara yang sama seperti mengalokasikan cluster file.

Berikut adalah format dari directory entries:

Tabel 2.32 Struktur Directory Entries

Offset Size Description00h 8 bytes Filename08h 3 bytes Filename Extension0Bh 1 bytes Attribute Byte0Ch 1 bytes Reserved for Windows NT0Dh 1 bytes Creation - Millisecond stamp (actual 100th of a second)0Eh 2 bytes Creation Time10h 2 bytes Creation Date12h 2 bytes Last Access Date14h 2 bytes Reserved for FAT3216h 2 bytes Last Write Time18h 2 bytes Last Write Date1Ah 2 bytes Starting cluster1Ch 4 bytes File size in bytes

Sumber: Maverick. FAT16 File System. 28 September 2006<http://www.maverick-os.dk/ FileSystemFormats/FAT16_FileSystem html>

• Filename dan Extension:

Universitas Kristen Petra

70

Panjang filename adalah sepanjang 8 byte. Nama yang lebih pendek harus

ditambah dengan karakter spasi(ASCII 20H). Extension panjangnya 3 byte.

Karakter yang diperbolehkan adalah uppercase alphabet inggris dan

angka.

Byte pertama dari filename mempunyai peraturan khusus yaitu:

1. Nilai 00H diterjemahkan sebagai ‘berhenti mencari, tidak ada lagi

entry di directory ini’.

2. Nilai 05H artinya karakter E5H

3. Tidak boleh mengandung nilai 20H.

4. Nilai E5H diterjemahkan 'entry kosong'.

5. Karakter lainya selain yang disebut di bawah diperbolehkan.

Karakter berikut tidak diperbolehkan pada filename dan extension:

1. Semua karakter dibawah 20H, kecuali 05H.

2. Karakter-karakter berikut: 22H ("), 2AH (*), 2BH (+), 2CH (,), 2EH

(.), 2FH (/), 3AH (:), 3BH (;), 3CH (<), 3DH (=), 3EH (>), 3FH (?),

5BH ([), 5CH (\), 5DH (]), 7CH (|).

Untuk masalah kompabilitas disarankan menggunakan karakter-karakter

berikut:

1. Karakter dari A sampai Z.

2. Angka dari 0 sampai 9.

3. Karakter-karakter berikut: #, $, %, &, ', (, ), -, @

• Attribute Byte

Attribute byte mendefinisikan flag yang dapat digunakan untuk

directories, volume name, hidden file, system files

Gambar 2.43 Attribute byte

Sumber: Maverick. FAT16 File System.d. 28 September 2006<http://www.maverick-os.dk/ FileSystemFormats/FAT16_FileSystem html>

Universitas Kristen Petra

71

o Read only: flag ini digunakan untuk mencegah program untuk

tidak secara otomatis mengubah atau menghapus entry ini.

o Hidden: flag ini menunjukan kepada sistem bahwa file harus di-

hidden saat melakukan listing directory normal. Tetapi tetap dapat

ditulis ulang dan dihapus.

o System: flag ini menunjukan bahwa file atau directory penting

untuk sistem dan tidak boleh diubah tanpa peringatan.

o Volume name: Saat flag ini di-set, directory entry tidak menunjuk

pada file tetapi ke tidak ada apapun. Starting cluster ini harus

menunjuk ke cluster 0 (satu-satunya informasi yang dapat diambil

adalah filename dan extension tanpa tanda’.’). Byte ini membentuk

11 byte volume label. Hanya boleh ada satu entry pada tiap partisi

untuk entry ini yaitu root directory.

o Directory: flag ini di-set, saat entry pada directory table tidak

menunjuk pada awal sebuah file, tetapi pada directory table

lainnya. Sebuah Sub-directory. Sub-directory ditempatkan pada

cluster (yang dituju oleh starting cluster field). Format dari sub-

directori ini sama dengan format root directory table.

o Achieve flag : flag ini digunakan oleh utility backup. Flag ini di-set

saat file dibuat, diubah, atau diganti. Backup utility dapat

mengetahui file mana yang sudah diubah sejak backup terakhir.

• Reserved byte

Nilai di-set nol saat pertama kali dibuat dan tidak pernah dilihat lagi.

• Creation time millisecond

Karena keterbatasan field(1 byte) hanya menyimpan nilai milisecond

dengan kelipatan 10 milliseconds. Dan nilai yang valid antara 0 dan 199

• Creation Time & Date

16 bit field menyimpan waktu dan hari saat entry dibuat. Nilainya tidak

pernah berubah setelah ditulis.

• Last Access Date

Universitas Kristen Petra

72

16 bit field ini berisi tanggal terakhir entry dibaca atau ditulis.

• Reserved for FAT32

Pada FAT 16 nilainya di-set 00H

• Last Write Time

16 bit ini berisi jam saat penulisan terakhir terjadi.

• Last Write Date

16 bit ini berisi tanggal saat penulisan terakhir terjadi.

• First Cluster

16 bit field ini menunjukan starting cluster number dari entry data. Bila

menunjuk pada directory, maka entry ini menunjuk pada awal cluster sub

directory. Bila entry-nya file, maka entry ini akan menujuk ke cluster

pertama tempat file berada.

• File Size

32 bit field ini menghitung total file size dalam byte. Pada entry lain (selain

untuk file) nilainya harus di-clear.

2.6 LCD Karakter 16x2

LCD karakter 16x2 adalah, media display yang mengunakan basis

teknologi LCD, yang memiliki 16 kolom dan 2 baris dot matrix 5x7 (atau dapat

dikatakan LCD ini mampu menampilkan karakter sebanyak 16x2 sekaligus).

Keunggulan lain dari LCD 16x2 ini adalah:

• 4 bit dan 8 bit data bus

• 192 karakter untuk dot matrix 5x7

• reset on power on

Gambar 2.44 LCD Karakter 16x2

Universitas Kristen Petra

73

Sumber: Seiko Instrument. M1632 LIQUID CRYSTAL DISPLAY MODULE

USER’S MANUAL. 28 September 2006, hal 1

<www.datasheetcatalog.com/data/ hc/408/hc89723.pdf>

2.6.1 Konfigurasi Pin

DB0-DB3 : Adalah lower bit dari LCD yang bersifat tri-state bidrirectional.

Bus ini hanya dipakai saat mengunakan bus 8 bit. Bila mengunakan

bus 4 bit, pin ini tidak dipakai.

DB4-DB7 : Adalah upper bit dari LCD yang bersifat tri-satate bidirectional.

Bit 7 pada bus ini juga dipakai sebagai busy bit.

E : Signal enable untuk memulai operasi penulisan atau pembacaan.

R/W : Signal untuk memilih ingin melakukan operasi apa. Signal low

untuk operasi write dan signal high untuk operasi read.

RS : Register selection signal. Untuk memilih akses ke-register atau

akses data. Bila diberi signal ’0’, digunakan untuk mengakses

(write) register instruksi, (read) busy flag , (read) Address

Counter. Bila diberi signal ‘1’, maka digunakan untuk mengakses

Data Register (read dan write).

VCC : Supply tegangan 5V

VSS : Ground LCD

VEE : V contras LCD

2.6.2 Address Counter Dan Display Data RAM.

LCD karakter memiliki DDRAM (Display Data RAM). Dimana data yang

ingin ditampilkan akan dikirim ke memori ini. Alamat memori dibagi jadi dua

bagian alamat. 00H sampai 27H digunakan untuk line 1, dan alamat 40H sampai

67H untuk line 2. tetapi alamat yang dapat ditampilkan hanya 00H sampai 0fH dan

40H sampai 4fH. Saat penulisan, counter alamat akan secara otomatis di-increment

atau di-decrement (menurut setting dari entry mode).

Universitas Kristen Petra

74

2.6.3 Inisialisasi LCD

Gambar 2.45 Inisialisasi LCD Karakter 16x2

Universitas Kristen Petra

75

Sumber: Seiko Instrument. M1632 LIQUID CRYSTAL DISPLAY MODULE

USER’S MANUAL. 28 September 2006, hal 1

<www.datasheetcatalog.com/data/ hc/408/hc89723.pdf>

Diagram di atas adalah model inisialisasi LCD agar memasuki mode 4 bit.

Pada mode 4 bit. Pada mode 4 bit jalur data yang dipakai hanya RS, R/W, E dan

DB4-DB7. Sebelum inisialisasi selesai dilakukan LCD tidak dapat menampilkan

karakter.

2.7 WinAVR Compiler

WinAVR adalah kumpulan program open source yang ditujukan sebagai

developing tool untuk Atmel AVR. Program ini mengunakan platform windows

memiliki compiler C dan C++ dari GNU GCC.

Program yang termasuk dalam WinAVR ini adalah:

• GNU Binutils 2.16.1 + coff-avr-patch (20050630): berisi binary utilities

untuk AVR target, termasuk di dalamnya including assembler, linker dan

berbagai utiliti lainnya.

• GNU Compiler Collection (GCC) 3.4.6: sebuah compiler bahasa C dan

C++ untuk AVR.

• avr-libc 1.4.4: library standar untuk ‘C AVR’

• avrdude 5.1: programmer AVR

• avrdude-gui 0.2.0: GUI untuk tampilan program ‘avrdude’

• GNU Debugger (GDB) 6.4 : debugger

• Insight 6.4: GDB dengan GUI

• avarice 2.4: program untuk meng-interface Atmel JTAG ICE ke GDB dan

user.

• Mfile: makefile generator untuk ‘AVR GCC’.

• Programmers Notepad 2.0.5.48: programming editor dilengkapi IDE

Dengan adanya program-program tersebut, WinAVR mampu mengolah program

yang ditulis dengan Bahasa C menjadi file yang dapat diprogramkan ke AVR

dalam format hex.

2.8 Library C AVR

2.8.1 Procyon AVRlib

Universitas Kristen Petra

76

Procyon adalah AVR library yang dibuat untuk mendukung fungsi-fungsi umum

AVR. Fungi-fungsi yang didukung oleh AVRlib adalah

• Timers (with PWM, interrupt management)

• UART (interrupt driven)

• A/D Converter

• I2C Master/Slave (interrupt and non-interrupt)

• SPI Interface

• External Interrupts

• Character LCD Modules (HD44780-based)

• I2C EEPROM Memories

• Printf and other formatted print functions

• FAT16/FAT32

• MMC SPI mode

2.8.2 Rolan Riegle Library

Roland-riegel library adalah library untuk bahasa C AVR yang dibuat

oleh seseorang bernama Roland Riegel. Library ini Berisi Rutin-rutin fungsi yang

dapat digunakan untuk membaca SD card atau MMC card, dan mampu membuka

file system FAT16. Data lengkap tentang library ini dapat ditemukan pada web

<http://www.roland-riegel.de/sd-reader/index.html>. Library ini didistribusikan di

bawah GNU General Public License version 2 yang dikeluarkan oleh The Free

Software Foundation.