Programmer MCS-51 dengan media MMC - library@petra
-
Upload
khangminh22 -
Category
Documents
-
view
4 -
download
0
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
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
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
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.