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

Podłączony kwarc 4MHz do atmega8 - zasada zliczania czasu

leo1 01 Wrz 2009 09:37 1653 5
REKLAMA
  • #1 6967097
    leo1
    Poziom 14  
    Wiatm.
    Jestem początkujący w tej dziedzinie. Jeste wiele projektów liczących czas (np. https://www.elektroda.pl/rtvforum/topic1069375.html ) do zegarów i nie tylko. Nie znam języka C++, a pierwsze kroki stawiam za pomocą micropascala (znam pascala i delphi).
    Chciałbym nauczyć się jak liczyć czas, tzn. tak na chłopski rozum jak to się dzieje a z resztą spróbuje sam. Mam podłączony kwarc 4MHz do atmega8. Zadania typu delay(1000) dziłają dość dobrze, ale gdy jest ono w pętli z jakimś innym zadaniem to orzymuje już np 1001ms i wszystko sie rozleguluje po kilku minutach.

    Więc jak robi sie to profesjonalnie? Sprzętowo, programowo? (dokładność +-minuta na miesiąc wystarczy)
  • REKLAMA
  • #2 6967120
    CDMaster
    Poziom 14  
    Profesjonalnie korzysta się zazwyczaj z zewnętrznych urządzeń, z którymi się komunikujesz... Poszukaj sobie Real Time Clock (RTC) w necie, to znajdziesz:D Niektóre mikrokontrolery mają wbudowane RTC lub można wykorzystać ich timery do budowy takiego zegarka. Jednak nie wiem jak wtedy z dokładnością.
  • REKLAMA
  • #3 6967133
    leo1
    Poziom 14  
    a co z jakimś "preskalerem", co to oznacza? i do tego zliczanie przepełnień?
  • REKLAMA
  • #4 6967141
    kulmar
    Poziom 31  
    Twój problem sprowadza się do tego, że chciałbyś miec niezależne źródło (licznik), który w tle programu procesora zlicza cykle np. kwarcu procesora. Poczytaj o możliwościach timera w Twoim procesorze, bo to jest klucz do rozwiązania problemu.


    Pozdrawiam

    Mariusz

    Dodano po 1 [minuty]:

    leo1 napisał:
    a co z jakimś "preskalerem", co to oznacza? i do tego zliczanie przepełnień?


    Ten post pojawił się po moim, dotyczącym możliwosci timera - idziesz właściwym tropem, ale najpierw - dokumentacja procesora. Wtedy będziesz wiedział, o co pytać.

    Pozdrawiam

    Mariusz
  • REKLAMA
  • #5 6967496
    m.bartczak
    Poziom 16  
    Wszystko zależy od tego jak bardzo dokładne te zliczanie czasu Ci jest potrzebne.

    Sam procesor oferuje Ci całkiem niezłe liczniki czasu, zapomnij o funkcji delay() służącej tylko do wstawiania 'mniej więcej opóźnień'. Poczytaj za to dokładnie dokumentację dotyczącą timerów i przerwań z nimi związanymi.

    Na 99.99% to rozwiązanie Ci wystarczy, bo układy w stylu DP8573A jak CDMaster zasugerował to czasem trochę przesada, zwłaszcza dla początkującego.
  • #6 6967577
    grysek
    Poziom 19  
    Sama zasada jest bardzo prosta. Jeśli chcesz otrzymać 1 sekundę a masz kwarc 4Mhz to musisz odczekać 4 000 000 taktów aby otrzymać sekundę, a że w atmega8 największy licznik jest w stanie pomieścić wartość 65535, dlatego stosuje się preskalery czyli dzielniki sygnału zegarowego. W atmega8 masz do wyboru dzielnik przez 8,64,256,1024.
    4 000 000 Hz / 256 = 15625 - taką wartość Timer1 jest w stanie pomieścić

    Przeczytaj sobie :arrow: ten artykuł
REKLAMA