eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › ESP8266 i RTC
Ilość wypowiedzi w tym wątku: 5

  • 1. Data: 2015-06-18 10:27:41
    Temat: ESP8266 i RTC
    Od: Atlantis <m...@w...pl>

    Ktoś z was ma jakiś pomysł na zaimplementowanie w miarę dokładnego
    zegara czasu rzeczywistego na ESP8266? Przez "w miarę dokładny" mam na
    myśli taki, którzy nie "odpływałby" więcej jak kilka sekund na dobę,
    pozwalając by synchronizacja z NTP co kilka godzina załatwiała sprawę.

    W najnowszym SDK mamy gotowe funkcje do pobierania czasu z serwera NTP.
    Problemem jest późniejsza inkrementacja zmiennej, w której trzymamy
    czas. Najprościej byłoby użyć mechanizmu timera programowego
    (os_timer_t), ale on nie gwarantuje wykonania przypisanej funkcji
    dokładnie po upływie zadanego odcinka czasu. Czas będzie więc sobie
    pływał...

    Dokumentacja najnowszego SDK (wersja 1.1.1) opisuje co prawda funkcje
    hw_timer, jednak nie widzę nigdzie odpowiadającego im pliku
    nagłówkowego, ani przykładów. Sam opis jest bardzo oględny i lakoniczny.
    Czyżby do dokumentacji trafiła jeszcze nie zaimplementowana funkcjonalność?

    W końcu mamy też dwie takie funkcje:
    system_get_time() - zwraca ilość us od startu systemu (z grubsza coś jak
    millis() w Arduino)
    system_get_rtc_time() - zwraca ilość taktów zegara RTC
    system_get_rtc_calib() - zwraca długość trwania taktu zegara RTC z
    dokładnością do 0,1us.

    Na podstawie tego można wyliczyć jak długo pracuje zegar. Dałoby się
    jakoś wykorzystać ten mechanizm do dokładnego "taktowania" zmiennej, w
    której trzymam czas w formacie uniksowym, synchronizowany z ntp?

    Na razie wolałbym uniknąć stosowania zewnętrznego układu RTC na I2C.


  • 2. Data: 2015-06-18 23:52:55
    Temat: Re: ESP8266 i RTC
    Od: "Grzegorz Niemirowski" <g...@p...onet.pl>

    Atlantis <m...@w...pl> napisał(a):
    > Ktoś z was ma jakiś pomysł na zaimplementowanie w miarę dokładnego
    > zegara czasu rzeczywistego na ESP8266? Przez "w miarę dokładny" mam na
    > myśli taki, którzy nie "odpływałby" więcej jak kilka sekund na dobę,
    > pozwalając by synchronizacja z NTP co kilka godzina załatwiała sprawę.

    Możesz synchronizować co kilka minut. Zwykle synchronizację z NTP wykonuje
    się rzadziej, ale co Ci szkodzi?

    PS. Nie obraź się, ale myślę, że niedawna wypowiedź jednego z grupowiczów na
    temat Twojego podejścia, jako rozwiązywania problemów nieistniejących gdzie
    indziej, była całkiem trafna. ESP8266 to chińszczyzna za 5 dolarów. Całkiem
    fajna chińszczyzna, ale próbujesz traktować ją jako pełnoprawny komputer.
    Może lepiej rozejrzeć się za modułem, dla którego dokładny timer jest
    oczywistością? Albo doczepić zewnętrznego RTC?
    To takie luźne przemyślenia. Nie traktuj tego jako krytyki Twoich postów,
    które uważam za wartościowe.

    --
    Grzegorz Niemirowski
    http://www.grzegorz.net/
    OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
    Uptime: 12 days, 4 hours, 25 minutes and 33 seconds


  • 3. Data: 2015-06-19 00:11:26
    Temat: Re: ESP8266 i RTC
    Od: Jarosław Sokołowski <j...@l...waw.pl>

    Pan Grzegorz Niemirowski napisał:

    >> Ktoś z was ma jakiś pomysł na zaimplementowanie w miarę dokładnego
    >> zegara czasu rzeczywistego na ESP8266? Przez "w miarę dokładny" mam na
    >> myśli taki, którzy nie "odpływałby" więcej jak kilka sekund na dobę,
    >> pozwalając by synchronizacja z NTP co kilka godzina załatwiała sprawę.
    >
    > Możesz synchronizować co kilka minut. Zwykle synchronizację z NTP
    > wykonuje się rzadziej, ale co Ci szkodzi?

    Nie wiem nawet co za jeden, ten ESP8266 (no, wiem już, że chińszczyzna
    za pięc dolców) ani nie wiem jak tam NTP zaimplementowano. Ale zaletą
    tego wynalazku (NTP) jest to, że nie trzeba synchronizować prawie wcale.
    Bo jak już czas z sieci zostanie dany mu raz i drugi, to komputer
    sobie z tego wylicza poprawkę (dryft) i spowalnia lub przyśpiesza bieg
    wewnętrznego zegara. Tak więc porządny komputer o rozstrojonej
    częstotliwości zegara taktującego, gdy ma odpalone NTP, to nawet po
    odpięciu od sieci powinien chodzić dobrze. Byle tylko kwarc był sam
    w sobie stabilny.

    Jarek

    --
    Raz tylko dany ci czas
    Ani on twój ani czyj
    Z czasem się wszystko ustoi
    Żyj na huśtawce żyj


  • 4. Data: 2015-06-19 09:42:32
    Temat: Re: ESP8266 i RTC
    Od: Atlantis <m...@w...pl>

    W dniu 2015-06-19 o 00:11, Jarosław Sokołowski pisze:

    > wewnętrznego zegara. Tak więc porządny komputer o rozstrojonej
    > częstotliwości zegara taktującego, gdy ma odpalone NTP, to nawet po
    > odpięciu od sieci powinien chodzić dobrze. Byle tylko kwarc był sam
    > w sobie stabilny.

    Wiesz, ESP8266 nie jest żadnym "porządnym komputerem". To prosta płytka
    na małym, 32bitowym mikrokontrolerze z wbudowanym sterownikiem WiFi.
    Twórcy po prostu udostępnili w SDK filka funkcji do obsługi SNTP. Może
    zdefiniować do trzech serwerów. Potem każde wywołanie pewnej funkcji
    zwróci pobrany czas w formacie uniksowym. Resztą trzeba się już zająć
    samodzielnie.

    W SDK jest też zestaw narządzi do periodycznego wykonywania określonej
    funkcji, liczenia us od startu systemu (coś jak millis() w Arduino),
    zliczania cykli zegara RTC i pomiaru długości cyklu.
    Pewnie dałoby się na tej podstawie zrobić dość dokładny zegar. Po prostu
    pytam o najlepszy sposób.
    Niewykluczone zresztą, że Espressif doda odpowiednie funkcje w którejś z
    kolejnych wersji SDK.


  • 5. Data: 2015-06-19 11:16:51
    Temat: Re: ESP8266 i RTC
    Od: Jarosław Sokołowski <j...@l...waw.pl>

    Atlantis pisze:

    >> wewnętrznego zegara. Tak więc porządny komputer o rozstrojonej
    >> częstotliwości zegara taktującego, gdy ma odpalone NTP, to nawet po
    >> odpięciu od sieci powinien chodzić dobrze. Byle tylko kwarc był sam
    >> w sobie stabilny.
    >
    > Wiesz, ESP8266 nie jest żadnym "porządnym komputerem". To prosta płytka
    > na małym, 32bitowym mikrokontrolerze z wbudowanym sterownikiem WiFi.

    Tego już się dowiedziałem.

    > Twórcy po prostu udostępnili w SDK filka funkcji do obsługi SNTP. Może
    > zdefiniować do trzech serwerów. Potem każde wywołanie pewnej funkcji
    > zwróci pobrany czas w formacie uniksowym. Resztą trzeba się już zająć
    > samodzielnie.
    >
    > W SDK jest też zestaw narządzi do periodycznego wykonywania określonej
    > funkcji, liczenia us od startu systemu (coś jak millis() w Arduino),
    > zliczania cykli zegara RTC i pomiaru długości cyklu.
    > Pewnie dałoby się na tej podstawie zrobić dość dokładny zegar. Po prostu
    > pytam o najlepszy sposób.
    > Niewykluczone zresztą, że Espressif doda odpowiednie funkcje w którejś z
    > kolejnych wersji SDK.

    Skoro nie udostępnili funkcji do wprowadzania poprawek dla tempa pracy
    wewnętrznego zegara, to nic się nie da zrobić, poza okresowym ustawianiem
    godziny z zewnętrznego źródła. Jeśli jest dostęp do sieci i serwera czasu
    w niej, to czemu tego nie robić zawsze w ten sposób? Niby można przy
    każdej poprawce (co 1000 sekund powiedzmy) zwracać uwagę na to, jak duża
    była różnica czasu. I aplikować ją później na raty, co 100, 10 czy jedną
    sekundę. Ale takie rzeczy powinny być zrobione na niższym poziomie. Wyżej
    chyba nie warto.

    --
    Jarek

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: