logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Zegar czasu rzeczywistego - uP czy układ dedykowany ?

Jimmy_24 01 Cze 2007 09:56 2649 19
REKLAMA
  • #1 3941885
    Jimmy_24
    Poziom 11  
    Posty: 32
    Pomógł: 1
    Ocena: 1
    Witam serdecznie,
    Mam pytanie, potrzebuje zrobic zegar czasu rzeczywistego i zastanawiam się co jest lepszym rozwiązaniem zrobić go na układzie dedykowanym np. PCF8563T/F4 czy wykorzystać do tego sam uP który i tak juz jest w sterowniku (at91sam7s64). Za algorytmem w procesorze przemawiaja wzgledy ekonomiczne, ale nie wiem jak bedzie z dokładnością mierzonego czasu. Atmel wypuścił jakąś sheet'ke na ten temat ale zaleca stosowanie przerwań. Dodatkowym problemem jest to, że układ nie może gubić czasu w przypadku braku zasilania i nie wiem w których stanach zasilania rtc w arm'ie się kręci?? Jeśli ktoś ma jakieś doświadczenia w temacie proszę o podzielenie się,
    Pozdrawiam
    Jakub
  • REKLAMA
  • #2 3941919
    Jerzy Węglorz
    Poziom 39  
    Posty: 3447
    Pomógł: 501
    Ocena: 451
    Witam!
    Porównaj pobór prądu przez RTC i procesor, policz jak długa przerwa w zasilaniu jest możliwa w obu przypadkach przy podtrzymaniu z baterii lub akumulatorka, który chcesz dać, i porównaj to z wymaganiami na "niegubienie czasu".
  • #3 3942268
    cyberdar
    Poziom 31  
    Posty: 1465
    Pomógł: 161
    Ocena: 73
    Witam

    Zdecydowanie obstaję za dedykowanym RTC choćby z powodów o jakich wspomniał przedmówca.

    --
    pozdrawiam
  • REKLAMA
  • #4 3942524
    starob
    Poziom 29  
    Posty: 1088
    Pomógł: 128
    Ocena: 137
    RTC - poczytaj tematy o zegarkach i pomiarze czasu - trudna kalibracja.
  • #5 3942658
    Jimmy_24
    Poziom 11  
    Posty: 32
    Pomógł: 1
    Ocena: 1
    Dzięki za odpowiedzi. Udało się komuś z was zrobic RTC na uP?? Jaki był błąd pomiaru czasu??
  • REKLAMA
  • #6 3942812
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    Powiem Ci tyle, ze trzeba skalibrować taki zegar bo przed kalibracja różnica sięga kilku procent, a po kalibracji jest nieco lepiej... (jelsi chodzi o wewnętrzny zegar) Na zewnętrznym to zależnie od użytego kwarcu. Generalnie op to sa tanie RTC by je uzywac :)
    Pozdro
  • Pomocny post
    #7 3942852
    Mirko51
    Poziom 15  
    Posty: 156
    Pomógł: 20
    Ocena: 7
    jak chcesz zrobić RTC to tylko na MSP430 - procek nie jest u nas w kraju dobrze znany, ale zrobiłem na nim trochę projektów i jak na architekturę to prezentuje się elegancko :)

    tu trochę piszą o RTC na tym procu:
    http://focus.ti.com/lit/an/slaa076a/slaa076a.pdf

    trochę linków
    https://www.elektroda.pl/rtvforum/topic662044.html
    http://www.google.pl/search?hl=pl&q=RTC+msp430&btnG=Szukaj&lr=

    moduły RTC sprzętowe wbudowane w procki mają pobór prądu na poziomie ok. 20 uA (dla mnie to dużo). Najczęściej brak im kalendarza 100 lat, dokładność czasu 1 sek, brak korekcji zima-lato, stref czasowych, roku przestępnego (oczywiście niektóre modele może to mają, mogę się mylić).

    Ja sobie napisałem w robocie od podstaw RTC na MSP430F149. Kodu nie udostępniam bo jest to własność firmy. Parametry są takie: pobór prądu z baterii średnio 3-5 uA, wszystkie opcje kalandarza, strefy czasowe, czas letni i takie tam duperele. Czas jest dostępny na zewnątrz z podstawą czasu 1 ms.
    Wzorzec czasu - odbiornik GPS, dokładność synchronizacji z nim - max 1-2 us (wszystko odbywa sie programowo). Kompensacja dryftu kwarca wyliczana. Jądro zegara RTC dostrajane płynnie.
    Cena procka ok 25 zł.
    Format wyjściowy IRIG-B, DCF77 (pełna emulacja sygnału), 1PPS. Szyna do LCD Text + knefle, ledy.

    Za kilka miesięcy jak dobrze pójdzie puszczę podobny projekt na łamach EP, ale to jest jak na razie wstępny plan.

    Żaden układ sprzętowy nie ma takich możliwości, a jak masz to napisane w C to w każdej chwili można coś zmienić, dołożyć pewne opcje.

    Dodano po 9 [minuty]:

    Ch.M. napisał:
    Powiem Ci tyle, ze trzeba skalibrować taki zegar bo przed kalibracja różnica sięga kilku procent, a po kalibracji jest nieco lepiej... (jelsi chodzi o wewnętrzny zegar) Na zewnętrznym to zależnie od użytego kwarcu. Generalnie op to sa tanie RTC by je uzywac :)
    Pozdro


    jeśli dasz GPSa i się zsynchronizuje co jakiś czas to taki zegarek pokaże dość dokładny czas. Można też wyliczyć bardzo precyzyjnie korekcje dla kwarcu i dokładność czasu zdecydowanie wzrasta.
    Pewnie wielu się oburzy, że stosowanie GPSa to jak armata na muchy, ale koszt modułów OEM jest rzędu 200 zł. Jeśli zależy ci na dokładnym atomowym czasie to nie jest to wiele.

    Co do gubienia czasu to inna rzecz. Ja w swoim zegarku na MSP430 uzyskałem podczas przełączania bateryjnego poślizg o jakieś 100 us. I to tylko dlatego, że procek pracuje na 2 kwarcach - jeden na potrzymaniu bateryjnym (32k) a drugi (4MHz) jako impulsy dla podstawy czasu jądra RTC 1 ms, natomiast synchronizacja czasu z dokł. ok. 2 us.
  • REKLAMA
  • #8 3942893
    dziechu
    Poziom 27  
    Posty: 1609
    Pomógł: 27
    Ocena: 69
    Ch.M. napisał:
    przed kalibracja różnica sięga kilku procent, a po kalibracji jest nieco lepiej... (jelsi chodzi o wewnętrzny zegar) Pozdro


    No nieprawda. Jezeli procesor jest taktowany kwarcem, np. 4MHz, to po prawidlowym napisaniu programu (czyli przerwanie na timerze) blad wynosi max 1-2 sek/dobe (a to nie kilka procent). Kilka procent roznicy moze byc na jakims oscylatorze RC itp.
  • #9 3942973
    Jimmy_24
    Poziom 11  
    Posty: 32
    Pomógł: 1
    Ocena: 1
    Cytat:
    Co do gubienia czasu to inna rzecz. Ja w swoim zegarku na MSP430 uzyskałem podczas przełączania bateryjnego poślizg o jakieś 100 us. I to tylko dlatego, że procek pracuje na 2 kwarcach - jeden na potrzymaniu bateryjnym (32k) a drugi (4MHz) jako impulsy dla podstawy czasu jądra RTC 1 ms, natomiast synchronizacja czasu z dokł. ok. 2 us.

    Jak sprzętowo podłączona jest bateria do podtrzymania zasilania uP. W jaki sposób odbywa się detekcja zasilania bateryjnego??
  • #10 3942980
    dziechu
    Poziom 27  
    Posty: 1609
    Pomógł: 27
    Ocena: 69
    Najprosciej bateria przed stabilizatorem (jezeli stabilizator 5V to bateria >6.5V) przez diode. Kiedy napiecie z zasilacza jest wyzsze od napiecia baterii, to dioda 'odcina' bateria. W przypadku zaniku napiecia sieci, wlacza sie bateria.
  • #11 3943144
    gufiak
    Poziom 21  
    Posty: 444
    Pomógł: 15
    Ocena: 2
    Dokładnie - trzeba koniecznie zrobić kalibrację, bo ten Slow Clock jest dosyć niedokładny. Lepiej postawić oddzielnie coś co śmiga na kwarcu, choćby PCF8583 na I2C, zasilać go awaryjnie z bateryjki i naprawdę będzie dużo lepiej niż w przypadku RTC na procku.
  • #12 3948635
    Mirko51
    Poziom 15  
    Posty: 156
    Pomógł: 20
    Ocena: 7
    Jimmy_24 napisał:

    Jak sprzętowo podłączona jest bateria do podtrzymania zasilania uP. W jaki sposób odbywa się detekcja zasilania bateryjnego??


    ja stosuję układy Battery Backup np. TPS3619, chociaż można to zrobić na dwóch MOSFETach i rezystorach.
    Detekcja przez dzielnik napięcia wprowadzony na I/O procka MSP. Jako ze procek ma na wejściu Schmitta, otrzymuję sygnał prostokątny, odfiltrowany. Co 1 ms noga ta jest próbkowana - podejmowana jest decyzja, czy wejść w tryb LPM3 czy pozostać LPM0. Oczywiście można taki sygnał użyć jako przerwanie i obejść się bez próbkowania. Ale moje rozwiązanie wydaje się być bezpieczniejsze.

    w trybie LPM3 procesor chodzi tylko z baterii, co 4 sekundy się wybudza, inkrementuje datę i czas i idzie spać. Pobór prądu < 3uA.
  • #13 3951284
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    Ad. dziechu:
    Przeciez pisałem ze chodzi o wewnętrzny oscylator zbudowany na wzmacniaczach operacyjnych a nie zewnętrzny kwarc :)
    Pozdrawiam
  • #14 3951463
    Jimmy_24
    Poziom 11  
    Posty: 32
    Pomógł: 1
    Ocena: 1
    Witam,
    A myślałem, że mój dylemat co wybrać jest prostszy do rozwiązania. Chyba jednak wybiorę zegar na uP. Postaram się zrealizowac algorytm Atmel'owski:

    http://www.atmel.com/dyn/resources/prod_documents/doc6148.pdf

    Znalazłem nawet do tego źródła. Trochę się przerobi i powinno działać.

    Cytat:
    w trybie LPM3 procesor chodzi tylko z baterii, co 4 sekundy się wybudza, inkrementuje datę i czas i idzie spać. Pobór prądu < 3uA.


    to oznacza, że w uśpieniu działa algorytm odmierzania czasu?? A po wyjściu z uśpienia ( co 4 sek) czas jest odświerzany??
  • #15 3951542
    alnus
    Poziom 28  
    Posty: 1198
    Pomógł: 91
    Ocena: 66
    ja zazwyczaj wkładam DSD1307. koszt około 8 zł, ale mam święty spokój z programem - po prostu zczytuję potrzebny czas i datę po I2C i odcinam prąd kiedy chcę, a DS ma podłączoną baterię 3V i nie interesuje mnie jak podłączyć zasilanie z baterii do procka. wsadzam kwarc zegarkowy 20ppm i dokładność w normalnym użytkowaniu jest w zupełności wystarczająca. do atmelowskich RTC trochę się zraziłem czytając w jakichś firmowych aplikacjach o konieczności zasilania procka ( chyba maga 8535, ale nie pamiętam) napięciem 4,6 V zamiast 5V aby układ był stabilny, nie mówiąc o innych obostrzeniach o których już zapomniałem. jeśli układ miałby być tylko zegarkiem, to pewno próbowałbym zrobić coś na wewnętrznym RTC, ale jak zegar ma być tylko dodatkiem do innych funkcji nie zastanawiam się tylko wkładam DS'a czy PCF'a i mogę zająć się ważniejszymi sprawami.
  • Pomocny post
    #16 3951611
    Mirko51
    Poziom 15  
    Posty: 156
    Pomógł: 20
    Ocena: 7
    Cytat:
    w trybie LPM3 procesor chodzi tylko z baterii, co 4 sekundy się wybudza, inkrementuje datę i czas i idzie spać. Pobór prądu < 3uA.

    to oznacza, że w uśpieniu działa algorytm odmierzania czasu?? A po wyjściu z uśpienia ( co 4 sek) czas jest odświerzany??


    działa to tak, że w uśpieniu pracuje jedynie oscylator CPU na kwarcu 32k (rdzeń jest taktowany nim). Taktuje on licznikiem 16-bit w trybie Compare, którego wartość jest obliczana przez CPU. Każde przerwanie od timera przychodzące co 4 s (można szybciej ale nie ma takiej potrzeby) budzi procka - inkrementowany jest czas.
    Po wybudzeniu taktowanie jest przełączane na fast (osc 4 MHz) - podstawa czasu jest 1 ms - czyli znacznie precyzyjniej.

    MSP430 ma kilka zalet jeśli chodzi o "mikromocowość" - energooszczędny core, wybudzenie procka < 6us (start generatora RC), kilka trybów LPM, praca od 1.8 V, oscylator 32k pobiera ok 2uA, I/O z bramką schmitta, 16 bitów (ważne przy sterowaniu peryferiami - timery, adc, dac, zmienne int).
  • #17 3951675
    Jimmy_24
    Poziom 11  
    Posty: 32
    Pomógł: 1
    Ocena: 1
    Dzięki za wyjaśnienie. No właśnie wiem, że MSP430 o procesor strasznie energooszczędny, stosujemy je w układach zasilanych z pętli pradowych 4-20mA. Teoretycznie Atmel ma pobór prądu na core 160uA/MHz. Nie wiem jak to jest przy wewnętrznym generatorze RC, ale napewno sprawdzę. Innym problemem jest raczej uboga ilość trybów pracy. Nie wiem czy jest mozliwa praca w uśpieniu z pracującym wew generatorem.

    Pozdrawiam
  • #18 3953339
    William Bonawentura
    Poziom 34  
    Posty: 2413
    Pomógł: 185
    Ocena: 607
    Jimmy_24 napisał:
    Dzięki za wyjaśnienie. No właśnie wiem, że MSP430 o procesor strasznie energooszczędny, stosujemy je w układach zasilanych z pętli pradowych 4-20mA. Teoretycznie Atmel ma pobór prądu na core 160uA/MHz. Nie wiem jak to jest przy wewnętrznym generatorze RC, ale napewno sprawdzę. Innym problemem jest raczej uboga ilość trybów pracy. Nie wiem czy jest mozliwa praca w uśpieniu z pracującym wew generatorem.

    Pozdrawiam


    Najoszczędniejsza jest praca w trybie power-down z włączonym wath dogiem i oscylatorem RC 128kHz. Niestety dokładność tego zegara jest słaba (zwłaszcza temperaturowa).
  • #19 3958976
    Jimmy_24
    Poziom 11  
    Posty: 32
    Pomógł: 1
    Ocena: 1
    No i z braku RTC sprzętowego w procesorze, wybrałem układ zewnęrzny DS2415P. Nie ukrywam, że głównym kryterium takiego właśnie wybory było kryterium cenowe, jak i to, że układ posiada podtrzymanie bateryjne.

    Pozdrawiam
  • #20 4008038
    Jimmy_24
    Poziom 11  
    Posty: 32
    Pomógł: 1
    Ocena: 1
    Układ bardzo dobry, przynajmniej jak dla mnie. Faktem jest, że zwraca tylko sekundy ale licznik jest 32 bitowy inkrementowany co sek. więc daje to ponad 130 lat.
    Podtrzymanie z baterii działa wyśmienicie, pobór prądu na poziomie 700nA. Bateria pastylkowa 75mAh, wiec łatwo policzyć że pare lat wytrzyma. Przy załączonym zasilaniu pobór z baterii 220nA.
    Kwarc zegarkowy 20ppm prawie za darmo. Dokładność 1-2 sek na 3 dni.
    Komunikacja 1-wire działa bez problemu.

    Z czystym sumieniem mogę polecić ten układ. W razie pytań służe pomocą.

    Pozdrawiam Jakub

Podsumowanie tematu

✨ Dyskusja dotyczy wyboru między implementacją zegara czasu rzeczywistego (RTC) na mikrokontrolerze (np. Atmel at91sam7s64) a zastosowaniem dedykowanego układu RTC, takiego jak PCF8563T/F4 czy DS2415P. Zaletą układów dedykowanych jest niska konsumpcja energii, stabilność i podtrzymanie czasu podczas zaniku zasilania dzięki baterii podtrzymującej, co jest trudniejsze do osiągnięcia na samym mikrokontrolerze. Wewnętrzne oscylatory mikrokontrolerów, zwłaszcza RC, wymagają kalibracji i cechują się mniejszą dokładnością (błąd rzędu kilku procent), podczas gdy układy z kwarcem zegarkowym oferują precyzję na poziomie 1-2 sekund na kilka dni. Przykładowo, MSP430 umożliwia energooszczędną implementację RTC z niskim poborem prądu (około 3-5 µA) i zaawansowanymi funkcjami kalendarza, jednak wymaga odpowiedniego algorytmu i przerwań. Zasilanie bateryjne do podtrzymania RTC można realizować przez diodę zabezpieczającą przed rozładowaniem baterii, a detekcję zasilania realizować przez dzielnik napięcia i wejścia z bramką Schmitta. W praktyce, ze względu na prostotę i niezawodność, wielu użytkowników wybiera układy takie jak DS1307 lub DS2415P, które oferują podtrzymanie bateryjne, komunikację I2C lub 1-wire oraz wysoką dokładność i stabilność działania. Wybór zależy od wymagań dotyczących dokładności, poboru mocy, kosztów i złożoności implementacji.
Wygenerowane przez model językowy.
REKLAMA