Elektroda.pl
Elektroda.pl
X
Arrow Multisolution Day
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega lub PIC oraz moduł GPS - dokładny czas impulsu

modrih 16 Maj 2012 00:38 2169 8
  • #1 16 Maj 2012 00:38
    modrih
    Poziom 20  

    Witam!

    Chciałbym dowiedzieć się czy istnieje możliwość określenia dokładnego czasu wysłanego do układu impulsu.

    Zakładamy następujący przypadek: posiadam podłączony moduł GPS do mikrokontrolera. Jak rozumiem GPS umożliwia przesłanie nam danych (w tym czasu z satelity z dokładnością do 1 mikro sekundy) co 1 sekundę.

    Chcę dowiedzieć się czy przykładowo po wciśnięciu przycisku podłączonego do mikrokontrolera, mogę określić dokładny czas z dokładnością do 1 MIKRO sekundy wciśnięcia tego przycisku ? Czy mikrokontroler "wydoli"?

    Zastanawia mnie to ponieważ skoro odbieramy czas z satelity co sekundę to przez tą (jakże długą) sekundę coś musi ten czas mierzyć... a boje się że kontroler nie będzie w stanie określić czasu otrzymanego impulsu (przykładowo ten przycisk) z dokładnością do 1us - i w przypadku dwóch takich samych układów powstawała by rozbieżność.

    Mam nadzieję że mnie rozumiecie? :) Przycisk to tylko przykład (i to zły dlaczego? - w szczegóły można się zagłębić w tym wątku: https://www.elektroda.pl/rtvforum/topic1860334.html , by najłatwiej było wytłumaczyć. Klikam (czy też podaje impuls) i wyświetla mi się godzina naciśnięcia z dokładnością do mikrosekundy.

    Bardzo mnie to zastanawia bo np. Atmega może być taktowana 20MHz, co oznacza 20 milionów Hz :) ...

    0 8
  • Arrow Multisolution Day
  • #2 16 Maj 2012 07:39
    94075
    Użytkownik usunął konto  
  • Arrow Multisolution Day
  • #3 16 Maj 2012 14:22
    modrih
    Poziom 20  

    Moduł GPS na wejście µC.

    0
  • #4 16 Maj 2012 16:55
    94075
    Użytkownik usunął konto  
  • #5 16 Maj 2012 17:37
    modrih
    Poziom 20  

    Nie skąpie tylko nie wiem co Ci odpowiedzieć. Chciałem się dowiedzieć po prostu czy taka sprawa jest wykonywalna, i czy Atmega da radę.

    Spróboj zrozumieć sytuacje, GPS podłączony do µC i w pewnym momencie stan wysoki do µC i chcę dokładny czas z dokładnością do µs tego impulsu. Czy Jest to wykonywalne?

    0
  • #6 16 Maj 2012 18:26
    Halkilor
    Poziom 15  

    Istnieją specjalizowane moduły GPS pracujące jako referencyjne źródło czasu. Należałoby wykorzystać coś takiego, ale to są istotne koszta.

    0
  • #7 17 Maj 2012 01:37
    modrih
    Poziom 20  

    Cóż, a gdybym co sekundę synchronizował zegar w Atmedze (z danych GPS).

    W takowej odpaliłbym Timer i liczył np. od 0 do 15 milionów, - 15 milionów cykli to była by jedna sekunda, jednakże po ++ zmiennej dodałbym warunek przerywający cykl liczenia (w momencie otrzymania impulsu) i w ten sposób obliczył sobie część sekundy?

    Jeżeli licznik dobije do 15 milionów to synchronizacja z zegarem i start równo o pełnej sekundzie.

    Czy mam szanse uzyskać dokładność na poziomie 0,000 001 s?

    0
  • #8 17 Maj 2012 20:10
    cyclone4
    Poziom 16  

    modrih napisał:


    Czy mam szanse uzyskać dokładność na poziomie 0,000 001 s?


    Tak masz. Od zbocza narastającego z sygnału 1 PPS z odbiornika GPS zaczynasz odliczanie. Następne zbocze powinno przyjść po 1000000 odcinków o dł. 1 us.
    Jeśli teraz został naciśnięty przycisk to sprawdzasz stan licznika i już wiesz kiedy był wciśnięty. Trzeba tylko dobrze napisać kod, aby równo odliczać czas.

    0
  • #9 17 Maj 2012 22:55
    Szymon Tarnowski
    Poziom 27  

    cyclone4 napisał:
    Tak masz. Od zbocza narastającego z sygnału 1 PPS z odbiornika GPS zaczynasz odliczanie. Następne zbocze powinno przyjść po 1000000 odcinków o dł. 1 us.
    To dość optymistyczne założenie jeśli procesor ma być taktowany własnym oscylatorem. Trzeba by zrobić coś w rodzaju PLL która na bieżąco zlicza ile impulsów ~1us mieściło się w 1PPS, na tej podstawie przeliczać ile dokładnie trwa ten impuls ~1us i mierzyć czas. Przypuszczalnie to ma szanse działać o coś nie będzie wpływać na rezonator kwarcowy (np temperatura), bo wtedy ta historyczna wartość czasu ~1us się rozjedzie. Chyba dużo lepszym rozwiązaniem byłoby podłączyć do mikroprocesora jakiś dobry stabilny oscylator TCXO lub OCXO.

    0