Home > Mikrokontroler > Komunikasi RTC dengan AVR

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.

rtcGambar 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.

rtc2Gambar 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.

rtc3Gambar 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.

rtc4Gambar 4. Hardware AVR dengan RTC DS1302

Ok..Adapun source code dari project diatas dapat didownload pada link dibawah ini lengkap dengan datasheetnya.

Source Data

Salam – Jabat Erat

Dayat

Categories: Mikrokontroler
  1. Arnold
    February 23, 2009 at 7:54 am

    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.

  2. Dayat Kurniawan
    February 23, 2009 at 9:45 am

    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..

  3. Iman
    February 26, 2009 at 10:18 am

    Kalo Komunikasi RTC Dengan IC Keluarga MCS-51 Gimana ya mas?

  4. Dayat Kurniawan
    February 26, 2009 at 1:53 pm

    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..

  5. Arnold
    March 19, 2009 at 3:44 pm

    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 ?

  6. Dayat Kurniawan
    March 20, 2009 at 9:14 am

    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🙂

  7. Arnold
    March 22, 2009 at 2:12 pm

    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?

  8. Dayat Kurniawan
    March 23, 2009 at 10:21 am

    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..

  9. Arnold
    April 3, 2009 at 11:38 am

    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

  10. April 21, 2009 at 10:00 am

    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…

  11. Dayat Kurniawan
    April 22, 2009 at 3:50 pm

    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…

  12. Justiceholic
    February 15, 2010 at 8:51 am

    Gak bs d download source code’y…
    Gimana caranya??

  13. Dayat Kurniawan
    February 16, 2010 at 3:31 am

    @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..https://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

  14. ono
    March 8, 2010 at 4:44 pm

    mas kalo pakai bahasa c soucode ne gimana?

  15. bent
    June 16, 2010 at 9:01 am

    Mas gambar koneksi antara DS1302 dengan ATMega8535 ga jelas sambung ke port mananya. Bisa diperbesar?

  16. Ririn
    October 17, 2010 at 7:33 pm

    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=0x15 ;PORTC
    #endasm
    #include lcd.h

    DS1302 Real Time Clock functions
    #asm
    .equ __ds1302_port=0x12 ;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?

  17. Dayat Kurniawan
    October 18, 2010 at 8:53 am

    @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??

  18. December 2, 2010 at 6:36 am

    mau tanya pak,selain untuk jam,aplikasi apa yang membutuhkan RTC ? apakah untuk dunia robotic juga perlu RTC…..??

  19. vie
    January 13, 2011 at 7:13 am

    mas,, kalo pakek atmega 8535 ma ds1307 gmn programnya??? Thanks seblumnya…

  20. Dayat Kurniawan
  21. wimpy
    November 15, 2011 at 8:49 pm

    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….

  22. gery
    November 17, 2011 at 12:37 am

    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 ..

  23. akbar
    February 6, 2012 at 10:15 pm

    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

  24. Anonymous
    September 27, 2012 at 4:37 pm

    mas bro gk ada gambarnya, saya bingung inteface nya sama coding nya neh.. untuk ATMEGA 8535 sama ds1302, untuk tugas mas bro…
    tolong email ya gb nya aqiens@yahoo.co.id

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: