PIC18F67K22 Dahili RTC Kullanımı

Başlatan matador, 28 Ağustos 2013, 14:45:26

matador

Denetleyicinin kısaca teknik özelliklerinden bahsedecek olursak:
128Kbyte Flash Hafıza
4Kbyte SRAM
1Kbyte Eeprom
53 I/O Portu
16 Kanal 12bit A/D çevirici
7CCP/3ECCP Modül
2 SPI,2 I2C ve 2 adet UART
6 x 8bit / 5 x 16 bit Timer
mTouch
RTCC

Şimdi sıra geldi RTCC donanımını tanımaya:

Teknik Özellikleri:
Zaman : Saat, Dakika, Saniye
Tarih: Haftanın Günü, Gün, Ay, Yıl
Ayarlanabilir Alarm
Yıl Aralığı: 2000 ~ 2099
BCD formatında çıktı
Düşük güç için optimize
Otomatik kalibrasyon
Ayda 2.64 saniye hata
Alarm pulse yada yarım saniye çıkış verebilme ( pin )



Programı CCS C'de yazdım başlangıç ayarlarını yaptıktan sonra program kolaylıkla yazılmakta. Harici RTC entegrelerle uğraşmak istemeyenler için birebir.

CCS C başlangıç ayarları: ( Ayarlamaların sadece RTC ile ilgili olan kısımlarını açıklayacağım diğer ayarlamaları size bırakıyorum. )






Programı kısmı:

#include <ssat.h>
   //RTCC
   rtc_time_t wizardTempTime; // Bu değişkeni ccs kendisi otomatik olarak oluşturuyor.
  #include <stdio.h>
  #include <stdlib.h>
  #include <string.h>
  #include <4x20.c>    // 4*20 lcd için kütüphane dosyası


void main()
{
   setup_adc_ports(sAN0|sAN1|sAN2|sAN3|sAN4);
   setup_adc(ADC_CLOCK_DIV_32|ADC_TAD_MUL_2);
   //RTCC
   setup_rtc(RTC_ENABLE , 0);    
   wizardTempTime.tm_year = 13;   // Yıl ayarı
   wizardTempTime.tm_mon = 8;    
   wizardTempTime.tm_mday = 28;
   wizardTempTime.tm_wday = 3;
   wizardTempTime.tm_hour = 14;
   wizardTempTime.tm_min = 8;
   wizardTempTime.tm_sec = 0;
   rtc_write(&wizardTempTime);

   setup_timer_3(T3_DISABLED | T3_DIV_BY_1);
   setup_timer_4(T4_DISABLED,0,1);
   setup_timer_5(T5_DISABLED | T5_DIV_BY_1);
   setup_timer_6(T6_DISABLED,0,1);
   setup_timer_7(T7_DISABLED | T7_DIV_BY_1);
   setup_timer_8(T8_DISABLED,0,1);
   setup_timer_10(T10_DISABLED,0,1);
   setup_timer_12(T12_DISABLED,0,1);

   setup_comparator(NC_NC_NC_NC);

   LCD_init();

   while(TRUE)
   {
      char gun[10];
   
      rtc_read(&wizardTempTime);  // RTC okuma satırı
      
       printf("%02u/%02u/%02u  %u   %02u:%02u:%02u",wizardTempTime.tm_mday,wizardTempTime.tm_mon,wizardTempTime.tm_year,wizardTempTime.tm_wday,wizardTempTime.tm_hour,wizardTempTime.tm_min,wizardTempTime.tm_sec);
       printf("\r\n");   
        
        //UART'ı örnek olması için kullandım.
       
       switch(wizardTempTime.tm_wday)   // Datasheet'de haftanın günleri için bir tablo var yazının sonunda paylaşacağım.
       {
         case 0:gun="Pazar";break;
         case 1:gun="Pazartesi";break;
         case 2:gun="Sali";break;
         case 3:gun="Carsamba";break;
         case 4:gun="Persembe";break;
         case 5:gun="Cuma";break;
         case 6:gun="Cumartesi";break;
       }
       
       lcd_gotoxy(1,1);
       printf(lcd_putc,"%02u",wizardTempTime.tm_mday); 
       lcd_putc("/");
       printf(lcd_putc,"%02u",wizardTempTime.tm_mon);
       lcd_putc("/");
       printf(lcd_putc,"%02u",wizardTempTime.tm_year);
       printf(lcd_putc,"  ");
       lcd_puts(gun);
       LCD_gotoxy(6,3);
       printf(lcd_putc,"%02u",wizardTempTime.tm_hour);
       lcd_putc(":");
       printf(lcd_putc,"%02u",wizardTempTime.tm_min);
       lcd_putc(":");
       printf(lcd_putc,"%02u",wizardTempTime.tm_sec);
   }

}


Haftanın günleri için sayısal karşılıklarının olduğu tablo.



Devremiz ve çalışması:



Proje Dosyaları: ( Proteus version 7.10 SP0, CCS C v 4.130)

http://www.4shared.com/rar/1sL1XfcJ/Dahili_RTC4x20LcdRs232.html

vedo35

Cok guzel uygulama & paylasim. Tesekkurler.
Biliyormusun dedi, ben ne yaptiysam kader icabi yaptim dedi. Ben gene sustum.... Kimbilir sende belki kaderin memurusun vazifeni yapiyorsun dedi.

PROTECH_

87k22 nin timerlarını kullanmayı denedinmi hiç  ;)
Multi-Core ,RTX,ThreadX, FreeRTOS, MODBUS  RTOS - Electronic-Hardware -- BERLIN

matador


Gökhan BEKEN

Güzel çalışma, Türkiyede bulunması ve bahsettiğiniz özellikleri barındırması bakımından 18f87k22 de güzel bir tercih olabilir. Fiyatı 13 liraydı 14.58 olmuş.
http://www.dorukanstore.com/PIC18F87K22-IPT-RoHS,PR-17040.html
Özel mesaj okumuyorum, lütfen göndermeyin.

matador

87k22'nin pin sayısı fazla olduğu için seçtim bunu. Pin sayısı dışında donanım özellikleri aynı neredeyse. Doların yükselmesi ilk elektroniği vuruyor :)

istinaf duvarı

Alıntı yapılan: matador - 29 Ağustos 2013, 14:17:3687k22'nin pin sayısı fazla olduğu için seçtim bunu. Pin sayısı dışında donanım özellikleri aynı neredeyse. Doların yükselmesi ilk elektroniği vuruyor :)
Merhaba. Hala duruyorsa kaynak kodları tekrar paylaşabilir misiniz?