<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=45&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2011-11-07T13:20:29+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=45&amp;mode</id>
<entry>
<author><name><![CDATA[smalski]]></name></author>
<updated>2011-11-07T13:20:29+01:00</updated>
<published>2011-11-07T13:20:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=45&amp;p=285#p285</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=45&amp;p=285#p285"/>
<title type="html"><![CDATA[Re: NTP client]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=45&amp;p=285#p285"><![CDATA[
No i wszystko jasne!!!<br />Dziękuję<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=68">smalski</a> — 7 lis 2011, o 13:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2011-11-07T13:15:19+01:00</updated>
<published>2011-11-07T13:15:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=45&amp;p=284#p284</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=45&amp;p=284#p284"/>
<title type="html"><![CDATA[Re: NTP client]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=45&amp;p=284#p284"><![CDATA[
(int32_t)360 hmm można powiedzieć że to robić coś podobnego niejako do tego UL <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> tzn mówimy kompilatorowi, że chcemy aby potraktował liczbę 360 jako 32bitową liczbę ze znakiem. Prawidłowo nazywa się to &quot;rzutowanie typów&quot; w języku C.<br /><br />Ale jeśli tam jest minus to coś chyba jest nie tak - i zdaje się, że nie powinno się to skompilować <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />aaaaa nie !!! zaraz - no przecież, <br /><br />(int32_t)-360 <br /><br />to po prostu rzutowanie ujemnej liczby -360 na ujemną liczbę 32bitową ze znakiem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> bo domyślnie bez rzutowania kompilator robi promocję typów do 16bitowych. A tu zdaje się wszystkie obliczenia muszą być przeprowadzone na 32 bitowych <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 7 lis 2011, o 13:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[smalski]]></name></author>
<updated>2011-11-07T13:10:21+01:00</updated>
<published>2011-11-07T13:10:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=45&amp;p=283#p283</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=45&amp;p=283#p283"/>
<title type="html"><![CDATA[Re: NTP client]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=45&amp;p=283#p283"><![CDATA[
To, że jest to konwersja czasu to ja wiem:)<br /><br />minutes=gmtime(time+(int32_t)-360*(int32_t)hours_offset_to_utc,day,clock);<br /><br />tylko co robią te zwroty (int32_t)??Interesuje mnie zrozumienie pierwszego argumentu.<br />a minus jest w kodzie, zwrot skopiowałem z kodu źródłowego.<br /><br />UL-dzięki, znowu przeoczyłem w książce:)<br /><br />kod:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">void print_time_to_lcd(void)<br />{<br />        char day&#91;16&#93;;<br />        char clock&#91;16&#93;;<br />        uint8_t minutes;<br /><br />        // returns day and time-string in seperate variables:<br />        minutes=gmtime(time+(int32_t)-360*(int32_t)hours_offset_to_utc,day,clock);&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;----------- TU<br />        if (prev_minutes!=minutes){<br />                // update complete display including day<br />                lcd_clrscr();<br />                lcd_gotoxy(0,1);<br />                lcd_puts(day);<br />                // update complete display<br />        }<br />        // write first line<br />        lcd_gotoxy(0,0);<br />        lcd_puts(clock);<br />        lcd_puts_P(&quot; (&quot;);<br />        if (hours_offset_to_utc&gt;=0){<br />                lcd_puts_P(&quot;+&quot;);<br />        }<br />        itoa(hours_offset_to_utc,gStrbuf,10);<br />        adddotifneeded(gStrbuf);<br />        lcd_puts(gStrbuf);<br />        lcd_puts_P(&quot;)&quot;);<br />        // write to first line<br />        lcd_gotoxy(15,0);<br />        lcd_putc(lindicator);<br />        prev_minutes=minutes;<br />        // before every hour<br />        if (minutes==57 &amp;&amp; update_at_58_avoid_duplicates==0){<br />                client_gw_arp_refresh();  // causes a refresh arp for the GW mac<br />                update_at_58_avoid_duplicates=1;<br />        }<br />        if (minutes==58 &amp;&amp; update_at_58_avoid_duplicates==1){<br />                // mark that we will wait for new<br />                // ntp update<br />                haveNTPanswer=2;<br />                send_ntp_req_from_idle_loop=1;<br />                update_at_58_avoid_duplicates=2;<br />        }<br />        // we need this update_at_58_avoid_duplicates variable<br />        // otherwise we will send every second an arp or ntp request<br />        // in that minute<br />        if (minutes&lt;56){<br />                update_at_58_avoid_duplicates=0;<br />        }<br />}</div><br /><br />smalski<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=68">smalski</a> — 7 lis 2011, o 13:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2011-11-07T12:32:32+01:00</updated>
<published>2011-11-07T12:32:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=45&amp;p=280#p280</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=45&amp;p=280#p280"/>
<title type="html"><![CDATA[Re: NTP client]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=45&amp;p=280#p280"><![CDATA[
Na początek to chyba się koledze coś pomyliło (chyba literówka) ale w tym:<br /><br />minutes=gmtime(time+(int32_t)-360*(int32_t)hours_offset_to_utc,day,clock);<br /><br />nie może być znaku MINUS pomiędzy (int32_t)-360 a liczbą 360 - to tak dla ścisłości\<br /><br />ad.1) .... to jest konwersja czasu z uwzględnieniem przesunięcia UTC<br /><br />ad.2) ... no to jest wyjaśnione w książce <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> UL oznacza, że chcemy aby kompilator potraktował liczbę poprzedzającą ten zapis jako Unsigned Long<br /><br />Po wyjaśnieniu wyżej chyba już wiadomo czym będzie się różnić liczba 3600 od 3600UL czy nie? dla pewności podpowiem, że bez UL będzie przechowywana w dwóch bajtach bo przecież mieści się w zakresie 0-65535 a w drugim przypadku będzie przechowywana i brana do obliczeń jako unsigned long czyli będzie zapisana na 4 bajtach - a to chyba spora różnica prawda?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 7 lis 2011, o 12:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[smalski]]></name></author>
<updated>2011-11-07T09:00:05+01:00</updated>
<published>2011-11-07T09:00:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=45&amp;p=279#p279</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=45&amp;p=279#p279"/>
<title type="html"><![CDATA[NTP client]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=45&amp;p=279#p279"><![CDATA[
Witam!!!<br />Uruchomiłem kod NTP clienta pobrany z tuxgraphics.com używając karty sieciowej ATB oraz zestawu testowego ATB.<br />Nie potrafię rozgryść wywołania poniższej funkcji ( co to za dziwoląg?):<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">minutes=gmtime(time+(int32_t)-360*(int32_t)hours_offset_to_utc,day,clock);</div><br />oto ciało funkcji:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">uint8_t gmtime(const uint32_t time,char *day, char *clock)<br />{<br />        char dstr&#91;4&#93;;<br />        uint8_t i;<br />   uint32_t dayclock;<br />        uint16_t dayno;<br />   uint16_t tm_year = EPOCH_YR;<br />   uint8_t tm_sec,tm_min,tm_hour,tm_wday,tm_mon;<br /><br />   dayclock = time % SECS_DAY;//godzin w danym dniu<br />   dayno = time / SECS_DAY;//dni<br /><br />   tm_sec = dayclock % 60UL;//sekund w danym dniu<br />   tm_min = (dayclock % 3600UL) / 60;<br />   tm_hour = dayclock / 3600UL;<br />   tm_wday = (dayno + 4) % 7;   /* day 0 was a thursday */<br />   while (dayno &gt;= YEARSIZE(tm_year)) {<br />      dayno -= YEARSIZE(tm_year);<br />      tm_year++;<br />   }<br />   tm_mon = 0;<br />   while (dayno &gt;= monthlen(LEAPYEAR(tm_year),tm_mon)) {<br />      dayno -= monthlen(LEAPYEAR(tm_year),tm_mon);<br />      tm_mon++;<br />   }<br />        i=0;<br />        while (i&lt;3){<br />                dstr&#91;i&#93;= pgm_read_byte(&amp;(day_abbrev&#91;tm_wday*3 + i&#93;));<br />                i++;<br />        }<br />        dstr&#91;3&#93;='\0';<br />   sprintf_P(day,PSTR(&quot;%s %u-%02u-%02u&quot;),dstr,tm_year,tm_mon+1,dayno + 1);<br />   sprintf_P(clock,PSTR(&quot;%02u:%02u:%02u&quot;),tm_hour,tm_min,tm_sec);<br />        return(tm_min);<br />}</div><br /><br />funkcja przyjmuje 3 argumenty:<br />1. Zmienna uint32_t time.<br />2. Wskaźnik na string day.<br />3. Wskaźnik na string clock.<br /><br /><br />1. <strong>Jak rozszyfrować pierwszy argument funkcji??</strong><br /><br />time+(int32_t)-360*(int32_t)hours_offset_to_utc<br /><br />2. <strong>Co nam daje dopisanie do wartości UL, np. 3600UL</strong><br /><br />czym ten zapis różni się od 3600??<br /><br />pozdrawiam<br />smalski<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=68">smalski</a> — 7 lis 2011, o 09:00</p><hr />
]]></content>
</entry>
</feed>