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

[Rozwiązano] Jak czytać kolejność bitów w ramce DCF77? Interpretacja bitów minut

opaaa 17 Lip 2024 21:31 168 5
REKLAMA
  • #1 21158499
    opaaa
    Poziom 4  
    Witam,
    Nie wiem jak czytać kolejność bitów w ramce DCF. Na stronie https://pl.wikipedia.org/wiki/DCF77 jest fajnie w tabelce opisane, ale i tak nie wiem w jakiej kolejności czytać poszczególne fragmenty bitów.
    Dla przykładu, stworzyłem sobie taki ciąg bitów:
     0,                                              # 0 Początek transmisji zawsze 0
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,       # 1..14 Informacje pogodowe (od listopada 2006)
        0,                                              # 15 Typ anteny
        0,                                              # 16 normalnie – 0, zapowiedź zmiany czasu (przez godzinę przed zmianą) – 1
        1, 0,                                           # 17..18 Typ czasu − “01” czas zimowy, − “10” − czas letni
        0,                                              # 19 Normalnie – 0, zapowiedź dodatkowej sekundy – 1
        1,                                              # 20 Początek informacji o aktualnym czasie, zawsze “1”
        0, 0, 1, 0,                                     # 21..24 Jednostki minut w kodzie BCD
        0, 1, 1,                                        # 25..27 Dziesiątki minut w kodzie BCD
        1,                                              # 28 Bit parzystości, “0” przy parzystej liczbie “jedynek” w kodzie minut
        0, 0, 0, 1,                                     # 29..32 Jednostki godzin w kodzie BCD
        1, 0,                                           # 33, 34 Dziesiątki godzin w kodzie BCD
        0,                                              # 35 Bit parzystości, “0” przy parzystej liczbie “jedynek” w kodzie godzin
        0, 1, 0, 0,                                     # 36..39 Jednostki dnia miesiąca w kodzie BCD
        1, 0,                                           # 40, 41 Dziesiątki dnia miesiąca w kodzie BCD
        1, 1, 1,                                        # 42..44 Dzień tygodnia w kodzie BCD, 1 − Poniedziałek
        0, 0, 1, 0,                                     # 45..48 Jednostki miesiąca w kodzie BCD
        1,                                              # 49 Dziesiątki miesiąca w kodzie BCD
        0, 1, 0, 0,                                     # 50..53 Jednostki roku w kodzie BCD
        0, 0, 1, 0,                                     # 54..57 Dziesiątki roku w kodzie BCD
        1                                               # 58 Bit parzystości, Bit parzystości, “0” przy parzystej liczbie “jedynek” w kodzie daty
                                                        # 59 Bez impulsu

    i 4 bity odpowiadające za jednostki minut: 0, 0, 1, 0, mam to zinterpretować jako 2 minuty czy 4minuty?
    Proszę nie piszcie że DCF jest do niczego i są lepsze sposoby na synchronizację czasu. Traktuję to jako zadanie do nauki programowania i zabicia czasu.
  • REKLAMA
  • #2 21158535
    JacekCz
    Poziom 42  
    opaaa napisał:
    i 4 bity odpowiadające za jednostki minut: 0, 0, 1, 0, mam to zinterpretować jako 2 minuty czy 4minuty?



    Jak doszedłeś do 4ch ?
    W każdej normalnej sytuacji to 2
  • REKLAMA
  • #3 21158573
    opaaa
    Poziom 4  
    No tak, ale jak czytasz w kolejności od bitu 0 to robi się 4.
  • REKLAMA
  • #4 21158579
    stachu_l
    Poziom 37  
    JacekCz napisał:
    W każdej normalnej sytuacji to 2

    A co to jest normalna sytuacja, dla ramki Ethernet młodsze bity idą pierwsze dlatego bit multicast który założono, że idzie pierwszy po drucie jest bitem 0x01 pierwszego bajtu adresu destination.
    Dla sieci Token Ring jest odwrotnie - multicast to 0x80
    Także generalnie pytanie jest zasadne.
    Natomiast bity 45..48 i bit 49 potwierdzają, że 0, 0, 1, 0 to jest 2 a nie 4 bo numer miesiąca z 1 na dziesiątkach może mieć na jednostkach tylko 0, 1 albo 2 dziesiętnie.
  • REKLAMA
  • #5 21158600
    opaaa
    Poziom 4  
    Dziękuję za od powiedź teraz już po ponad wszelką wątpliwość wiem że programie muszę sobie z całej ramki wyciągną odpowiednie bity i w przypadku kiedy będę miał ciąg 0010 to dziesiętnie 2 a nie 4. Mam jeszcze pytanie o impuls 59 przez całą sekundę ten impuls jest w stanie wysokim?
  • #6 21160941
    opaaa
    Poziom 4  
    Zamykam temat, odpowiedź @stachu_l jest jednoznaczna dziękuję.
REKLAMA