Pic ile DS1302 kullanımı ve C kütüphanesi

DS1302; RTC, takvim ve 31 byte’lık RAM’a (pil korumalı) sahiptir. Mikroişlemci ile basit seri bir ara yüzle haberleşir. Gerçek zaman saati (RTC) saniyeyi, dakikayı, saati, günü, ayı, yılı, haftanın gününü sayar ve 2100 yılına kadar tarih bilgileri yüklüdür. 2.0 V ile 5.0 V arasında gerilimlerde çalışabilir. 2.0 V’ta 300 nA‘den daha az akım tüketir. Saat ve RAM hafızasına yazma ve okuma için seri olarak okuma veya yazma işlemi yapabilme (burst) moduna sahiptir. TTL ile uyumludur ( Vcc = 5 V ). – 40 °C ile +85 °C arasında çalışabilir.

DS1302’nin iki farklı besleme (VCC1, VCC2) giriş ucu vardır. Bu uçlardan bir tanesine bağlanan bir pil vasıtasıyla devreye enerji verilmediğinde dahi DS1302 saat ve zaman bilgilerini hafızasında tutmaya devam eder. Vcc1, Vcc2 + 0.2V olduğunda DS1302 beslemesini Vcc1 üzerinden yapar. Aynı şekilde Vcc2, Vcc1 + 0.2V veya daha büyük bir değere ulaştığında DS1302 otomatik olarak, besleme gerilimi için Vcc2 pinini kullanmaya başlar. DS1302 ile yapılan tüm haberleşmeler komut baytı ile başlar. Komut baytının en anlamlı biti (MSB) her zaman lojik “1” olmalıdır.

Bu bit lojik ”0” olarak DS1302‘ye gönderilirse, DS1302’den herhangi bir yanıt alınamaz. Komut byte’ı Şekil-1‘de gösterilmiştir.

Şekil.1. Komut Byte’ı

Bit 6 lojik “0” olarak gönderilirse, saat / takvim üzerinde okuma veya yazma işlemi yapılır. Bu bit lojik “1” olarak DS1302 ‘ye gönderilirse, DS1302’nin 31 bitlik RAM hafızasında okuma veya yazma işlemi yapılır. Bit 1 den bit 5’e kadar olan bölüm ise ulaşmak istediğimiz registerın adresinin belirtilmesinde kullanılır. Bit 0 ise DS1302’ye yazma veya okuma işlemlerinden hangisini yapacağımızı bildirir. Bu bit lojik “0” ise DS1302‘ye yazma işlemi; lojik ”1” ise DS1302’den okuma işlemi yapılır. Komut baytının DS1302 ‘ye iletimi ilk önce en az anlamlı bit ile başlanarak yapılır.

DS1302 ‘nin RST ucu (5 nolu pin) normalde lojik”0” olarak tutulmaktadır. DS1302 ile veri transferi yapılacağı zaman bu uç lojik “1” yapılmalıdır. RST lojik “0” iken veri giriş / çıkış ucu yüksek empedans durumunda bulunmaktadır. Ayrıca RST ucu lojik “1” yapılmadan önce SCLK ucu mutlaka lojik “0” olmalıdır.

Komut baytının DS1302 ‘ye aktarılması ve DS1302’ye istenen herhangi bir verinin yazılması SCLK ucunun çıkan kenarlarında olmaktadır. SCLK ucu lojik “0” ‘dan lojik “1” ‘e çekildiğinde DS1302’ye iletilmek istenen bitin DS1302’nin I / O ucunda hazır olması gerekmektedir. Benzer şekilde DS1302 ‘den herhangi bir verinin okunması için gönderilecek olan komut baytı SCLK ucunun çıkan kenarlarında DS1302’ye aktarılmakta, okuma işlemi ise son çıkan kenardan itibaren düşen kenarlarda gerçekleşmektedir. DS1302‘ye veri yazma ve okuma işlemleri şekil-2‘de gösterilmiştir.

Şekil.2. DS1302’den okuma ve DS1302’ye yazma

DS1302 ‘ye herhangi bir yazma işleminden önce kontrol kaydedicilerinin (register) 7. biti lojik “0” konumuna alınması gereklidir. Aksi taktirde DS1302’ye herhangi bir yazma işlemi gerçekleştirilemez. Ayrıca saniye kaydedicisinin 7. biti saat durma bayrağı olarak tanımlıdır. Bu bit lojik “1” olduğunda DS1302 osilatörü durur ve DS1302 bekleme konumuna geçer. Bunun için DS1302’ye ilk defa enerji verildiğinde bu bitin lojik “0” olup olmadığı DS1302’den öğrenilmelidir. Eğer lojik’1’ ise lojik’0’ yapılması sağlanarak osilatörün çalışmaya başlaması sağlanmalıdır. Eğer DS1302’den gelen bilgi ilgili bitin lojik ‘0’ olduğu yönünde ise herhangi bir değişiklik yapılmasına gerek yoktur. Bu bit lojik “0” olarak atandıktan sonra DS1302 pil ile yedeklendiğinden zaman bilgisini kaybetmez.

Şekil.3. DS1302 Register Tablosu

Kütüphane kodunun açıklanması

Kütüphanede 6 farklı fonksiyon kullanılmıştır. Bu kütüphane CC5X pic compiler için hazırlanmıştır. Bu fonksiyonlar ve işlemleri aşağıdaki gibidir.

reset_3w() , DS1302’yi resetlemeye yarar

clk_pulse(), pulse gönderir

uns8 read_byte(), 8bit lik bilgi okur

write_byte(uns8 command), 8bit’lik command komutunu DS1302’ye yazar

send_command(uns8 cmd, uns8 data), DS1302’nin cmd register’ına data bilgisini yazar

uns8 get_command(cmd), cmd komutunun karşılığındaki bilgiyi okur

Bu fonksiyonların kullanımıyla DS1302 ile Pic arasında 3 bacak üzerinden iletişim sağlanır.

Verilen kod ve kodların karşılıları Şekil 3’de verilen Tablo ile karşılaştırıldığında DS1302’nin çalışma mantığı daha da netlik kazanacaktır.

İlginize Çekebilir

Madeni Para Ayırma ve Sayma Makinası