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

[atmega8][avr-gcc] RTC na wbudowanym oscylatorze w uC

y0yster 12 Lip 2009 12:49 4376 23
  • #1 6768849
    y0yster
    Poziom 19  
    Witam,

    Zastanawiałem się, czy można zrobić RTC na uC takim jak Atmega8, ale wykorzystując do tego tylko i wyłącznie wbudowany oscylator.
    Na przykład mikrokontroler był by taktowany 8MHz. Wykorzystując przy tym przerwanie od przepełnienia np. timer1 oraz zapisywanie zadanej początkowej wartości do licznika (w przerwaniu), czy dało by się odmierzać równe odstępy czasu.
    Policzyłem, że dla timer1, 8MHz, prescalera 256 wartość początkowa wynosiła by 49911, dostałbym 0,5 sekundy.

    Czy w normalnych warunkach pracy, była by ona stabilna i nie gubiłbym kilku sekund na kilkanaście godzin?

    Pozdrawiam.
  • #2 6768881
    snow
    Poziom 31  
    Żadne AVR nie ma wbudowanego kwarcu a gubiłbyś pewnie więcej sekund, jak nie minuty ;)
  • #3 6768914
    y0yster
    Poziom 19  
    Sorry, troszkę źle nazwałem temat ;). Postaram się poprawić.

    Wracając co tematu ;) to wyszukałem gdzieś na internecie, że tą metodą, którą chce odmierzać czas osiągnięto dość dobre rezultaty, ale gubiono 1-2 sekundy na 15h. Z tą tylko różnicą, że podłączony został zewnętrzny oscylator kwarcowy 8MHz. Doradzano również, aby zmienić troszkę wartości i w obliczeniach później wszystko się zgadzało. Niestety temat został niejako porzucony :/.

    Proszę o informacje jeśli ktoś próbował robić coś podobnego.

    Pozdrawiam.
  • #4 6768952
    Konto nie istnieje
    Poziom 1  
  • #5 6768962
    y0yster
    Poziom 19  
    Tylko, że ja nie chce używać żadnych zewnętrznych oscylatorów. Chce wszystko oprzeć na wewnętrznym, tak jak to opisałem na początku tematu.
  • Pomocny post
    #6 6768980
    Konto nie istnieje
    Poziom 1  
  • #7 6769177
    y0yster
    Poziom 19  
    Widać tak jak przypuszczałem Atmega* wymaga stabilizacji, o której mówisz.

    Chyba najlepszym rozwiązaniem jest zakupienie zewnętrznego układu RTC ;).

    Pozdrawiam.
  • #8 6769208
    Konto nie istnieje
    Poziom 1  
  • #9 6769261
    y0yster
    Poziom 19  
    Tak, z jednej strony wystarczy. Tylko wtedy należy napisać kod odpowiedzialny za zliczanie czasu.
    Natomiast gdy mamy zewnętrzny układ, to wystarczy opanować protokół transmisji i się z nim porozumiewać. Sa takie układy, które mają w sobie wbudowany cały kalendarz ;).
  • #10 6769313
    Konto nie istnieje
    Poziom 1  
  • #11 6769331
    y0yster
    Poziom 19  
    Wiesz, wtedy to by miało o tyle sens, że nie muszę podłączać nic do uC. A wygląda na to, że muszę podłączyć coś do niej. Dlatego wybrałbym opcje z układem RTC.

    Sądzę, że jest to najlepsze rozwiązanie jeśli trzeba by było zrobić jakiś "kalendarz".
  • #12 6769341
    Konto nie istnieje
    Poziom 1  
  • #13 6769368
    y0yster
    Poziom 19  
    Tak, dobrze myślałeś. Chciałem ograniczyć podczepiane elementy do uC do minimum. Ale skoro sam kontroler sobie nie poradzi, to lepiej wydać troszkę więcej na zewnętrzny zegar czasu rzeczywistego. Sam też pisałeś, że twoja konstrukcja na rezonatorze kwarcowym wymaga ingerencji. Dużą zaletą są jednak urządzenia, które mają to wszystko zintegrowane w sobie.
  • #14 6769472
    Konto nie istnieje
    Poziom 1  
  • #15 6769517
    y0yster
    Poziom 19  
    O tym nie wiedziałem.
    Więc wychodzi na to, że nie ma to jak samemu zrobić własny RTC ;).

    Mam jeszcze pytanie odnośnie tych rozbieżności sekundowych. Napisałeś w wcześniejszych postach, że jest to zawsze ta sama ilość czasu. Więc można to korygować programowo.

    A czy jest może jakiś sposób na sprzętową likwidację tych rozbieżności. Pisałeś, że dołożenie kondensatorków by załatwiło sprawę. Czytałem również, że nawet z kondensatorkami nic to nie zmienia. Raczej zmienia rozmiar nieścisłości.

    Jak byś atom1477 mógł jeszcze napisać przez jaki czas testowałeś swój wynalazek :).
  • #16 6769549
    Konto nie istnieje
    Poziom 1  
  • #17 6770560
    janbernat
    Poziom 38  
    DS3234 +-2ppm.
    Rezonator(kwarc?) wbudowany.
  • #18 6770689
    Konto nie istnieje
    Poziom 1  
  • #19 7077355
    peterrrm
    Poziom 14  
    Najbardziej mnie interesuje jak koledzy kalibrują tego typu układy, bo 15 s. na dobę to ciężko trzeba porównać naprawdę z czymś "dokładnym".
  • #20 7077430
    Konto nie istnieje
    Poziom 1  
  • #21 7077733
    marek_Łódź
    Poziom 36  
    Można dość dokładnie wprowadzić poprawkę na podstawie dwóch kolejnych nastaw - kalibracja dwupunktowa. Jeśli odczytamy błąd np. w przedziale dwutygodniowym i na podstawie tego błędu skorygujemy wzorzec, automatem redukujemy "błąd dwutygodniowy" niemal do zera. Czyli im dłużej pracuje zegar, tym jest dokładniejszy. Oczywiście dochodzą jeszcze trendy starzeniowe, czyli niejako błąd drugiego rzędu, który też można wyliczyć i skompensować (zakładam, że mamy wystabilizowane podstawowe parametry - temperatura, zasilanie). Kalibracja z zewnętrznego urządzenia jest super, ale niestety nie każdy zegarek ma stosowne interfejsy.

    Mała uwaga odnośnie kwarców - zegarkowe 32768 Hz są optymalizowane pod względem stabilnosci w temperaturze pokojowej i zapewniają lepszą stabilność termiczną od uniwersalnych. Gdzieś o tym już dyskutowaliśmy, ale w zasadzie to wystarczy przejrzeć datasheety rezonatorów, żeby zrozumieć o co chodzi.
  • #22 7078227
    Konto nie istnieje
    Poziom 1  
  • #24 7443772
    Konto nie istnieje
    Poziom 1  
REKLAMA