Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Cortex ARM => Konuyu başlatan: Karamel - 01 Eylül 2015, 11:40:47

Başlık: stm32f103 rtc unit sorularim
Gönderen: Karamel - 01 Eylül 2015, 11:40:47
merhaba. surada https://www.picproje.org/index.php/topic,60578.msg471296.html#msg471296 (https://www.picproje.org/index.php/topic,60578.msg471296.html#msg471296) internal rtc unit i calistirinca. birkac adim daha ileriye gitmek istedim.

stm32f103 microcontrollerlarda time ve date i kendimiz hesap ederek buluyoruz. iste day. month. year. day. hour vs gibi registerlar yok. bir tane counter registerimiz 1 sn de bir artiyor. bizde bundan faydalanip. gun saat ay yil vs yi hesaplayarak cikartiyoruz.

simdi su document i http://www.st.com/web/en/resource/technical/document/application_note/CD00167326.pdf (http://www.st.com/web/en/resource/technical/document/application_note/CD00167326.pdf)
su donucment i http://www.st.com/web/en/resource/technical/document/application_note/CD00207941.pdf (http://www.st.com/web/en/resource/technical/document/application_note/CD00207941.pdf)
birde refence manual imizin http://www.st.com/web/en/resource/technical/document/reference_manual/CD00171190.pdf (http://www.st.com/web/en/resource/technical/document/reference_manual/CD00171190.pdf) rtc kisimlarini okudum.

counter registerimiz 86399 sayisina ulasinca bir gun olustugunu biliyoruz. iste counter bu sayiya ulasinca counter i sifirlayip. day degiskenimizi 1 arttirabiliriz. day degiskenimiz. ilgili ay a gore 28-30-31 i gectiginde. month degikenimizi bir arttirip. day i sifirlayabiliriz. month da 12 yi asinca year a 1 arttiririz filan.

benim anlayamadiklarim sunlar. simdi bu bilgiler backup registerlarinda saklanir diyor document. reference manual dan okudugum kadariyla backup in mesela day diye bir register i yok?

DRx diye registerlari var. (42 tane) ve bu registerlarin icerigi vbat ucuna battery bagli iken kaybolmuyor. acaba tarih bilgilerini bu registerlardan istedigin birisine yaz mi demek istiyor? yani bu 42 register genel amaclarimiz icin kullanalim diyemi yapmislar?

ikinci anlamadigim sey su. eger system yukaridaki gibi ise. rtc nin counter register ini silince backup registerlarda bir degisim olmamasi gerekir? cunku bir ara bu registeri sildigimizde backup register da day diye bir register varsa bunun bir artacagi hakkinda dusuncelere kapildim?

sonuncu sorumda LSE osc source calibration. bunun icin anti_tamp pininden 512 hz bir cikis aliyormusuz? bunu olcup. kayiklik durumunu hesaplayip. rtc calibration registerina bu degeri giriyormusuz? bu kisim i dogru anlamismiyim?

eger dogru anlamissam. bu bana hic mantikli gelmedi. a crystall i x kadar sapar. b crystall i y kadar. hatta iki tane a crystall i arasindada farkliliklar olabilir? eger boyle ise. mesela yapilan her devre icin bunu olcup. hesap etmek. sonrada bunu rtc calibraion registerina program ile update etmek. bana hic mantikli gelmedi?  :-\
Başlık: Ynt: stm32f103 rtc unit sorularim
Gönderen: Mucit23 - 01 Eylül 2015, 11:48:08
Hassas işlerde zaten dahili osilatör kullanılmıyor. Dahili osilatörde öyle kalibrasyon işleriyle uğraşıldığını pek sanmıyorum.

Alıntı YapDRx diye registerlari var. (42 tane) ve bu registerlarin icerigi vbat ucuna battery bagli iken kaybolmuyor. acaba tarih bilgilerini bu registerlardan istedigin birisine yaz mi demek istiyor? yani bu 42 register genel amaclarimiz icin kullanalim diyemi yapmislar?

Evet aynen öyle. Bu registerler genel amaçlı. Pil varsa bilgiler kaybolmaz.
Başlık: Ynt: stm32f103 rtc unit sorularim
Gönderen: Karamel - 01 Eylül 2015, 11:53:30
Hocam lse osc calibration indan bahsediyor document?  :-\

Ben gecen gun deneyi yaptim. Lse source ile rtc unit 12 saatte. 9 dakika 45 sn kaydi. Tabiki benim 10pf capacitorlerim olmadan ben bu deneyi yapmistim fakat document icersinde 32.768 khz in bir hz bile degismesi. Bir saatte 1-2 sn kadar degisime nedennolur diyor. Yani buradan anlayacagimiz bu calibration isi onemli.  :-\
Başlık: Ynt: stm32f103 rtc unit sorularim
Gönderen: X-Fi - 01 Eylül 2015, 12:13:18
Karamel merhaba,

F103 işlemcide RTC calendar özelliği yok tek bir saniyelik interrupt üretiyor burada bir register saydırmak ve registerin içeriğini dk,saat,gün,ay,yil olarak modlama işlemini siz yapıyorsunuz.

Backup registerları yeni nesil işlemcilerde aynı zamanda takvim işlemi görevi görüyor, takvim dışında kullanıcıya sunulan saklama alanları bulunuyor. (F103 de takvim yok sadece saklama amaçlı) Bu adreslere yüklenilen veri power on reset yapılmadan kaybolmuyor. Örneğin bir backup registerına 0xDEADBEEF yazıp her açılışta bu registerı kontrol ederek power on reset mi? yoksa NRST pini yoluyla WDT,system v.s. reset mi oluşmuş algılayabilirsin. Buradan power on reset algılamak RTC nin çalışıp çalışmadığını öğrenmek için gerekebiliyor. Çalışmıyorsa baştan kuruluyor çalışıyorsa kurulum atlanıyor. Bunun örneklerine internette karşılaşırsın.

Bir RTC kristali için 10ppm hassasiyetli ise herşey düzgün olsa bile günde +- 0.9sn sapma yapabilir. RTC kalibrasyonu için pin çıkışından bir sinyal almanız gerekli. Bu sinyal frekans bölücüden geçmiş de olabilir geçmemişde. Buna göre hardware kalibrasyon yapman gerekiyor. Sonrasında hassas yük kapasiteleri seçmelisin ve düşük ppm li kristal kullanmalısın Böylece RTC nin doğru çalışmasını sağlayabilirsin.

iyi çalışmalar.
Başlık: Ynt: stm32f103 rtc unit sorularim
Gönderen: Mucit23 - 01 Eylül 2015, 12:15:47
O kadar kayma yapıyorsa mutlaka kristal yanlış çalışıyordur. Normalde DS1307 gibi entegrelere de 32.768Khz Kristal bağlarız. Aynı şekilde bu sinyal bölünüp 1Hz lik sinyal elde ediliyor.  Bu entegreler de kalibrasyon yapılmıyor. Buna rağmen kabul edilebilir hata sınırları içerisinde çalışıyorlar. Belki STM32F103 içerisindeki RTC donanımı farklıdır.

Eğer gerçekten hassas bir saat yapılmak isteniyorsan kalibrasyon zaten şart olur.
Başlık: Ynt: stm32f103 rtc unit sorularim
Gönderen: CLR - 01 Eylül 2015, 12:51:24
Karamel,

Stm32'nin rtc'si biraz hassas, mesela 10x serinde 7pf üzeri kapasitör isteyen xtal tavsiye etmiyor ki bizzat denedim sıkıntı çıkarıyor, özellikle RTC start-up'ta.

F103 serisinde herşey saniyeler üzerinden yapılıyor, sadece tarih bilgilerini(gün/ay/yıl) açılışta backup registerlerinden okuyup ram'de tutuyorsun (ilk çalışmada/seferinde backup registerlerine tarihi senin girmen gerekiyor), saat bilgileri ise doğrudan stm32 rtc counter üzerinden hesaplıyorsun. Gün/ay/yıl değişince hem ram'deti saat ve tarihi hemde backup registerlerinini de güncellemen gerekiyor.

Başlık: Ynt: stm32f103 rtc unit sorularim
Gönderen: Karamel - 01 Eylül 2015, 13:21:34
Alıntı yapılan: Mucit23 - 01 Eylül 2015, 12:15:47
O kadar kayma yapıyorsa mutlaka kristal yanlış çalışıyordur. Normalde DS1307 gibi entegrelere de 32.768Khz Kristal bağlarız. Aynı şekilde bu sinyal bölünüp 1Hz lik sinyal elde ediliyor.  Bu entegreler de kalibrasyon yapılmıyor. Buna rağmen kabul edilebilir hata sınırları içerisinde çalışıyorlar. Belki STM32F103 içerisindeki RTC donanımı farklıdır.

Eğer gerçekten hassas bir saat yapılmak isteniyorsan kalibrasyon zaten şart olur.

sorunu buldum hocam. http://pdfserv.maximintegrated.com/en/an/AN504.pdf (http://pdfserv.maximintegrated.com/en/an/AN504.pdf) bu document icersinde diyor ki.

The crystal oscillator is one of the most accurate circuits available for providing a fixed frequency. A
32,768Hz crystal is used for most RTCs. By dividing down the output of the oscillator, a 1Hz reference can
be used to update the time and date. The accuracy of the RTC is dependent mainly upon the accuracy of
the crystal. Tuning-fork crystals have a parabolic frequency response across temperature (
Figure 3
). An
error of 23ppm is about 1 minute per month. For further reference, see the
Real-Time Clock Calculator
.
Crystals are tuned to oscillate at the correct frequency under a particular capacitive load. Using a crystal
tuned for a 12.5pF load on an RTC designed to present a 6pF load to the crystal will cause the clock to run
too fast.

capacitorun degisimi frequence i degistiriyormus. ds1307-1302 rtc entegrelerinin capacitorleri iceride. bu yuzden sadece crsytall baglamak yetiyormus. ama benim deney yapabilmem icin elimde 10pf olmadigindan. ben capacitor kullanmadan deneyleri yaptigimdan. bence sorun burada. yani bu denli kaymasinin sebebi bu.

ama! yukarida diyor ki. osc 23 ppm degisirse. 1 ayda 1 dakika system bozulur diyor. yani calibration olursa bence daha guzel olabilir?  :-\

Alıntı yapılan: CLR - 01 Eylül 2015, 12:51:24
Karamel,

Stm32'nin rtc'si biraz hassas, mesela 10x serinde 7pf üzeri kapasitör isteyen xtal tavsiye etmiyor ki bizzat denedim sıkıntı çıkarıyor, özellikle RTC start-up'ta.

F103 serisinde herşey saniyeler üzerinden yapılıyor, sadece tarih bilgilerini(gün/ay/yıl) açılışta backup registerlerinden okuyup ram'de tutuyorsun (ilk çalışmada/seferinde backup registerlerine tarihi senin girmen gerekiyor), saat bilgileri ise doğrudan stm32 rtc counter üzerinden hesaplıyorsun. Gün/ay/yıl değişince hem ram'deti saat ve tarihi hemde backup registerlerinini de güncellemen gerekiyor.



hocam ben stm32f103 un bir board unun schematic ini buldum. st microelectronics in design ettigi bir board. burada 10pf kullanmislar. startup ta ne gibi sorunlar cikiyor hocam?

ben bu capacitorleri 22pf olarak takanlarin LSE osc lerinin ready olma surelerinin 30 sn gibi bir deger oldugunu okumustum. boyle bir sorunmu ki? :-\

mesaj birleştirme:: 01 Eylül 2015, 13:26:41

burada bulmustum hocam.

(http://download.siliconexpert.com/pdfs/2013/8/21/6/25/38/125/st_/manual/steval-ill033v1_fig.1_2.jpg)

sanki bir yerdede 5-15 pf arasi crystall e gore secim yapin yaziyordu ama reference manual damiydi. datasheet temiydi hatirlayamadim.
Başlık: Ynt: stm32f103 rtc unit sorularim
Gönderen: CLR - 01 Eylül 2015, 13:30:08
evet, çok uzun oluyor, clock senkronizasyonunda sıkıntı çıkardığını düşünüyorum. Ben ayrıca rtc alarm kullandığım için onunda etkisi vardı ama ST rtc design pdf'inde direk 7pf olayını yazıyor. Sonrasında 6pf olanlardan kullandım sıkıntı olmadı.
Başlık: Ynt: stm32f103 rtc unit sorularim
Gönderen: X-Fi - 01 Eylül 2015, 13:50:50
Kristallerin genelde 50k ya da 100k iç esr değerleri olur bunum yanı sıra 1pf civarında da bir kendi kapasiteleri olur. Bunları üretici kataloğunda bildirir. Kristele paralel direnç bağlanıp esr direnci ile oynayarak yük kapasitesi hesabı yapabilirsiniz. Aşağıdaki linkde hesaplama formülleri verilmiş incelemenizi öneririm.

http://www.st.com/web/en/resource/technical/document/application_note/CD00221665.pdf (http://www.st.com/web/en/resource/technical/document/application_note/CD00221665.pdf)

Bulabilirsem bilgisayarımda ST nin hazırladığı bir xls hesap tablosu olacaktı onuda yüklemeye çalışırım.

iyi çalışmalar.
Başlık: Ynt: stm32f103 rtc unit sorularim
Gönderen: Karamel - 01 Eylül 2015, 19:32:26
Alıntı yapılan: CLR - 01 Eylül 2015, 13:30:08
evet, çok uzun oluyor, clock senkronizasyonunda sıkıntı çıkardığını düşünüyorum. Ben ayrıca rtc alarm kullandığım için onunda etkisi vardı ama ST rtc design pdf'inde direk 7pf olayını yazıyor. Sonrasında 6pf olanlardan kullandım sıkıntı olmadı.

hocam deneyi 10pf ile yaptim. LSE 2 sn gibi bir surede ready oluyor. simdi rtc unit in accuracy testini yapmadim. cunku bu test cok uzun suruyor. 12 saat kadar birsey yapamiyorum. tarih yapmayi deneyecegim simdi. bakalim. basarili olabilcekmiyim.

yalniz benim anlamadigim birsey var. biz while ile LSE osc source un ready olmasini bekliyoruz. diyelim ki kocaman bir system tasarladik. benim mcirocontroller sanirim buyuk isler icin? icersinde butun unit lerden birkac tane var. mesela 4 tane usart unit var. neyse. yine diyelim ki LSE source ta bir sorun var ve hic ready olmayacak? ee tum system bir rtc yunit yuzunden cokecek mi?

ikinci senaryoya bakalim. LSE source un ready olmasini beklemedik. o zaman RTC uniti duzgun baslatamamiz olacagiz?

son senaryo. hadi diyelim while ile ready olmasini beklemeyip. programin en basina 5 sn delay yerlestirdik. ya 5.1 inci sn de lse osc ready olursa?

mesaj birleştirme:: 01 Eylül 2015, 19:36:08

Alıntı yapılan: X-Fi - 01 Eylül 2015, 13:50:50
Kristallerin genelde 50k ya da 100k iç esr değerleri olur bunum yanı sıra 1pf civarında da bir kendi kapasiteleri olur. Bunları üretici kataloğunda bildirir. Kristele paralel direnç bağlanıp esr direnci ile oynayarak yük kapasitesi hesabı yapabilirsiniz. Aşağıdaki linkde hesaplama formülleri verilmiş incelemenizi öneririm.

http://www.st.com/web/en/resource/technical/document/application_note/CD00221665.pdf (http://www.st.com/web/en/resource/technical/document/application_note/CD00221665.pdf)

Bulabilirsem bilgisayarımda ST nin hazırladığı bir xls hesap tablosu olacaktı onuda yüklemeye çalışırım.

iyi çalışmalar.

hocam link icin tesekkur ederim ::) pdf i bilgisayarima kaydettim. document e baktim ama sanirim bunu tam anlamiyla anlamak icin circuit theory bilmek gerekiyor? equivalent circuit filan cikartilmis. hesaplari filan var ama ben bu hesaplarin nereden geldigini nasil yapildigini anlamadim. formula belli. koy yerine. al cevabi seklinde oluncada egitici olmuyor. o yuzden. bilgisayarima kaydettim. universite 1. siniftan sonra yeniden acip okuyacagim. insallah o zaman anlar duruma gelmis olurum ::)
Başlık: Ynt: stm32f103 rtc unit sorularim
Gönderen: CLR - 01 Eylül 2015, 20:04:17
Bana göre öyle bir rtc projesi hem kullanılmaz hemde güvenilir olmaz, 5sn'de uzun bir zaman her seferinde max 1-2sn içinde init olmalı.  while içinde timeout kullanabilirsin mesela 3sn içinde(systick ile) while'dan çıkmazsa "RTC init fail" gibi birşey yazdırabilirsin veya ne yapmak istersen.

Bu arada proje notlarıma baktım bir düzeltme yapmalıyım, RTC kapasitörleri CL=7pf derken CL1=CL2=14pf üzerini tavsiye etmiyor, yani 10-12pf kullanılabilir. Bende 12pf'lik kapasitörler kullanmışım(6pf) (CL=CL1*CL2 / CL1+CL2),   
Başlık: Ynt: stm32f103 rtc unit sorularim
Gönderen: Karamel - 01 Eylül 2015, 20:42:03
hocam rtc projesi degilde. aklima geldi. mesela bir suru sey yaptiralim. ne yaptigimizin onemi yok ama tum system bir external low speed oscillator yuzunden fail olacaksa. ne anladik bu isten?  :-\ st neden boyle birsey yapmis? yani rtc ve lse unit ler neden bu kadar degisik(kotu demek istemedim)

birde hocam direk backup registerlar uzerinden deneyimi yaptim. gun. ay ve yil yaptirdim. ::)

bu arada hocam. bir gun 86399 da olusuyor. document icersinde bu sayiyi asinca rtc counter i sifirlayin diyor ama bence burada hata var. nedenide su.

mesela 2 gun gecti? 2*86399.  ve bizim circuit imiz vbat ile calisti bu surede. hic code islemedi.

simdi eger circuit calissaydi. bu dogruydu. surekli bir test islemi var. eger 86399 rakami asilmissa. tamam bir gun asilmis ama biz circuit kapali vbat ile calisirken. bu testi yapamiyoruz. 2 gun geciyor. sonra circuit aciliyor.

o sadece 1 gun asilmismi diye bakiyor. 2 gun yada daha fazla zaman asilmismi bilmiyor. time testleri yapinca. hop. counter i sifirliyor. hem saati bozuyor hemde tarihi.

ben soyle bir cozum yolu buldum bu is icin.

while(time > 86399){
            time = time - 86399; RTC_CNTL = time & 0x0000FFFF; RTC_CNTH = (time & 0xFFFF0000) >> 16;
            BKP_DR1++;
            Date_Test();
          }


eger bir gunden fazla value olusmussa. bizim counter dan gun cikartip. day registerini 1 arttirip. date test e gonderdim. yani mesela gun 32 ye ulasmissa. gun u 1 yap. ay i 1 arttir. gibi.


bunun deneyini yapmadim. cunku 2 gun circuit i vbat ile calistirip beklemek gerekli ama theory im. tutar gibi gozukuyor?  :-\
Başlık: Ynt: stm32f103 rtc unit sorularim
Gönderen: CLR - 01 Eylül 2015, 20:55:22
ST'nin notları arasında F10x ile calendar projesi var bu bahsettiklerinin hepsinin çözümü var orada. 86399'dan sonra sıfırlamak zorunda değilsin, istersen counter 32bit olduğundan 130-140 yıla kadar saydırabilirsin herşeyi saniye üzerinden de yapabilirsin.

Ekleme: artık yılları hesaba katarak tabii
Başlık: Ynt: stm32f103 rtc unit sorularim
Gönderen: Karamel - 01 Eylül 2015, 22:59:37
Alıntı yapılan: Mucit23 - 01 Eylül 2015, 12:15:47
O kadar kayma yapıyorsa mutlaka kristal yanlış çalışıyordur. Normalde DS1307 gibi entegrelere de 32.768Khz Kristal bağlarız. Aynı şekilde bu sinyal bölünüp 1Hz lik sinyal elde ediliyor.  Bu entegreler de kalibrasyon yapılmıyor. Buna rağmen kabul edilebilir hata sınırları içerisinde çalışıyorlar. Belki STM32F103 içerisindeki RTC donanımı farklıdır.

Eğer gerçekten hassas bir saat yapılmak isteniyorsan kalibrasyon zaten şart olur.

mucit hocam 10 pf capacitor leri de takip. gerekli olcumleri yaptim. 3 saat calistirdim. saniye bile kaymadi. kayma sorununun sebebi ds1307 document te yazdigi gibi. stm32f103 microcontroller ile deney yaptigimdan. bu microcontroller lar icin 10pf iyi bir deger gibi.

Alıntı yapılan: CLR - 01 Eylül 2015, 20:55:22
ST'nin notları arasında F10x ile calendar projesi var bu bahsettiklerinin hepsinin çözümü var orada. 86399'dan sonra sıfırlamak zorunda değilsin, istersen counter 32bit olduğundan 130-140 yıla kadar saydırabilirsin herşeyi saniye üzerinden de yapabilirsin.

Ekleme: artık yılları hesaba katarak tabii

anladim hocam. hocam amacim urun yapmak degil. deney yapmak oldugundan. birde ben st library lerinden anlamadigimdan. refrence manual ve diger document ler uzerinden gitmistim.

sadece anlamadigimiz konu LSE source neden boyle sorunlu bir sekilde ready oluyor. bu tum systemin calismasini etkileyebilir. st neden bunu boyle yapmis? yada biz beceremiyor olabiliriz tabiki? bu konuyu research etmek lazim.
Başlık: Ynt: stm32f103 rtc unit sorularim
Gönderen: z - 01 Eylül 2015, 23:04:10
Scopla xtal uçlarını gözledinmi? Osilasyon hemen başlıyormu başlamıyormu baktınmı?

Başlık: Ynt: stm32f103 rtc unit sorularim
Gönderen: Klein - 01 Eylül 2015, 23:05:43
LSE sorunl değil.  Adam datasheet yayımlamış,  kristali şöyle seç, kapasiteyi böyle hesapla diye. Söyleneni doğru yaptın ve ona rağmen sorun mu çıkardı? 
Benzer sorunu bende yaşadım. Kapasitörü doğru seçmediğim için , çok düşük sıcaklıklarda kapasitedeki değişimler nedeniyle satin durduğu oldu. ama bu ST'nin sorunu değil benim sorunum. Kapasiteyi düzgün seçseydim yaşamazdım.
Başlık: Ynt: stm32f103 rtc unit sorularim
Gönderen: Karamel - 01 Eylül 2015, 23:15:10
z hocam osciloscope um olmadigimdan bu deneyleri ne yazik ki yapamiyorum....  :-\

klein hocam. lse source a yada st microelectronics e sorunlu demedim ki?  :-\ sorun buyuk ihtimalle bizdedir. biz beceremiyoruz. lse source sorunlu calisiyor. beceremedigim yuzunden koca firmayi suclamak. bu yasimla ve cussemle olacak is degil.

sadece research edelim dediydim......  :-\

mesaj birleştirme:: 01 Eylül 2015, 23:16:02

aslinda sunu arastirmak lazim. HSE source nasil mili sn ler mertebesinde ready oluyorda. LSE source un ready olmasi saniye ile olculebiliyor?
Başlık: Ynt: stm32f103 rtc unit sorularim
Gönderen: Klein - 01 Eylül 2015, 23:26:37
Kristale bağladığın kapasiteyi sökersen hemen hazır olduğunu göreceksin.
Başlık: Ynt: stm32f103 rtc unit sorularim
Gönderen: CLR - 02 Eylül 2015, 00:44:49
Rtc ile hardware registerlerine senkron erişebilmek için. Rtc clk ile sistem clock'u senkronize olması gerekiyor bunun için bekleniyor, bu nedenle start uzun sürüyor.

Adamlar bir dizi işlem sonucunda senkronizasyonu kabul ediyor. Mesela rtc clock'ta jitter fazlaysa/kapasitör sinyali söndürüyorsa gibi durumlarda senkronize olması zor olur veya gecikir, işte kapasite böyle durumlarda çok önemli oluyor.

Klein'in dediği gibi kapasitörü sökersen çok hızlı senkron oluyor ve rtc çalışıyor ama bu defa zaman kayması olur. Kapasitörü büyük takarsan ters yönde zaman kayması olabilir veya osc hiç kalkamayabilir, geç kalkabilir.