Anda di halaman 1dari 8

DISKUSI-11 RTC

11.1

Tujuan
Mengenal dan memahami prinsip dasar RTC, membuat simulasi jam digital
danmemodelkan dalam perangkat keras, serta mencatat pada EEPROM

11.2

Dasar Teori
11.2.1 EEPROM
EEPROM serial adalah inovasi teknologi non-voletile memory yang
menarik. Berbeda pada umumnya chip memori yang biasa diakses secara paralel,
memori jenis ini memiliki cara akses serial dengan suatu standar tersendiri. Ada
dua standar yang umum digunakan yaitu I2C Bus dan Microwire .
Akses kesebuah alamat sel memory dilakukan secara serial, dan penulisan
ataupun pembacaan data juga dilakukan secara serial. IC EEPROM serial yang
digunakan produk ATMEL yaitu AT24C512 yang menyediakan 524,288 bit
Electrically Erasable and Programmable Read Only Memory (EEPROM)
pengalamatan word 128 * 16 bit dengan cara akses menggunakan teknologi
Microwire. Berikut ini adalah konfigurasi pin AT24C512.
A0

VCC

A1

WP

NC

SCL

GND

SDA

Gambar 11-1 Konfigurasi Pin AT24C512


No

Nama Pin

1
2
3
4
5
6
7
8

A0
A1
NC
GND
SDA
SCL
WP
VCC

Fungsi
Address Input
Address Input
No Connection
Ground
Serial Data
Serial Clock Input
Write Protect
Supply Power

Tabel 11-1 Fungsi Pin AT24C512


AT24C512 menyediakan 8 bit pengalamatan dengan kondisi start untuk operasi
baca tulis ke atau dari chip melalui address bit A1 dan A0.

Pemodelan dan Simulasi

11-1

11.2.2 RTC
Real-time clock disingkat RTC adalah jam di komputer yang umumnya berupa
sirkuit terpadu yang berfungsi sebagai pemelihara waktu. RTC umumnya
memiliki catu daya terpisah dari catu daya komputer (umumnya berupa baterai
litium) sehingga dapat tetap berfungsi ketika catu daya komputer terputus.
Kebanyakan RTC menggunakan oskilator kristal.
RTC tipe DS1307 merupakan jenis pewaktu yang menggunakan komunikasi
serial untuk operasi tulis baca, dengan spesifikasi berikut ini:

Real-time clock (RTC) 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;

Antarmuka serial Two-wire (I2C)

Sinyal luaran gelombang-kotak terprogram (Programmable squarewave);

Deteksi otomatis kegagalan-daya (power-fail) dan rangkaian switch;

Konsumsi daya kurang dari 500nA menggunakn mode baterei cadangan


dengan operasional osilator;

Tersedia fitur industri dengan ketahana suhu: -40C hingga +85C

Tersedia dalam kemasa 8-pin DIP atau SOI


X1

VCC

X2

SQW/OUT
SCL

VBATt
GND

SDA

Gambar 11-2 Konfigurasi Pin DS1307


No

Nama Pin

1
2
3
4
5
6
7
8

X1
X2
VBAT
GND
SDA
SCL
SQW/OUT
VCC

Fungsi
Oscillator Crystal
32,768KHz
Battery Input (+3V)
Ground
Serial Data
Serial Clock Input
Square Wave/Output Driver
Supply Power

Pemodelan dan Simulasi

11-2

Tabel 11-2 Fungsi Pin DS1307


Blok diagram internal DS1307 adalah:

Gambar 11-3 Blok Diagram Circuit DS1307

X1 dan X2 adalah pembangkit pulsa yang terhubung dengan quart krtstal 32,768Khz
sebagai internal circuit oscillator yang didesain dengan CL 12,5pF. X1 adalah osilator
input yang terhubung langsung dengan kristal, sedang X2 adalah keluaran dari osilator
kristal internal.

Power Control merupakan catu daya yang mensuplay tegangan ke DS1307, Vcc adalah
daya luar sebesar 5V dan VBAT sebagai suplai input dengan 3V lithium Cell. Tegangan
baterei harus berada diantara batasan minimum dan maksimum pengoperasian. Baterei
lithium 48mAh atau lebih dapat mempertahankan fungsi RTC selama 10 tahun.

Serial Bus Interface And Address Register merupakan jalur data serial dan pengalamatan
register DS1307 dengan akses pulsa melalui SCL dan SDA. SCL (Serial Clock) berfungsi
sebagai clock input I2C dan digunakan untuk sinkronisasi data serial. SDA (Serial Data)
berfungsi sebagai data input/output untuk I2C serial, baik SCL dan SDA masih
memerlukan pull up eksternal.

Control Logic merupakan pengendali data-data yang dibaca ataupun ditulis melalui SCL
dan SDA dengan pewaktu dari osilator kristal.

Buffer (7 bytes) adalah penyangga sementara sebelum data diterima atau dikirim,
berkisar 7 bytes (7 x 8 bit) sebagai transit pengalamatan register 8 bit detik-menit-jamhari-tanggal-bulan-tahun.
Pemodelan dan Simulasi

11-3

Clock, Calender and Control Register atau CR berisi informasi clock dan kalender serta
register pengendali untuk mengontrol pengoperasian SQW/OUT.
Clock and Calender merupakan register RTC dengan waktu dan kalender dengan akses
pembacaan dan penulisan register byte dalam format BCD seperti yang diperlihatkan
pada tabel berikut:
.

Tabel 11-3 Register RTC


Dari tabel terlihat bahwa RTC memiliki 8 register (R0 R7 / detik jam dan CR) dalam
ruang address 00 07h. Bit 7 dari R0 adalah CH (Clock Halt) bit, ketika di set 1 maka
osilator disable dan ketika di clear 0 maka osilator enable. DS1307 dapat dijalankan
dengan 12jam atau 24jam, mode pemilih berada di Register Jam bit ke 6. Ketika high
berarti mode 12 jam dipilih dan bit ke 5 akan selalu high selama PM.
Control Register adalah register untuk mengendalikan pin SQW

Tabel 11-4 Bit Control Register


Bit 7 = Control Out yaitu sebagai pengendali keluaran pin SQW/OUT ketika gelombang
square disable. Jka SQWE = 0, maka SQW = 1 jika OUT = 1, dan akan SQW = 0 jka
OUT = 0.
Bit 4 = SQWE (Square Wave Enable). Ketika bit ini di set 1 maka osilator output
enable. Frekuensi yang dihasilkan tergantung dari nilai RS1 dan RS0.
Bit 1 dan 0 = bit pengendali frekuensi SQW out ketika enable, dan dapat dipilih melalui
RS1 dsan RS0 dengan range frekuensi seperti pada tabel berikut:

Pemodelan dan Simulasi

11-4

Tabel 11-5 Pemilih RS Bit


Bentuk fisik dan rangkaian pengoperasian DS1307 adalah sebagai berikut:

(a)

(b)

Gambar 11-3 (a) Bentuk fisik (b) DS1307 Circuit


Skema rangkaian DS1307 di modul AVR adalah

RTC

Y1
U3
32.768KHz

BAT1
3V

1
2
3
4

X1
VCC
X2
SQW
VBAT SCL
GND
SDA

8
7
6
5

VCC
PB2
PB0
PB1

R-scl
10K

R-sda
10K

DS1307RTC

Contoh Aplikasi:
Sebelum memulai akses RTC lakukan settingan seperti berikut:
#include <bcd.h>
#define port_segmen PORTA //misalkan data segmen di PORT A
#define sel1 PORTC.1 //drive 1
#define sel2 PORTC.2 //drive 2
#define sel3 PORTC.3 //drive 3
#define sel4 PORTC.4 //drive 4
#define nol 0xc0
#define satu 0xf9
#define dua 0xa4
#define tiga 0xb0
#define empat 0x99
#define lima 0x92
#define enam 0x82
#define tujuh 0xf8
#define delapan 0x80
Pemodelan dan Simulasi

11-5

#define sembilan 0x90


// Inisialisasi scl dan sda di Port B
#asm
.equ __i2c_port=0x18 ;PORTB
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#include <i2c.h>
#include <ds1307.h>
Untuk inisialisasi diatas dapat dilakukan menggunakan CodeWizzardAVR seperti berikut:
Pilih I2C PORTB SCL Bit=0, SDA Bit=1 aktifkan DS1307 centang kolom enable

Gambar 11-4 Setting DS1307


Contoh scanning 7 segmen adalah:
char cnt_dsp=0;
char buff_scan=0;
bit flag_blink;
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
if (++buff_scan == 255)
Pemodelan dan Simulasi

11-6

{
buff_scan = 0;
switch (cnt_dsp)
{
case 0:
sel4 = 1;
port_segmen = buff_dsp[0];
sel1 = 0;
break;
case 1:
sel1 = 1;
port_segmen = buff_dsp[1];
sel2 = 0;
break;
case 2:
sel2 = 1;
port_segmen = buff_dsp[2];
sel3 = 0;
break;
case 3:
sel3 = 1;
port_segmen = buff_dsp[3];
sel4 = 0;
break;
default:;
}
if (++cnt_dsp == 4)
cnt_dsp = 0;
}
}
char bcd2seg(char c)
{
switch (c)
{
case 0:
c = nol;
break;
case 1:
c = satu;
break;
case 2:
c = dua;
break;
case 3:
c = tiga;
break;
case 4:
c = empat;
break;
case 5:
c = lima;
break;
case 6:
Pemodelan dan Simulasi

11-7

c = enam;
break;
case 7:
c = tujuh;
break;
case 8:
c = delapan;
break;
case 9:
c = sembilan;
break;
}
return c;
}
//switch case digunakan untuk melakukan seleksi dengan banyak kondisi, scanning dapat juga
dilakukan langsung setelah proses pengambilan waktu dan kalender di DS1307
Contoh proses pengambilan waktu:
void get_time()
{
char buff[4];
rtc_get_time(&jam,&mnt,&dtk);
jam = bin2bcd(jam);
mnt = bin2bcd(mnt);
buff[0] = mnt & 0xf;
buff[1] = ((mnt & 0xf0) >> 4);
buff[2] = jam & 0xf;
buff[3] = ((jam & 0xf0) >> 4);
buff_dsp[0] = bcd2seg(buff[0]);
buff_dsp[1] = bcd2seg(buff[1]);
buff_dsp[2] = bcd2seg(buff[2]);
buff_dsp[3] = bcd2seg(buff[3]);
if (flag_blink)
buff_dsp[2] &= 0x7f; //memanfaatkan titik pada seven segment ke 3
untuk dijadikan detik.
}
Port-port di atur dengan nilai seperti berikut:
PORTA=0xFF;
DDRA=0xFF; //output
PORTB=0x00;
DDRB=0x00;
PORTC=0x1F;
DDRC=0xFF;//output
PORTD=0x00;
DDRD=0x00;

Pemodelan dan Simulasi

11-8

Anda mungkin juga menyukai