RTC, sadece ayarlanan sürede interrupt üreten bir ünitemidir ?
Saati Dakikayı Hatta Yılı bir registerden çekip alabiliyormuyum ?
Yoksa 60 a bölme işlemleriylemi işlem yapıyorum ?
Direk çekiyorsun abi verileri.
Yani F0 da öyle yapmıştık.
https://www.picproje.org/index.php/topic,58660.0.html
Benim bildiğim alarm özellikli RTC lerde vardı.
evet rtc_setalarm(1) yaptım her 1 saniyede int. e giriyor.
Muhtemelen Sadece belirtilen aralıklarda interrupt üretiyor STM32f103 de buradan yola çıkarak (bölme işlemleriyle) saat vb ulaşılıyor. Sanki bir yanlışlık var.
Bu mudur yani RTC basit bir atomik sayıcı
http://www.st.com/content/ccc/resource/technical/document/application_note/b0/34/9f/35/17/88/43/41/CD00207941.pdf/files/CD00207941.pdf/jcr:content/translations/en.CD00207941.pdf
dursun şurada
http://www.avislab.com/blog/stm32-rtc/ (http://www.avislab.com/blog/stm32-rtc/)
// Get current date
void RTC_GetDateTime(uint32_t RTC_Counter, RTC_DateTimeTypeDef* RTC_DateTimeStruct) {
unsigned long time;
unsigned long t1, a, b, c, d, e, m;
int year = 0;
int mon = 0;
int wday = 0;
int mday = 0;
int hour = 0;
int min = 0;
int sec = 0;
uint64_t jd = 0;;
uint64_t jdn = 0;
jd = ((RTC_Counter+43200)/(86400>>1)) + (2440587<<1) + 1;
jdn = jd>>1;
time = RTC_Counter;
t1 = time/60;
sec = time - t1*60;
time = t1;
t1 = time/60;
min = time - t1*60;
time = t1;
t1 = time/24;
hour = time - t1*24;
wday = jdn%7;
a = jdn + 32044;
b = (4*a+3)/146097;
c = a - (146097*b)/4;
d = (4*c+3)/1461;
e = c - (1461*d)/4;
m = (5*e+2)/153;
mday = e - (153*m+2)/5 + 1;
mon = m + 3 - 12*(m/10);
year = 100*b + d - 4800 + (m/10);
RTC_DateTimeStruct->RTC_Year = year;
RTC_DateTimeStruct->RTC_Month = mon;
RTC_DateTimeStruct->RTC_Date = mday;
RTC_DateTimeStruct->RTC_Hours = hour;
RTC_DateTimeStruct->RTC_Minutes = min;
RTC_DateTimeStruct->RTC_Seconds = sec;
RTC_DateTimeStruct->RTC_Wday = wday;
}
Hocam amaç saat dakika v.s almak ise oradaki gibi uğraşmaya gereke yok diye düşünüyorum.
void Read_RTC(void)
{
RTC_TimeTypeDef RTC_TimeStructure;
char time[20];
/* Get the current Time */
RTC_GetTime(RTC_Format_BIN, &RTC_TimeStructure);
/* Display time Format : hh:mm:ss */
sprintf((char*) time, "%0.2d:%0.2d:%0.2d", RTC_TimeStructure.RTC_Hours, RTC_TimeStructure.RTC_Minutes, RTC_TimeStructure.RTC_Seconds);
}
stm32f10x de namevcut hocam.
RTC_GetTime fonksiyonuyla gidip okunabilecek bir register yok.
bu F4 un RTC sindeki gün ay yıl saat dakika sını BCD sayan kayıtcıları
(http://i.hizliresim.com/Bv9M69.jpg)
Bu da F103 un kayıtcıları
(http://i.hizliresim.com/ZM1DQA.jpg)
maalesef hesabı kendiniz yapacaksınız.
f4 olmuş f1 patates :)
Nasıl yani, elimdeki mi pititez ? Yoksa işlemci bu yapacak birşey yok mu ? :D
if ((RCC->BDCR & RCC_BDCR_RTCEN) != RCC_BDCR_RTCEN)
burada ne yapmaya çalışmış bu adam
RCC-BDRC : Backup domain control register
RCC_BDCR_RTCEN: RTC clock enable
STM32F103C'de takvim yok.
hocam STM32F10x in hiçbirinde mi, sadece STM32F103C' demi yok
Eğer özel bir serisi yok ise benimde bildiğim kadarıyla 103 lerde Takvim yok.
kütüphane stm32f10x diye geçiyor.
ve bu kütüphanede RTC_GetTime yok. 10x in hiçbirinde takvim yok.
Doğrudur hocam. Ben datasheet karışırmaya üşendim şimdi. STM32F103C ile çalıştığımdan ve takvim olmadığını hatırladığımdan sadece onu belirttim. STM32F103RB6 birtakım fazladan özelliklere sahip olduğundan takvime de sahip olabilir diye düşündüm.