Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: muhittin_kaplan - 17 Kasım 2016, 19:24:33

Başlık: Stm32f103 RTC
Gönderen: muhittin_kaplan - 17 Kasım 2016, 19:24:33
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 ?
Başlık: Ynt: Stm32f103 RTC
Gönderen: baran123 - 17 Kasım 2016, 19:36:37
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ı.
Başlık: Ynt: Stm32f103 RTC
Gönderen: muhittin_kaplan - 17 Kasım 2016, 19:58:57
evet rtc_setalarm(1) yaptım her 1 saniyede int. e giriyor.
Başlık: Ynt: Stm32f103 RTC
Gönderen: muhittin_kaplan - 17 Kasım 2016, 20:33:27
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
Başlık: Ynt: Stm32f103 RTC
Gönderen: muhittin_kaplan - 21 Kasım 2016, 09:00:16
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;
}
Başlık: Ynt: Stm32f103 RTC
Gönderen: kantirici - 21 Kasım 2016, 09:31:09
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);
}
Başlık: Ynt: Stm32f103 RTC
Gönderen: muhittin_kaplan - 21 Kasım 2016, 09:33:31
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.
Başlık: Ynt: Stm32f103 RTC
Gönderen: AsHeS - 21 Kasım 2016, 09:43:29
f4 olmuş f1 patates :)
Başlık: Ynt: Stm32f103 RTC
Gönderen: muhittin_kaplan - 21 Kasım 2016, 09:45:58
Nasıl yani, elimdeki mi pititez ? Yoksa işlemci bu yapacak birşey yok mu ? :D
Başlık: Ynt: Stm32f103 RTC
Gönderen: muhittin_kaplan - 21 Kasım 2016, 10:46:53
 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
Başlık: Ynt: Stm32f103 RTC
Gönderen: LukeSkywalker - 21 Kasım 2016, 11:25:21
STM32F103C'de takvim yok.
Başlık: Ynt: Stm32f103 RTC
Gönderen: muhittin_kaplan - 21 Kasım 2016, 11:36:52
hocam STM32F10x in hiçbirinde mi, sadece STM32F103C' demi yok
Başlık: Ynt: Stm32f103 RTC
Gönderen: Mucit23 - 21 Kasım 2016, 11:43:46
Eğer özel bir serisi yok ise benimde bildiğim kadarıyla 103 lerde Takvim yok.
Başlık: Ynt: Stm32f103 RTC
Gönderen: muhittin_kaplan - 21 Kasım 2016, 11:51:40
kütüphane stm32f10x diye geçiyor.

ve bu kütüphanede RTC_GetTime yok. 10x in hiçbirinde takvim yok.
Başlık: Ynt: Stm32f103 RTC
Gönderen: LukeSkywalker - 21 Kasım 2016, 13:31:38
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.