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

[ATMega8L][C] - Dokładność zegara zbudowanego na ATmedze8L

Milek79 28 Mar 2013 15:04 1956 14
REKLAMA
  • #1 12122616
    Milek79
    Poziom 15  
    Kolejny problem z moim zegarkiem ;)
    Układ pracuje na wewnętrznym oscylatorze 1MHz, a pod piny TOSC1 i TOSC2 podpięty kwarc zegarkowy 32.768kHz. Do jednego z nóżek kwarca podpięty kondensator 100nF. (jak go nie dam ma problemy ze startem, muszę go poruszać)
    Przerwanie wpisujące do zmiennej tick jedynkę jest uruchamiane przez Timer2 pracujący w trybie asynchronicznym, wtedy wykonuje się pętla główna która aktualizuje wyświetlacz, sprawdza guziki, itd. po czym wchodzi w stan PowerSave do czasu kolejnego wykonania przerwania z Timer2. Po około dwóch godzinach pracy odchyłka od prawidłowego czasu wynosi aż 10 sekund w przód.(zbudowany zegar śpieszy)
    Fragmenty kodu:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    Co by zastosować by nie było tej niedokładności?
    Z góry dzięki za pomoc.
  • REKLAMA
  • #2 12122745
    dondu
    Moderator na urlopie...
    I kolejny krok do przodu :)

    Kondensator 100nF na pinie kwarcu zapewne wpływa bardzo na częstotliwość pracy timera2, ale tego jesteś świadomy.

    Należy więc najpierw rozwiązań problem niestartowania Timer2, by pozbyć się kondensatora i palucha :)

    Tutaj funkcja projektu który niebawem opublikuję:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Zwróć uwagę na to:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Pokaż deklarację zmiennej tick.

    A propos dokładności kwarcu: http://mikrokontrolery.blogspot.com/2011/04/stopery-timery-itp.html
  • REKLAMA
  • REKLAMA
  • #9 12122930
    Milek79
    Poziom 15  
    [ATMega8L][C] - Dokładność zegara zbudowanego na ATmedze8L [ATMega8L][C] - Dokładność zegara zbudowanego na ATmedze8L
    Przy takim oświetleniu nic nie wyciągnę z mojego telefonu

    Dodano po 1 [godziny] 21 [minuty]:

    Odpaliłem na kondensatorze i wyjąłem. Efekt taki sam, też zdecydowanie śpieszy.

    Dodano po 2 [godziny] 45 [minuty]:

    Problem z rozruchem rozwiązany - trzeba było włączyć wewnętrzne kondensatory ustawiając fusebit CKOPT =0 ;)
    Zaraz zobaczę czy dalej jest niedokładny.

    Dodano po 20 [minuty]:

    Nadal śpieszy ;/
  • REKLAMA
  • #12 12126759
    dondu
    Moderator na urlopie...
    Nie ma w tym nic dziwnego: http://www.abracon.com/Resonators/AB26T.pdf
    W datasheet dowiesz się jaka jest dokładność Twojego kwarcu a resztę masz już w artykule z linku.
    Dokładność może się sporo różnić między poszczególnymi kwarcami tej samej częstotliwości.

    Załóż, że masz kwarc 30ppm - policz jaka powinna być odchyłka czasu dla Twojego kwarcu.
    Wtedy zobaczysz czy jest to możliwe, i czy przyczyny szukać należy w kwarcu czy programie.

    BTW.
    W datasheet także z reguły znajdziesz wartości kondensatorów jakie powinny byś stosowane wraz z kwarcem. Oczywiście nie dotyczy to Twojego przypadku - piszę o tym przy okazji.
  • #13 12129211
    Milek79
    Poziom 15  
    Dziś sprawdzałem z moim zegarkiem - wcześniej porównywałem z zegarem systemowym w komputerze. Wychodzi na to że ta cała niedokładność wynikała z komputerowego zegara :> Teraz na kilka godzin spóżnia sekundę, więc rozumiem ze zostaje mi korekta programowa?
REKLAMA