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

Precyzyjne odmierzanie czasu??

Janadamis 27 Sie 2010 18:28 2804 23
REKLAMA
  • #1 8445669
    Janadamis
    Poziom 14  
    Witam
    Robię projekt w którym ważne jest precyzyjne odmierzanie czasu
    lecz jak zrobić by uc odmierzało precyzyjnie czas
    wyczytałem że można dać kwarc 32768khz czy to prawda
    I czy trzeba ustawiać coś??
    Będzie chodziło??
    Ja mówię że nie chcę zegara czasu rzeczywistego ponieważ jest sporo kombinacji itp.
    Bardzo proszę o pomoc
    Używam avrstudio+winavr, stk500v2, Atmega 32, język C
  • REKLAMA
  • Pomocny post
    #2 8445677
    tadzik85
    Poziom 38  
    O jaki ci czas wobec tego chodzi? o jakiej długości.
  • Pomocny post
    #3 8445689
    Loker
    Poziom 39  
    Co znaczy "precyzyjne odmierzanie"? Jak precyzyjne?
  • REKLAMA
  • #4 8445707
    gaskoin
    Poziom 38  
    i po co? do opóźnień ? do naliczania czasu? :|
  • REKLAMA
  • Pomocny post
    #5 8446006
    Freddy
    Poziom 43  
    Są specjalizowane układy scalone (nie RTC) służące do tego, np.:DS1318.
  • #6 8446047
    Janadamis
    Poziom 14  
    np ustalę że stan wysoki ma być przez 260ms i tylko tyle ma byc ani w ta ani wą oczywiście z tolerancja na 5ms
    Ale zadziała??
  • Pomocny post
    #7 8446060
    danrok
    Poziom 14  
    Timer w procesorze Ci z taką dokładnością odmierzy spokojnie. 5ms w mikroprocesorach to wieczność ;)
  • #8 8446092
    Janadamis
    Poziom 14  
    Czyli procek dość dokładnie odmierza czas??
  • Pomocny post
    #9 8446148
    tymon_x
    Poziom 30  
    Wewnętrzny oscylator 8MHz, daje 125ns na cykl, tolerancja przy stałej zachwianej temp. -/+3% (załóżmy). Czyli -/+3.75ns<<5ms, a jak dasz zewnętrzny to już w ogóle bajka(; Na pytanie odpowiedz Sobie sam (; Dasz preskaler i będzie dobrze.


    inventco.eu - Proszę pisać po Polsku. Post poprawiłem.
  • #10 8446214
    yburg
    Poziom 9  
    A można jakoś sprawdzić dokładną częstotliwość pracy kwarcu w uC? Bo chciałem zrobić prosty zegarek i pomimo wykorzystania timer'a w CTC z obsługą przerwania (po odmierzeniu 1s) zegarek ma cholernie duże opóźnienia :| Na minutę spóźnia się bitą sekundę, co przy częstotliwości pracy nawet 1Mhz wydaję się być strasznie dużą wartością... :| Myślałem, że to przez zbyt obszerny kod obsługi przerwania - operacja na dwóch zmiennych i instrukcje warunkowe mogły 'zatrzymać' na chwilę uC przed odmierzeniem kolejnej sekundy, tymczasem zamiana kodu na banalne odwrócenie bitów rejestru daje identyczne opóźnienia :/ Podejrzewam więc że być może kwarc wcale nie pracuje na dokładnie 1000000Hz (domyślna wartość w Atmedze8), a dla takiego został wybrany preskaler (64bit) i obliczona wartość timer'a (wyszlo 15625)... :/ A może nie da się na samym uC zrobić dokładnego zegarka (tak żeby nie spóźniał się więcej niż minimum te sekunde na dobę...)? :(
  • REKLAMA
  • #12 8446371
    yburg
    Poziom 9  
    Czy to w takim razie oznacza, że na samym uC nie da się faktycznie precyzyjnie odmierzać czasu, a całe te timer'y itp. to tylko taki pic na wode? 8-O Tzn. jakieś tam odstępy czasu będzie timer odliczał, ale o konkretnych wartościach można zapomnieć (+/-3% na cykl przy 15625 cyklach to faktycznie może dać taką masakrę...) ? :|
  • #13 8446412
    Freddy
    Poziom 43  
    Można podpiąć kwarc 32kHz pod TOSC1 i TOSC2.
  • Pomocny post
    #14 8446415
    Dexter77
    Poziom 28  
    Na samym uC z kwarcem zewnetrznym otrzymasz dosc precyzyjne czasy. Nie wiem jakie bledy trzeba zrobic w programie zeby przy czasie 260ms otrzymac rozrzuty 5ms. Dobrze przemyslany program zapewni Ci odmierzanie czasu co do 1 cyklu zegarowego. Tylko bledy w logicznym mysleniu moga wprowadzac wieksze bledy.

    Moderowany przez _Robak_:

    Proszę używać polskich znaków!

  • Pomocny post
    #15 8446422
    gaskoin
    Poziom 38  
    3.75*8000000(załóżmy, że tyle cykli musi minąć aby minęła sekunda) = 30 ms na sekunde * 60 = 1.800 sekundy na minute :P
  • #16 8446424
    tymon_x
    Poziom 30  
    yburg napisał:
    ...faktycznie precyzyjnie odmierzać czasu, a całe te timer'y itp. to tylko taki pic na wode?

    Żaden pic na wodę, te wewnętrzne są technologicznie gorsze i potrafią mieć taką rozrzutność przy niesprzyjających warunkach klimatycznych (temperatura) od stabilnych rezonatorów kwarcowych. Z tymi drugimi zbudujesz zegarek. Lepsze na takie długoterminowe odliczanie będą układy RTC z mniejszym kwarcem (o większej dokładności) 32.768kHz. Lub uC z takim kwarcem podpiętym zewnętrznie. RC != rezonator kwarcowy. Przynajmniej minuta Ci się nie przekręci po roku (;
  • #17 8446559
    yburg
    Poziom 9  
    No z picem na wodę to może troche przesadziłem, ale porobiono specjalnie preskalery po to chyba, żeby odmierzać dłuższe czasy a tu się okazuje, że to i tak nie ma sensu jeśli chcemy mieć jakąkolwiek dokładność... :( W ramach testu napisałem sekundnik binarny (wyświetlany na LEDach) realizowany tak jak pisałem wyżej za pomocą CTC i przerwania:

    ISR(TIMER1_COMPA_vect)
    {  
      PORTD=(tmp2<<4)+tmp;   	
      if(tmp==0x09)
      {
       tmp=0x00;
       tmp2=(tmp2==0x05)?0x00:tmp2+1;
      }
      else
       tmp++;
    }

    Jako że to tylko test, powyższy kod pisany był na szybko (tym samym na pewno istnieje bardziej optymalny algorytm). Mimo wszystko sekunda opóźnienia na minutę nawet przy takich operacjach to i tak wydał mi się spory rozrzut i słabo wypada tu idea timer'a z preskalerem... :| A sekunda to przecież teoretycznie wcale nie szczyt jego możliwości, tymczasem już tu taka klapa...

    Tym samym zegarek na pewno zrobiłbym na RTC, ew. ten zewnętrzny kwarc :P Ale kwarc to jak rozumiem też słabsza opcja niż RTC? :)
  • #19 8446857
    yburg
    Poziom 9  
    W sumie do zegarka nie potrzebna jest cała data (wystarczy właśnie dobrze odmierzona sekunda :)), a powstaje tylko problem z baterią, komunikacją itp :P Niemniej z drugiej strony można by się pokusić o zrobienie od razu czegoś bardziej rozbudowanego z RTC... :)
  • #20 8447302
    Janadamis
    Poziom 14  
    Czyli podpięty kwarc zapewni lepsze odmierzanie czasu??
    Ba ja robię taki stoper :)
    Lecz kwarc trzeba podpiąć pod XTAL1 i XTAL2 ????
    a w ustawieniach nie trzeba nic robić??
  • #21 8447326
    Freddy
    Poziom 43  
    Podpinasz normalny kwarc do pinów XTAL, a dodatkowy, 32768Hz (zegarkowy) do pinów TOSC. Wszystko opisane w karcie katalogowej procesora.
  • #22 8447353
    Janadamis
    Poziom 14  
    Freddy napisał:

    Podpinasz normalny kwarc do pinów XTAL,

    Jaki to jest normalny kwarc i ile hz musi mieć??
    Freddy napisał:

    a dodatkowy, 32768Hz (zegarkowy) do pinów TOSC. Wszystko opisane w karcie katalogowej procesora.


    Jest taki kwarc zegarkowy??
    Nic w programie/ustawieniach nie trzeba robić??

    Dodano po 39 [sekundy]:

    Do jakiej jednostki będzie dobrze odmierzał czas??
  • Pomocny post
    #23 8448203
    McMonster
    Poziom 32  
    Normalny, czyli taki, jaki chcesz, maksymalną prędkość masz na pierwszej stronie karty katalogowej. Resztę odpowiedzi też masz w karcie katalogowej ATmegi32 w rozdziale "System Clock and Clock Options", ustawienia w "Fuse Bits", a zdolność odmierzania czasu w rozdziałach timerów, do których zdaje się nie zaglądasz, jak i w ogóle do samej karty.
  • #24 8448219
    Janadamis
    Poziom 14  
    Aha dzięki za pomoc
    //temat do zamknięcia//
REKLAMA