A.

REAL TIME CLOCK Real Time Clock merupakan suatu chip (IC) yang memiliki fungsi sebagai penyimpan waktu dan tanggal. Ada dua buah jenis IC RTC yaitu:
1. DS1307 merupakanReal-time clock (RTC) menggunakan jalur data parallel

yang dapat meyimpan data-data detik, menit, jam, tanggal, bulan, hari dalam seminggu, dan tahun valid hingga 2100. 56-byte, battery-backed, RAM nonvolatile (NV) RAM untuk penyimpanan;
2. DS12C887 menggunakan jalur data seri

yang memiliki register yg dapat

menyimpan data detik, menit, jam, tanggal, bulan dan tahun. RTC ini memiliki 128 lokasi RAM yang terdiri dari 15 byte untuk data waktu serta kontrol, dan 113 byte sebagai RAM umum.RTC DS 12C887 menggunakan bus yang termultipleks untuk menghemat pin. Timing yang digunakan untuk mengakses RTC dapat menggunakan intel timing atau motorola timing. RTC ini juga dilengkapi dengan pin IRQ untuk kemudahan dalam proses.

1.1. RTC parallel (DS1307) DS1307 merupakan Real-time clock (RTC) dengan jalur data parallel yang memiliki Antarmuka serial Two-wire (I2C), Sinyal luaran gelombang-kotak terprogram (Programmable squarewave), Deteksi otomatis kegagalan-daya (powerfail) dan rangkaian switch, Konsumsi daya kurang dari 500nA menggunakn mode baterei cadangan dengan operasional osilator. Tersedia fitur industri dengan ketahana suhu: -40°C hingga +85°C. Tersedia dalam kemasa 8-pin DIP atau SOIC

Sedangkan daftar pin DS1307: VCC - Primary Power Supply X1, X2 - 32.768kHz Crystal Connection VBAT - +3V Battery Input GND - Ground SDA - Serial Data SCL - Serial Clock SQW/OUT - Square Wave/Output Driver Gambar diagram PIN:

Untuk masing-masing pin akan di jelaskan sebagai berikut: 1. X1 Merupakan pin yang digunakan untuk dihubungkan dengan 2. X2

. namun dengan persyaratan untuk pengoprasian dalam suhu 25°C. 4. SDA Barfungsi sebagai masukan / keluaran (I/O) untuk I2C serial interface. 6. SWQ/OUT Sebagai square wafe / Output Driver . SCL Berfungsi sebagai clock untuk input ke I2C dan digunakan untuk mensinkronisasipergerakan data dalam serial interface. maka akan menjadi 4 frekuensi gelombang kotak yaitu 1 Hz. Jika pin ini tidak di gunakan maka harus terhubung dengan Ground. 32kHz sifat dari pin ini sama dengan sifat pin SDA dan SCL sehingga membutuhkan eksternal pull up resistor. Pin ini bersifat open drain. 8kHz. Sumber teganggan dengan 48mAH atau lebih besar dapat digunakan sebagai cadangan energy sampai lebih dar 10 tahun. oleh sebab itu membutuhkan eksternal pull up resistor. GND Berfungsi sebagai Ground 5. oleh sebab itu membutuhkan eksternal pull up resistor. Dapat dioprasikan dengan VCC maupun dengan VBAT. VBAT Merupakan backup supply untuk seril RTC dalam menjalankan fungsi waktu dan tanggal. 7. Besarnya adalah 3V dengan menggunakan jenis Lithium Cell atau sumber energy lain. bersifat open drain. Trhubung juga dengan X1 3. 4kHz.Berfungsi sebagai keluaran/ output dari crystal yang digunakan. jika di aktifkan.

namun besar VCC di bawah VTP. VCC Merupakan sumber tegangan utama.8. meskipun selama siklus pembaharuan (update cycle).2 RTC SERI DS12C887 DS12C887 mempunyai 14 buah register yang terdiri dari 4 Register Kontrol dan 10 Register Data. 1. maka pengaksesan data tidak dapat dilakukan. maka pengaksesan data dan pembacaan data dapat dilakukan dengan baik. Pemetaan alamat pada RTC DS12C887 a. Register-register Kontrol DS12C887 memiliki empat register kontrol yang bisa diakses sepanjang waktu. Namun jika backup supply terhubung juga dengan VCC. Jika sumber tegangan terhubung dengan baik. Setelah Register-register Kontrol diinisialisasi. maka data waktu ataupun alarm dapat dibaca atau ditulisi dengan cara mengakses register-register data yang bersangkutan. Register Data sendiri terpisah menjadi register waktu dan Register Alarm sebagaimana ditunjukkan pada gambar 1. Gambar 1. .

namun apabila bit ini bernilai 1. Bit ini tidak akan berpengaruh terhadap kondisi RESET. konfigurasi 11x digunakan untuk mengatur agar perhitungan mundur ditahan. maka Update transfer hanya akan muncul setelah 244 uDetik kemudian.UIP : Bit ini digunakan untuk memantau Flag Update In Progress (UIP). RS1. DV0. DV2 : Ketiga bit ini berfungsi untuk mengatur osilator ON atau OFF. RS0. . RS2 dan RS3 : Bit-bit ini digunakan untuk memilih 15 tingkat pembagi frekwensi yang dapat digunakan untuk membangkitkan sinyal luaran pada pin SQW atau Interupsi periodik. dan RS3. RS2. Kofigurasi 010 digunakan untuk mengatur osilator ON. Tabel berikut menunjukkan berbagai macam kemungkinan frekuensi luaran SQW dan laju Interupsi Peiodik berdasar nilai-nilai RS0. SET : Apabila bit ini bernilai 0. dan me-RESET hitung mundur. DV1. Jika bit ini bernilai 1. RS1. maka register data tidak dapat diupdate. namun bila bit ini bernilai 0. maka Update Transfer akan segera muncul. maka register data dapat diupdate setiap detiknya.

bit yang membuat bit Update End Flag (UF) dapat membangkitkan kondisi LOW pada pin IRQ. Kondisi RESET atau logika 1 pada bit SET akan membuat bit ini berubah menjadi clear (bernilai 0). Jika PIE = 1. DM : DM = 1 untuk mode binary dan DM = 0 untuk data BCD pada Register Data. maka waktu berjalan berdasarkan 12 jam. maka waktu berjalan berdasarkan 24 jam dan sebaliknya bila bit ini bernilai 0.PIE : Periodic Interrupt Enable. apabila bit ini bernilai 1. UIE : Update Ended Interrupt Enable. maka akan terjadi proses update pada saat 1:59:59 AM menjadi 3:00:00 AM pada Hari Minggu pertama bulan April dan saat 1:59:59 AM menjadi 1:00:00 AM pada Hari Minggu terakhir Bulan Oktober. merupakan sebuah bit baca/tulis yang membolehkan bit PF atau Periodic Interrupt Flag pada Register C meng-nol-kan pin luaran IRQ. DSE : Daylight Saving Enable. 24/12: Apabila bit ini bernilai 1. maka interupsi periodik akan dihasilkan dengan meng-nolkan pin luaran IRQ dengan laju yang ditentukan oleh RS0 s/d RS2 (lihat penjelasan sebelumnya). . AIE : Alarm Interrupt Enable. bit yang membuat bit Alarm Flag dapat membangkitkan kondisi LOW pada pin IRQ. SQWE : Apabila bit ini bernilai 1. maka gelombang kotak dengan frekwensi yang ditentukan oleh pembagi frekwensi pada RS0 s/d RS3 akan dihasilakn melalui pin SQW. Kondisi RESET akan mengubah bit ini menjadi clear atau bernilai 0.

Bit ini akan bernilai 0 saat pembacaan pada Register C atau kondisi RESET. Bit ini akan bernilai 0 saat pembacaan pada Register C atau kondisi RESET. dan simpanan data RTC dan RAM menjadi dipertanyakan. UF: Update Ended Interrupt Flag. AF : Alarm Interrupt Flag. bit ini siklus update. maka kondisi SET pada bit AF akan membangkitkan kondisi LOW pada pin IRQ. AF dan UF juga bernilai 1. Apabila bit UIE aktif maka kondisi SET pada bit ini akan membangkitkan kondisi LOW pada pin IRQ. bit ini akan bernilai 1 secara periodik (tergantung bit RS0 s/d RS3). artinya terjadi pelemahan arus/tegangan pada baterai. Apabila bit PIE aktif. Berikut ini gambar pin-pin dari RTC DS 12C887. maka kondisi SET pada bit PF akan membangkitkan kondisi LOW pada pin IRQ.IRQF : Interrupt Request Flag. PF : Periodic Interrupt Flag. bit ini akan bernilai 1 apabila salah satu dari bit PF. bit ini akan bernilai 1 saat waktu sekarang cocok dengan waktu yang diatur pada alarm. jumlah total pin-nya sebanyak 13 buah : . Jika terjadi nilai 0. dan seharusnya bernilai 1 terus saat dibaca. Bit ini tidak bisa ditulisi. Bit ini tidak dipengaruhi RESET. Bit ini akan bernilai 0 (Clear) saat pembacaan pada Register C atau kondisi RESET VRT: Bit The Valid RAM and Time ini merupakan indikator kondisi baterai yang terhubungkan ke pin Vbat. Apabila bit AIE aktif.

Gambar 1 Pin RTC DS 12C887 Gambar 2 Diagram Blok DS12C887 Terlihat dari diagram blok tersebut bawhwa RTC terbagi menjadi beberapa bagian utama dengan kontrol maupun I/O untuk operasinya. Berikut ini keterangan dari fungsi masing-masing pin .

No Connect (tidak dihubungkan kemana-mana) MOT . .Multiplexed Address/Data Bus NC . Intinya.AD7 (Adrress/Data bus yang ter-multipleks dan dwi-arah) Bus yang ter-multipleks akan menghemat penggunaan pin karena informasi alamat dan data menggunakan jalur sinyal yang sama. RTC menghasilkan luaran 8 bit data pada saat pin DS dan RD diberi pulsa.Data Strobe RESET .Masukan RTC Chip Select AS . kemudian dilanjutkan dengan proses pembacaan atau penulisan data ke alamat tersebut.Pemilih tipe bus CS . Bus akan menjadi berimpedansi tinggi saat pulsa LOW diberikan pada pin DS (motorola) atau pulsa HIGH diberikan pada pin RD (intel). kirim alamat melalui AD0-AD7 kemudian lakukan penguncian alamat menggunakan siklus 0-1-0 pada AS/ALE.AD0-AD7 .Masukan Read/Write DS .Luaran Permintaan Interupsi SQW . Siklus bus pertama digunakan untuk jalur alamat.Masukan Reset IRQ .Ground Penjelasan singkat dari masing-masing pin RTC DS12C887 sebagai berikut : AD0 .+5 Volt Main Supply GND . dan siklus bus kedua digunakan untuk jalur data (bergantian antara alamat dan data).Address Strobe (ALE) R/W .Luaran Gelombang Kotak VCC .

sehingga kita bisa melakukan aktivasi secara manual di dalam program. Saat Vcc berada dibawah 4. Aksi ini akan melindungi data jam real time dan isi dari RAM selama terjadi gangguan tegangan. Ketika pin ini dihubungkan dengan VCC. Perintah akses (apakah baca atau tulis) harus dikirim bersamaan dengan proses ini. Sedangkan perubahan dari 1 ke 0 akan menyebabkan jalur AD0-AD7 dianggap sebagai alamat memori DS12C887. R/W (Read/Write Input) Pin R/W memiliki 2 mode operasi. maka terjadi siklus baca. Pin ini memiliki pull down internal sekitar 20 kOhm. maka DS12C887. jika ada beberapa piranti pada modul aplikasi Anda. . secara internal. Pewaktuan bus Motorola R/W=HIGH dan DS=HIGH. MOT dihubungkan ke Vcc. R/W=LOW dan DS=HIGH. Anda bisa menghubungkan CS ke GND supaya selalu aktif.MOT (Mode Select) Pin MOT memberikan kebebasan untuk memilih dua tipe bus. AS (Address Strobe) Perubahan dari 0 ke 1 pada AS digunakan untuk menghapus alamat sebelumnya. atau bisa melalui salah satu pin dari mikrokontroler yang digunakan. maka terjadi siklus tulis. CS (Chip Select Input) Intinya. CS digunakan untuk aktivasi IC RTC DS12C887. maka pewaktuan bus Motorolla yang dipilih. sedangkan ketika dihubungkan ke ground atau dibiarkan (tak dihubungkan) maka pewaktuan bus Intel yang dipilih. akan menahan akses siklus bus dengan cara menon-aktifkan masukan CS.25 volt.

waktu RESET dijaga low harus melebihi 200 ms untuk meyakinkan bahwa timer internal dari RTC untuk penyalaan telah cukup. Pin RESET juga menghapus interupsi yang dilakukan atau yang belum terjadi (pending). pin RESET dapat dijaga LOW untuk beberapa saat untuk menstabilkan catu daya. Lamanya waktu pin RESET diberikan low tergantung dari aplikasi yang digunakan. diberi nama WR = WE (write enable) pada RAM-RAM umum. IRQ (Interrupt Request Output) Pin IRQ adalah keluaran active low dari RTC 12C887 yang digunakan sebagai masukan interupsi pada prosessor. Untuk menghapus interupsi biasanya dilakukan dengan membaca register C.MOT dihubungkan ke GND. MOT dihubungkan ke Vcc. Pewaktuan Bus Intel DS/RD aktif LOW sebagai pin RD sama seperti pada RAM-RAM umum RESET (Reset Input) Pin RESET tidak berpengaruh terhadap jam. Keluaran IRQ tetap low selama selama bit status menyebabkan interupsi terjadi dan bit yang berhubungan yaitu interrupt-enable di-set. DS (Data Strobe atau Masukan Baca) Pin DS/RD memiliki 2 mode operasi. Pewaktuan Bus Intel R/W aktif LOW. . kalender atau RAM. Berkaitan dengan proses baca/tulis MOT dihubungkan ke GND. Pada saat penyalaan RTC. Akan tetapi jika reset digunakan saat power up (penyalaan). Pewaktuan bus Motorola DS digunakan sebagai Data strobe. Ketika tidak terjadi interupt maka level IRQ berada pada kondisi high impedance.

Sinyal SQW dapat dihidupkan dan dimatikan dengan mengatur bit SQWE pada register B.25 volt. Vcc Merupakan pin untuk atu daya RTC.Beberapa peralatan interupsi dapat dihubungkan dengan IRQ bus. GND. maka proses baca dan tulis tidak dapat dilakukan. Sinyal SQW tidak hidup ketika VCC dibawah 4. Fungsi pewaktu dari RTC memiliki akurasi ± 1 menit per bulan pada suhu 250 C walaupun tanpa adanya catu pada Vcc. . Akan tetapi. Sedangkan ketika Vcc dibawah 4. Frekuensi dari SQW dapat dipilih dengan memprogram register A seperti pada tabel.25 volt. Ketika tegangan 5 volt diberikan dalam batas yang normal. catu daya untuk RAM dan pewaktu dipindahkan ke internal lithium batery yang terdapat pada RTC. SQW (Square Wave Output) Pin SQW dapat mengeluarkan sinyal kotak. Vcc diberikan input +5volt. RTC bebas diakses dan data dapat ditulis atau dibaca. dari satu sampai 13 pembagian yang disediakan oleh 15 buah tingkat pembagi (divider) internal dari RTC. Bus IRQ adalah keluaran open drain dan memerlukan tambahan resistor pull-up. proses pewaktu (timekeeping) tetap dilakukan oleh RTC tanpa dipengaruhi oleh tegangan masukan yang rendah. Saat Vcc turun dibawah 3 volt.

let’s get started… KIta awali dengan beberapa definisi atau inisialisasi program… $regfile = "89s8252. dan “d” untuk menampilkan informasi tanggal melalui terminal serial komputer (bisa menggunakan HyperTerminal atau lain yang sejenisnya).APLIKASI Contoh Rangkaian ke mikrokontroler AT89 (plus rangkaian komunikasi serial): Dan sekarang ke contoh program. Baik…. sengaja saya gunakan bahasa tingkat tinggi BASIC. karena rumitnya protokol komunikasi I2C jika diimplementasikan menggunakan bahasa Assembly.dat" $crystal = 11059200 $baud = 9600 Keterangan: . Tujuannya adalah sistem menanggapi perintah “t” untuk menampilkan informasi jam. Okey.

Anda bisa mengubah untuk kecepatan yang lain. Reg_month. yaitu 9600 bps. Reg_min As Byte . $baud digunakan untuk menentukan kecepatan komunikasi serial. Num_year As Byte Dim Masuk As String * 1 Keterangan: Reg_sec. Num_min As Byte . dan Reg_hour merupakan variabel-variabel 8-bit atau 1 byte yang digunakan untuk menyimpan hasil pembacaan RTC DS1307 yang masingmasing untuk data detik. dan ini penting banget soalnya akan menentukan proses kompilasi perintah-perintah I2C yang terkait. Reg_hour As Byte Dim Num_hour As Byte . Jika Anda salah menuliskan angkanya atau angka yang ditulis tidak sama dengan kristal yang terpasang di rangkaian. Num_month As Byte . Reg_date. Reg_month As Byte . Selanjutnya. Num_min. dan Num_hour merupakan variabel-variabel 8-bit atau 1 byte yang digunakan untuk menyimpan hasil konversi BCD (pembacaan RTC) ke desimal. Num_sec. bulan dan tahun. Reg_year As Byte Dim Num_date As Byte . . $crystal kita gunakan untuk mendefinisikan frekuensi kristal yang terpasang pada rangkaian kita. yaitu 89s8252. Reg_min. kita definisikan beberapa variabel untuk kebutuhan pemrograman: Dim Reg_sec As Byte . Num_sec As Byte Dim Reg_date As Byte . dan Reg_year merupakan variabel-variabel 8-bit atau 1 byte yang digunakan untuk menyimpan hasil pembacaan RTC DS1307 yang masingmasing untuk data tanggal. menit dan jam.$regfile digunakan untuk mendefinisikan mikrokontroler yang digunakan.

dan jam. yaitu SCL dan SDA (perhatikan diagram pinnya). . Masuk sebagai variabel untuk menyimpan sebuah karakter (string * 1) kiriman dari port serial.0 ' jalur untuk clock I2C Config Sda = P2. yang akan dikirim melalui komunikasi serial.yang akan dikirim melalui komunikasi serial. Num_date. masing-masing untuk detik.ground) yang digunakan untuk komunikasi dengan mikrokontroler. bulan. Num_month. dan Num_year merupakan variabel-variabel 8-bit atau 1 byte yang digunakan untuk menyimpan hasil konversi BCD (pembacaan RTC) ke desimal. masing-masing untuk tanggal. masing-masing untuk perintah baca jam dan baca tanggal. yang diterjemahkan hanya “t” dan “d”. dan tahun.1 ' jalur untuk data I2C '------------------------------------------Keterangan: Hanya 2 kabel utama (selain menyamakan GND . Langkah berikutnya adalah mendefinisikan jalur atau pin dari mikrokontroler ke RTC-nya (DS1307): '-----------------------------------------' konfigurasi bus I2C Config Scl = P2. menit.

masing-masing disimpan ke dalam variabel DS1307w dan DS1307r. masingmasing di 00h. sedangkan SDA (serial data) dihubungkan dengan P2. menit dan jam. 01h dan 02h. Kemudian kita definisikan beberapa konstanta yang berkaitan dengan alamat-alamat register di dalam DS1307 (silahkan merujuk datasheet DS1307 (PDF): ' perintah penulisan Const Ds1307w = &HD0 ' perintah pembacaan Const Ds1307r = &HD1 ' alamat register DS1307 yg berhubungan dengan jam Const Sec_addmap = &H00 Const Min_addmap = &H01 Const Hour_addmap = &H02 ' alamat register DS1307 yg berhubungan dengan tanggal Const Date_addmap = &H04 Const Month_addmap = &H05 Const Year_addmap = &H06 Keterangan: Instruksi atau perintah yang digunakan untuk penulisan data ke RTC DS1307 adalah D0h. .1. Alamat-alamat yang berhubungan dengan jam untuk detik.SCL (serial clock) dihubungkan dengan P2. sedangkan untuk pembacaan D1h.0.

":" . 05h dan 06h. Num_month . Selain itu akan dikirim data jam atau tanggal. dan “baca tanggal”. "/" . mikrokontroler akan mengirimkan “er” sebagai tanda salah kirim perintah. "/" . Num_min . tetapi hanya huruf “t” (huruf kecil). Num_sec Case "d" : Call Read_date Print Num_date . perhatikan potongan program utamanya berikut ini (pengulangan menggunakan DO LOOP.Alamat-alamat yang berhubungan dengan jam untuk tanggal. Program utamanya melakukan menunggu masukan port serial. Terdapat dua subrutin: (1) Read_time digunakan untuk membaca data dan (2) Read_date untuk membaca tanggal… . Selain kedua perintah tersebut. semua karakter diterima. ":" . dan “d” diterjemahkan masing-masing untuk “baca jam”. Num_year Case Else Print "er" End Select Loop End Perhatikan pada program utama. bulan dan tahun. masing-masing di 04h. penerjemahan menggunakan SELECT CASE): Do Input Masuk Select Case Masuk Case "t" : Call Read_time Print Num_hour .

Ack I2CRbyte Reg_min . if =0 (24 hourmode) If Reg_hour. Ack I2CRbyte Reg_hour .6 =1(12 hrmode). Nack I2CStop ' Generate Stop ' reg_hour.'-=-=-=-=-=-=-=-=-=-=-=-=-= Sub Read_time '-=-=-=-=-=-=-=-=-=-=-=-=-= ' Read Clock Data I2CStart ' Generate start I2CWbyte Ds1307w ' Slave address I2CWbyte Sec_addmap ' Address of SECONDS REG I2Cstop ' Generate Stop I2Cstart ' Repeated start I2CWbyte Ds1307r ' Slave address (read) I2CRbyte Reg_sec .6 = 1 Then .

Reg_hour = Reg_hour And &B00011111 Else Reg_hour = Reg_hour And &B00111111 End If '=-=-=-=-=-=-=-=-=-=-=' Reg_hour = Reg_hour And &B00111111 ' remove 12/24 and am/pm bits ' set numeric variables Num_hour = Makedec(reg_hour) Num_min = Makedec(reg_min) Num_sec = Makedec(reg_sec) End Sub Keterangan: Ini merupakan subrutin Read_time yang digunakan untuk membaca jam. . diawali dengan I2Cstart (lagi. kemudian dilanjutkan dengan I2CWByte DS1307w (menuliskan perintah atau instruksi). Proses pembacaan jam dan tanggal pada dasarnya sama saja. Kemudian diikuti dengan menuliskan alamat register detiknya: I2CWByte Sec_addmap dan dihentikan dengan I2CStop. Langkah selanjutnya adalah mulai membaca dari data detik. diawali dengan (lihat listing programnya) inisialisasi I2Start. awal pembacaan data) kemudan perintah membaca dikirimkan ke RTC menggunakan instruksi I2CWbyte DS1307r.

Kemudian baru data detik. Untuk proses normalisasi terhadap mode jam. NAck). digunakan pengecekan pada bit-6 di Reg_hour. apakah mode 12 jam atau 24 jam. dan detik (I2CRbyte Reg_hour. Ack digunakan untuk indikator masih ada data yang lain perlu dibaca (kebalikannya adalah NAck). NAck artinya tidak ada lagi data yang perlu dibaca. Untuk subrutin baca data tanggal sebagai berikut: '-=-=-=-=-=-=-=-=-=-=-=-=-= Sub Read_date '-=-=-=-=-=-=-=-=-=-=-=-=-= ' Read Clock Data I2cstart ' Generate start I2cwbyte Ds1307w ' Slave address I2cwbyte Date_addmap ' Address of SECONDS REG I2cstop ' Generate Stop . jangan lupa di-stop. Ack untukmembaca data detik. Langkah terakhir adalah merubah hasil pembacaan yang masih dalam format BCD ke decimal melalui instruksi Makedec(). Ack). menit dan jam-nya dibaca berturut-turut menggunakan perintah I2CRbyte Reg_sec. Dan berturut-turut membaca data menit (I2CRbyte Reg_min.

perintah atau huruf lain ditanggapi dengan “er”: . perhatikan hanya “t” dan “d” saja yang diterjemahkan. Nack I2cstop ' Generate Stop ' set numeric variables Num_date = Makedec(reg_date) Num_month = Makedec(reg_month) Num_year = Makedec(reg_year) End Sub Contoh tampilan running program di mikrokontroler. Ack I2crbyte Reg_month .I2cstart ' Repeated start I2cwbyte Ds1307r ' Slave address (read) I2crbyte Reg_date . Ack I2crbyte Reg_year .

Sign up to vote on this title
UsefulNot useful