Komunikasi RTC dengan AVR
Siang-siang begini,,enaknya ngapain ya,,dari pada bengong mending corat-coret di blog ini. Kali ini akan dibahas bagaimana komunikasi RTC dengan AVR. RTC kepanjangan dari Real Time Clock yaitu sebuah devais yang berfungsi sebagai pewaktu digital berupa time dan date yang dilengkapi dengan batteray backup sehingga apabila catu daya tidak diberikan devais ini akan dicatu dengan batteray backup ini, sehingga devais akan tetap bekerja. RTC biasanya digunakan dalam aplikasi jam digital dan sebuah sistem monitoring yang memerlukan data waktu misalnya sistem ppembayaran online. RTC ada dua macam dalam pengaksesan data, yaitu secara parallel dan secara serial. Pada tulisan ini RTC yang digunakan adalah RTC yang diakses secara serial atau lebih dikenal dengan I2C. Untuk mengakses devais ini hanya diperlukan dua jalur yaitu SCK dan SDA, jalur SCK digunakan sebagai jalur clock dan SDA sebagai jalur data. RTC yang digunakan oleh penulis adalah tipe DS1302. IC ini dapat menghitung detik, menit, jam, tanggal, builan, hari dan tahun. Memiliki 31 x 8 RAM dan dalam transfer datanya baik proses baca atau tulis dapat dilakukan secara single-byte maupun multiple-byte. Konfigurasi pin DS1302 dapat dilihat pada gambar 1.
Gambar 1. Pin DS1302
Adapun penjelasan dari pin diatas adalah sebagai berikut:
- VCC2 : dihubungkan dengan catu daya utama, sistem catu daya DS1302 dilihat perbandingan VCC1 dan VCC2, jika VCC2 > VCC1+0,2V maka IC dicatu oleh VCC2 tapi jika VCC2 lebih kecil dari VCC1, maka yang mencatu adalah VCC1
- X1 dan X2 : dihubungkan dengan kristal sebesar 32,768KHz.
- GND : dihubungkan ke Ground
- VCC1 : dihubungkan ke catu daya backup seperti batteray
- SCLK : sebagai jalur clock, dihubungkan dengan mikrokontroller
- I/O : sebagai jalur data, dihubungkan dengan mikrokontroller
- CE : chip enable, berfungsi untuk meaktifkan IC, bisa dihubungkan dengan mikrokontroller.
IC DS1302 akan mengupdate data detik,menit sampai tahun pada register yang terdapat didalamnya, jadi seorang programmer harus dapat mengerti alamat dari masing-masing register detik, menit sampai tahun. Selain register detik, menit sampai tahun terdapat register yang berfungsi untuk mensetting besarnya arus charger ke VCC1. Untuk lebih jelasnya bisa dilihat pada gambar 2.
Gambar 2. Alamat register detik,menit..tahun
Pada gambar diatas terdapat perbedaan alamat register antara proses baca maupun tulis. Proses tulis dimaksudkan untuk mensetting DS1302 seperti mensetting detik, menit, jam,,sampai tahun. Adapun proses baca adalah membaca data detik, menit,,dampai tahun. Jadi seorang programmer harus mengerti register mana yang harus diakses dan untuk apa, jangan sampai salah.
Seperti dijelaskan sebelumnya, bahwa IC diakses dengan format I2C sehingga dalam pembuatan program harus mengikuti format I2C tersebut. Dalam I2C terdapat format paket data yang harus diperhatikan yaitu seperti pada gambar 3.
Gambar 3. Format paket data
OK..setelah kita mengetahui IC DS1302, sekarang waktunya membuat hardware dengan AVR. AVR yang digunakan oleh penulis dari jenis Mega8515, AVR ini bisa dirubah disesuaiakan dengan kebutuhan dan tentunya dengan dana heee..
Agar lebih jelasnya bisa dilihat pada gambar 4.
Gambar 4. Hardware AVR dengan RTC DS1302
Ok..Adapun source code dari project diatas dapat didownload pada link dibawah ini lengkap dengan datasheetnya.
Salam – Jabat Erat
Dayat


Mas saya mw tanya, soal RTC
rencananya saya mw buat jam digital dengan RTC DS12887, pake LCD, kira2 AVR apa ya yang cocok buat itu.
Soalnya saya denger, gak bisa pake AVR 8535.
kalo dilihat di datasheetnya, adanya informasi tidak bisa pake AVR8535 kemungkinan disebabkan oleh adanya jalur alamat dan data yang dimultiplexer (AD0-AD7) nah di AVR8535 tidak tersedia jalur tersebut (AD0-AD7)..Jenis AVR yang tersedia jalur tersebut adalah AVR Mega8515, mungkin mas bisa pake itu AVR (Mega8515)..Tapi menurut penulis sebenarnya pake Mega8535 bisa bilakukan caranya tinggal mengikuti timing/sinyal dari AS,DS,R/W dari RTC yang digunakan..dengan mengamati sinyal-sinyal tersebut bisa diatur jalur AD0-AD7 kapan sebagai alamat dan kapan sebagai Data..
Kalo Komunikasi RTC Dengan IC Keluarga MCS-51 Gimana ya mas?
mas pake RTC yang jenis transfer datanya secara parallel atau serial (I2C)..kalo yang parallel kemungkinan besar tidak ada masalah, tapi kalo yang dipake I2C tentunya sedikit pusing di softwarenya..pada project yang telah diposting diatas, komunikasi RTCnya menggunakan I2C tapi tidak memanfaatkan pin I2C dari AVR, project diatas menggunakan port biasa dari AVR, jadi menurut penulis itu bisa digunakan di seri MCS-51, untuk source codenya mas bisa download di link pada postingan project ini..dari program diatas (menggunakan asm) mas tinggal translate ke versi MCS-51 yang penulis kira tidak begitu banyak perbedaan antara asm AVR dengan asm MCS-51…yang perlu diperhatikan adalah sinyal SCK,SDA dan CE..
akhirnya saya pake ds1307, bwt jam digitalnya.
yang saya mw tanyakan, karena saya pake COde Vision. jam yang saya setting keluar hasinya d lcd. tp gak jalan ?
1. coba cek oscillator sudah tersambung dengan X1 dan X2 ds1307.
2. coba periksa register 0 dg alamat 00H..disitu ada bit CH(bit 7),, jika CH=0 maka oscilator aktive, jika CH=1 oscillator tidak aktive,,jika oscillator tidak aktive otomatis ds1307 tidak akan jalan..(berkaitan dengan program waktu inisialisasi ds1307–> baca datasheet halaman 5)
3. coba cek programnya waktu mengambil data, pastikan dalam mode read bukan mode write..
4. perhatikan sinyal ACK dan notACK..
Smoga bisa membantu dan bisa jalan jam digitalnya…jika masih belum bisa jalan, kirimkan lagi pertanyaannya,,kita debug sama-sama
osilatornya dah nymbung, bit CH juga sudah saya clearkan,
karena saya pake CodeVision yang sudah ad librarinya, jd gak mungkin ad kesalahan mode read or write, itupun sudah saya cek di library CV nya.
Signal ACK itu apa ya mas?
karena saya juga gak pake SQWV, jadi pin itu saya biarkan gak tersambung, apa itu juga ngaruh mas?
Sinyal ACK = ACKNOWLEDGE, sinyal ini merupakan tanda dari device bahwa sebuah byte data telah diterima dalam paket data, dalam I2C ada dua sinyal tanda yaitu ACK dan notACK (untuk lebih jelasnya bisa dibaca di datasheet hal7-8),,sinyal notACK hanya digunakan pada mode read..
sepertinya SQWV tidak berpengaruh karena kalo dilihat dari blok diagram SQWv merupakan output dari XTal..
Trima kasih mas skarang jam idgitalnya udah gak masalah lagi, n jalan dengan baik.
klo dilihat permasalannya, itu kristalnya yang gak terpasang dengan baik n mudah rusak
halo…saya heru…saya lagi keulitan bikin jam pake ds1302 dengan ATMega8535 ditampilkan ke LCD…tapi gak nogol2 juga tuh ke LCD…Saya baca comment2 diatas bahwa gak bisa ya klo pake 8535? klo ada yang sudah berhasil bikin pake 8535 tolong bantu saya ya…
pada comment diatas yang diberitakan tidak bisa menggunakan mega8535 klo RTCnya DS12887 bukan DS1302, tapi pada dasarnya bisa menggunakan mega8535 dengan RTC DS12887…program yang penulis sertakan dalam artikel bisa digunakan mas berkreasi sedikit, tinggal buat program untuk menampilkan di LCD…
Gak bs d download source code’y…
Gimana caranya??
@andika –> pada program itu coba dilihat pada file definisi.asm –> lihat setting portnya, sama atau tidak dengan hardware yang mas buat..sepertinya ISD2590 dengan ISD2560 tidak jauh beda programnya..dari program itu tinggal edit dikit2..
@aqshel –> pake isd4003 yang 6 menit atau isd4004 8 mint, coba cari isd400x series..http://hanundany.wordpress.com/2009/10/09/dijual-modul-writer-isd4003/..saya jual modul ISD4004 8menit harganya 475rb..
@Justiceholic –> kalo linknya ndak bisa coba pake link ini http://www.ziddu.com/download/3373704/rtc_m8515.zip.html
mas kalo pakai bahasa c soucode ne gimana?
Mas gambar koneksi antara DS1302 dengan ATMega8535 ga jelas sambung ke port mananya. Bisa diperbesar?
mas, saya sedang membuat jam digital dengan DS1302 & Atmega 8535. Untuk tampilannya, saya ingin menampilkan jam ke lcd. Masalahnya, tulisan yang muncul di lcd hanya 00:00:00. Saya menggunakan codevision avr, dan source codenya saya mengikuti petunjuk di codevision.
ini source code yang saya pakai:
#include mega8535.h
#include stdio.h
#include stdlib.h
#include delay.h
Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0×15 ;PORTC
#endasm
#include lcd.h
DS1302 Real Time Clock functions
#asm
.equ __ds1302_port=0×12 ;PORTD
.equ __ds1302_io=0
.equ __ds1302_sclk=1
.equ __ds1302_rst=2
#endasm
#include ds1302.h
Declare your global variables here
void main(void)
{
Declare your local variables here
unsigned char h,m,s;
char Str[16];
…
LCD module initialization
lcd_init(16);
rtc_init(1,1,1);
rtc_set_time(1,2,3);
while (1)
{
Place your code here
initialize the DS1302 RTC
use trickle charge,
with 1 diode and 8K resistor
read time from the DS1302 RTC
rtc_get_time(&h,&m,&s);
delay_ms(200);
lcd_gotoxy(0,0);
sprintf(Str,%02u %02u %02u ,h,m,s);
lcd_puts(Str);
delay_ms(100);
};
}
kira-kira mana yang salah ya?
@birienz –> mungkin juga, waktu itu saya test pake webcam logitect, os win7.
@beni –> sepertinya itu perlu spech recognize..
@adi –> bisa digunakan di win7 x64, ada disini http://softcircuitry.blogspot.com/2010/02/usbasp-programmer-working-on-windows-7.html
@Ririn –> clock RTCnya sudah benar, sekitar 11,025Khz,,,hubungan pin2nya sudah benar??perhatikan freq clock dari RTCnya,sudah sesuai requirment dari RTC belum??
mau tanya pak,selain untuk jam,aplikasi apa yang membutuhkan RTC ? apakah untuk dunia robotic juga perlu RTC…..??
mas,, kalo pakek atmega 8535 ma ds1307 gmn programnya??? Thanks seblumnya…
@vie : ini ada linknya http://extremeelectronics.co.in/avr-tutorials/interfacing-ds1307-rtc-chip-with-avr-microcontroller/
http://www.ermicro.com/blog/?p=950 semoga bisa membantu
bos saya mau buat jam digital dengan output suara pake RTC Ds1307, keypad dan ISD4004. yg mau saya tanyakan apa bisa digunakan pada arduino duamilanova???? terus untuk IC rekamnya bagus pakai yg mana. thanks….
mas punya library ds1302 untuk bascom avr ga ?? saya butuh ni mas ..
saya lagi ngerjain proyek tugas akhir .. mohon bantuannya ya mas ..
kirim ke email saya aja ..
gan klo pake seven segment gmna programnya?
Q pke program AVR
klo da program AVR yg dah jd kirim email y
ni emailnya hariantara_akbar@yahoo.com