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 )
(http://1.bp.blogspot.com/-_87zncJ9sW4/Uh3RR9P77uI/AAAAAAAAAKw/MXN6p7t2D7A/s640/rtc+blok+.jpg)
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. )
(http://2.bp.blogspot.com/-xdJULTCi-aE/Uh3cGuFUvzI/AAAAAAAAALI/gC0ZNVnXAgQ/s640/ayar1.png)
(http://1.bp.blogspot.com/-9yvC2mp_edc/Uh3dLaW4T-I/AAAAAAAAALU/GqnK2svJdUk/s640/ayar2.png)
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.
(http://2.bp.blogspot.com/-7JtjIzKrUQQ/Uh3e6C37KVI/AAAAAAAAALg/DqKSwhC9Lnc/s400/hafta.png)
Devremiz ve çalışması:
(http://1.bp.blogspot.com/-stIgYsRy4KA/Uh3fXBwZR2I/AAAAAAAAALo/bCVkPLO2K24/s640/devre.png)
Proje Dosyaları: ( Proteus version 7.10 SP0, CCS C v 4.130)
http://www.4shared.com/rar/1sL1XfcJ/Dahili_RTC4x20LcdRs232.html (http://www.4shared.com/rar/1sL1XfcJ/Dahili_RTC4x20LcdRs232.html)
Cok guzel uygulama & paylasim. Tesekkurler.
87k22 nin timerlarını kullanmayı denedinmi hiç ;)
Denemedim hocam. Neden sordunuz?
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 (http://www.dorukanstore.com/PIC18F87K22-IPT-RoHS,PR-17040.html)
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 :)
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?