eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaRóżny czas pomimo synchronizacji z NTPRe: Różny czas pomimo synchronizacji z NTP
  • Data: 2014-11-13 10:03:23
    Temat: Re: Różny czas pomimo synchronizacji z NTP
    Od: Atlantis <m...@w...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Hmm... Coś jeszcze jest na rzeczy z tą synchronizacją.
    Pojedyncza, automatyczna synchronizacja (wywołana po 10 minutach dla
    skompensowania tego sekundowego błędu) wprowadziła 14 sekundowe opóźnienie.

    Czy kod funkcji wysyłającej request wygląda w porządku?

    void client_ntp_request(uint8_t *buf,uint8_t *ntpip,uint8_t
    srcport,uint8_t *dstmac)
    {
    uint8_t i=0;
    uint16_t ck;
    if (!enc28j60linkup())return;
    //
    while(i<6){
    buf[ETH_DST_MAC +i]=dstmac[i]; // gw mac in local lan or
    host mac
    buf[ETH_SRC_MAC +i]=macaddr[i];
    i++;
    }
    buf[ETH_TYPE_H_P] = ETHTYPE_IP_H_V;
    buf[ETH_TYPE_L_P] = ETHTYPE_IP_L_V;
    fill_buf_p(&buf[IP_P],9,iphdr);
    buf[IP_ID_L_P]=ipid; ipid++;
    buf[IP_TOTLEN_L_P]=0x4c;
    buf[IP_PROTO_P]=IP_PROTO_UDP_V;
    i=0;
    while(i<4){
    buf[IP_DST_P+i]=ntpip[i];
    buf[IP_SRC_P+i]=ipaddr[i];
    i++;
    }
    fill_ip_hdr_checksum(buf);
    buf[UDP_DST_PORT_H_P]=0;
    buf[UDP_DST_PORT_L_P]=0x7b; // ntp=123
    buf[UDP_SRC_PORT_H_P]=10;
    buf[UDP_SRC_PORT_L_P]=srcport; // lower 8 bit of src port
    buf[UDP_LEN_H_P]=0;
    buf[UDP_LEN_L_P]=56; // fixed len
    // zero the checksum
    buf[UDP_CHECKSUM_H_P]=0;
    buf[UDP_CHECKSUM_L_P]=0;
    // copy the data:
    i=0;
    // most fields are zero, here we zero everything and fill later
    while(i<48){
    buf[UDP_DATA_P+i]=0;
    i++;
    }
    fill_buf_p(&buf[UDP_DATA_P],10,ntpreqhdr);
    //
    ck=checksum(&buf[IP_SRC_P], 16 + 48,1);
    buf[UDP_CHECKSUM_H_P]=ck>>8;
    buf[UDP_CHECKSUM_L_P]=ck& 0xff;
    enc28j60PacketSend(90,buf);
    }

    Zastanawia mnie zmienna ntpreqhdr. Jaką funkcję ona pełni?
    Bo jej deklaracja wygląda następująco:

    const char ntpreqhdr[] PROGMEM ={0xe3,0,4,0xfa,0,1,0,0,0,1};

    Ktoś z Was wspominał, że request powinien zawierać informację o czasie.
    Tutaj nigdzie nie jestem o nią proszony...

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: