<?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=5505&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-05-04T16:34:17+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=5505&amp;mode</id>
<entry>
<author><name><![CDATA[lukas_]]></name></author>
<updated>2014-05-04T16:34:17+01:00</updated>
<published>2014-05-04T16:34:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=80061#p80061</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=80061#p80061"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=80061#p80061"><![CDATA[
Dzięki <strong>Zaba</strong>. Wydaje mi się, że tak jak jest teraz to powinno być już dobrze. Może ktoś teraz na to zerknąć? <br />[syntax=c]void PCF8583_set_rejestr_kontrolny(){<br />uint8_t rej_kon&#91;3&#93;;<br />uint8_t buf&#91;1&#93;;<br />//moim strażnikiem jest w tym przypadku rej_kon&#91;2&#93;=0<br />TWI_read_buf( PCF8583_ADDR, 0x05, 1, buf );<br />TWI_read_buf( PCF8583_ADDR, 0x10, 3, rej_kon );<br />if((rej_kon&#91;1&#93;%4)==0){ //tu jest warunek programowania roku przestępnego<br />rej_kon&#91;0&#93;=rej_kon&#91;1&#93;;<br />TWI_write_buf( PCF8583_ADDR, 0x10, 1, rej_kon );<br />rej_kon&#91;2&#93;=4; // musi być liczba różna od 0, 1, 2, 3<br />}<br />if((buf&#91;0&#93;&gt;&gt;6)==3 &amp;&amp; rej_kon&#91;2&#93;==4){<br />rej_kon&#91;2&#93;=0;<br />}<br />if((buf&#91;0&#93;&gt;&gt;6)==rej_kon&#91;2&#93;){<br />rej_kon&#91;0&#93;+=4;<br />rej_kon&#91;2&#93;=4; //musi być liczba różna od 0, 1, 2, 3<br />TWI_write_buf( PCF8583_ADDR, 0x10, 3, rej_kon );<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1060">lukas_</a> — 4 maja 2014, o 16:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2014-05-03T20:21:00+01:00</updated>
<published>2014-05-03T20:21:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79982#p79982</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79982#p79982"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79982#p79982"><![CDATA[
Wstępna analiza:<br />mały błąd przy określaniu roku przestępnego<br />rok przestępny (nie mylić z przestępczym <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ) mamy kiedy<br />dzieli się przez 4 a nie jest podzielny przez 100 i jest podzielny przez 400<br /><a href="http://cybermoon.pl/wiedza/algorithms/rok_przestepny.html"  class="postlink">http://cybermoon.pl/wiedza/algorithms/rok_przestepny.html</a><br /><br />drugi warunek &quot;if&quot; spełni się tylko raz a nie cyklicznie co cztery lata<br /> ponieważ później ustawiasz kon[2]=4 a wartość w rejestrze roku <br />nigdy nie osiągnie 4  tam jest tylko wartość od 0..3<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 3 maja 2014, o 20:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas_]]></name></author>
<updated>2014-05-03T19:43:07+01:00</updated>
<published>2014-05-03T19:43:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79978#p79978</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79978#p79978"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79978#p79978"><![CDATA[
Ja zrobiłem coś takiego. W komórkach 10, 11, 12 PCF trzymam odpowiednio wartości rok-(rok%4); rok; 0 (to jest mój strażnik). Moja funkcja główna wygląda następująco<br />[syntax=c]while(1){<br />if (GIFR &amp; (1&lt;&lt;INTF0)){ //1<br /><br />PCF8583_set_rejestr_kontrolny();<br />PCF8583_get_time(&amp;time);<br />PCF8583_get_date(&amp;date);<br /><br />lcd_locate(0,0);<br />show_date(&amp;date);<br />lcd_locate(1,13);<br />show_time( &amp;time );<br /><br />GIFR |= (1&lt;&lt;INTF0);//kasowanie flagi<br />}<br />}[/syntax]<br />a funkcja odpowiadająca za kalendarz w latach 00-99 wygląda następująco<br />[syntax=c]void PCF8583_set_rejestr_kontrolny(){<br />uint8_t rej_kon&#91;3&#93;;<br />uint8_t buf&#91;1&#93;;<br />//moim strażnikiem jest w tym przypadku rej_kon&#91;2&#93;=0<br />TWI_read_buf( PCF8583_ADDR, 0x05, 1, buf );<br />TWI_read_buf( PCF8583_ADDR, 0x10, 3, rej_kon );<br />if((rej_kon&#91;1&#93;%4)==0){ //tu jest warunek programowania roku przestępnego<br />rej_kon&#91;0&#93;=rej_kon&#91;1&#93;;<br />TWI_write_buf( PCF8583_ADDR, 0x10, 1, rej_kon );<br />rej_kon&#91;2&#93;=4; // musi być liczba różna od 0, 1, 2, 3<br />}<br />if((buf&#91;0&#93;&gt;&gt;6)==rej_kon&#91;2&#93;){<br />rej_kon&#91;0&#93;+=4;<br />rej_kon&#91;2&#93;=4; //musi być liczba różna od 0, 1, 2, 3<br />TWI_write_buf( PCF8583_ADDR, 0x10, 3, rej_kon );<br />}<br />}[/syntax]<br />Przyznam szczerze, że zrobiłem to trochę po omacku i coś dokładnie nie mogę zrozumieć jak to działa. A najlepsze jest to, że chyba wszystko jest ok, bo za każdym razem rok zlicza mi poprawnie. Mógłby mi ktoś pomóc przeanalizować ten kawałek kodu?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1060">lukas_</a> — 3 maja 2014, o 19:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Hokto]]></name></author>
<updated>2014-05-03T16:14:34+01:00</updated>
<published>2014-05-03T16:14:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79939#p79939</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79939#p79939"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79939#p79939"><![CDATA[
Kolego Zaba dobrze prawisz wystarczy w atmedze napisać warunek że gdy rok w rejestrze jest równy 3 ustaw bit strażnika w pcfie na 1 oczywiście program po starcie musi najpierw sprawdzić czy już wcześniej nie ustawił strażnika na 1 żeby częstym nadpisywaniem nie uszkodzić pamięci PCFa potem gdy rok zmieni się na 0 i strażnik będzie równy 1 to rok ++ strażnik może być potem wyzerowany gdy rejestr lat w pcfie będzie równy 1 taki roczny interwał. Sposób ten może zawieść tylko w przypadku gdy taki zegar nie będzie uruchamiany przez rok w momencie gdy rejestr jest równy 3<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2298">Hokto</a> — 3 maja 2014, o 16:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2014-05-03T13:04:10+01:00</updated>
<published>2014-05-03T13:04:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79925#p79925</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79925#p79925"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79925#p79925"><![CDATA[
Nie bardzo rozumiem ?<br />PCF sam inkrementuje  w rejestrze bity odpowiedzialne za rok<br /><br />Ty tylko sprawdzasz kiedy nastąpi przejście odczytując rejestr i sprawdzając &quot;strażnika&quot;<br /><br />np. <br />sytuacja zaraz po ustawieniu daty i roku oraz wyzerowaniu &quot;strażnika&quot;<br />w dodatkowej komórce pamięci zapisujesz 14 (według pomysłu kolegi @jark).<br /><br />taki pseudo kod:<br /><br />odczyt rejestru <br />rok=0 ,<br />if( straznik==0){nie rób nic} else {komorka==komorka+4 ; straznik=0}  <br />komorka=14 <br />Caly_rok=komorka+rok=14 (ewentualnie dodajesz to do 2000 =2014)<br /><br />odczyt w następnym roku<br />rok=1, straznik=0, komorka=14<br />Caly_rok=komorka+rok=15<br /><br />odczyt w kolejnym roku<br />rok=2, straznik=0, komorka=14<br />Caly_rok=komorka+rok=16<br /><br />odczyt następnym roku<br />rok=3, straznik=1, komorka=14<br />Caly_rok=komorka+rok=17<br /><br />i znowu od początku ponieważ rok się wyzeruje automatycznie po sylwestrze 2017 <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />mam nadzieje że dobrze to rozumiem jak by co to ktoś mnie poprawi <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 3 maja 2014, o 13:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas_]]></name></author>
<updated>2014-05-03T11:37:53+01:00</updated>
<published>2014-05-03T11:37:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79920#p79920</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79920#p79920"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79920#p79920"><![CDATA[
no właśnie tylko nie mam pomysłu jak realizować to przejście ze stanu 3 na 0 <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1060">lukas_</a> — 3 maja 2014, o 11:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2014-05-03T09:24:58+01:00</updated>
<published>2014-05-03T09:24:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79913#p79913</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79913#p79913"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79913#p79913"><![CDATA[
@lukas_ ja bym &quot;postawił strażnika&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />zmienną umieszczoną w PCF-ie której zadaniem byłoby<br />tylko informowanie ,że &quot;przejścia z 3 na 0&quot; jeszcze nie  było i jeśli rejestr w PCF-ie<br />zmieni się z &quot;trzech&quot; na &quot;zero&quot; a &quot;strażnik&quot; ma wartość jeden<br />to nie było przejście z 3 na 0 i odpowiednio zareagować.<br /><br />Następnie trzeba by było &quot;uśpić strażnika&quot; na cały rok &quot;zero&quot; i<br />w &quot;pierwszym&quot; znowu &quot;obudzić&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Może to trochę pokręcony sposób ale na szybko taki przyszedł mi do głowy  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 3 maja 2014, o 09:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas_]]></name></author>
<updated>2014-05-03T09:22:22+01:00</updated>
<published>2014-05-03T09:22:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79912#p79912</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79912#p79912"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79912#p79912"><![CDATA[
Wiem, że PCF8563 jest lepszy pod tym względem ale akurat mam PCF8583 z kalendarzem 4 letnim i chciałbym go oprogramować.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1060">lukas_</a> — 3 maja 2014, o 09:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Hokto]]></name></author>
<updated>2014-05-03T06:52:49+01:00</updated>
<published>2014-05-03T06:52:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79910#p79910</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79910#p79910"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79910#p79910"><![CDATA[
Ja sugerowałbym przesiadkę na PCF8563 który to w swoim rejestrze przechowuje wartość całego roku : <a href="http://www.nxp.com/documents/data_sheet/PCF8563.pdf"  class="postlink">http://www.nxp.com/documents/data_sheet/PCF8563.pdf</a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2298">Hokto</a> — 3 maja 2014, o 06:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas_]]></name></author>
<updated>2014-05-03T01:44:29+01:00</updated>
<published>2014-05-03T01:44:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79908#p79908</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79908#p79908"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=79908#p79908"><![CDATA[
Witam! Chciałbym trochę odświeżyć temat. Mam problem z odczytywaniem roku. Tzn dla 4 lat nie ma problemu. Natomiast nie do końca mogę wpaść w jaki sposób mogę to zrealizować dla większej ilości lat. Chciałem zrobić coś podobnego jak kolega <strong>jark </strong>ale nie wiem w jaki sposób mogę wykrywać zmianę wartości w PCF roku z 3 na 0. Mogę prosić o jakieś sugestie?<br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1060">lukas_</a> — 3 maja 2014, o 01:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2014-02-23T20:05:35+01:00</updated>
<published>2014-02-23T20:05:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=71746#p71746</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=71746#p71746"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=71746#p71746"><![CDATA[
Ja robie to tak:<br /><br />Robie zapis do eeprom od 12 do 200 daje mi to rok 2012 do 2200 bo dodaje warunki ze jezeli jest mniej niz 99 to dodaje 20 a jak wiecej to dodaje 2 z przodu.<br /><br />Dodatkowo daje warunek ze jezeli jest godzina 0 minut 0 sekund 0 dzien 1 miesiac 1 to rok mi sie dodaje w gore.<br /><br /><br />Ok zapytacie a jak nie bedzie zasilania to z baterii rtc nie przeskoczy wyzej z rokiem<br /><br />alez przeskoczy gdyz dodatko daje jeszcze jeden zapis rok_tmp gdzie rok jest o 1 wyzszy od aktualnego ... <br />i gdy jest miesiac 1  a rok aktualny jest niższy od tego w temp to ma sobie dodac<br /><br />czyli jak nie bedzie zasilania to i tak po jego powrocie sobie przeskoczy<br /><br />natomiast gdy juz nadpisze to rok i rok tmp sie wyrowna ... ale ... w  1 dniu 12 miesiaca rok_tmp sie zwieksza o 1<br /><br />moze troche zamieszalem ale mam rok w skali 12 do 200 czyli od 2012 do 2200 z zachowaniem lat przestepnych<br />no przy braku zasilania i pracy rtc z baterii ... i po powrocie zasilania mikrokontroler zaktualizuje sobie rok <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><br />Może wg niektórych trochę zamieszałem ale sprawdzałem i tak działa mi prawidłowo i nie muszę się martwić że coś będzie nie tak<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 23 lut 2014, o 20:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jark]]></name></author>
<updated>2014-02-23T16:59:17+01:00</updated>
<published>2014-02-23T16:59:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=71709#p71709</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=71709#p71709"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=71709#p71709"><![CDATA[
<div class="quotetitle">ortegus napisał(a):</div><div class="quotecontent"><br />no dobra, modulo rozumiem<br /><br />&quot;czyli od roku odejmuje się modulo z roku (czyli resztę z dzielenia przez 4)&quot;<br /><br /> ale co to daje bo ja to widzę tak:<br />2010%4= 2   wiec 2010 - 2= 2008<br />2011%4= 3   wiec 2011 - 3= 2008<br />2012%4= 0   wiec 2012 - 0= 2012<br />2013%4= 1   wiec 2013 - 1= 2012 <br />2014%4= 2   wiec 2014 - 2= 2012<br />2015%4=3    wiec 2014 - 3= 2012<br />...<br />co to daje?(wpisałem cały rok tylko dla lepszego zobrazowania, sam buduje zegarek rtc i się mecze z rokiem <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> )<br /></div><br />jako autor czuję się przywołany do tablicy <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />U mnie rok to jest jeden bajt (tzn od 00 do 99) więc w tej komórce wartości przyjmują 4,8,12 itd.<br />Więc załóżmy że w zegarze chcę ustawić rok 2014 czyli w moim przypadku 14<br />Wpisuję więc do tej komórki <strong>(14-14%4) czyli 12 a do rejestru year pcf-a wartość 14%4 czyli 2 co składa mi się razem na aktualny rok i przy odczycie aby uzyskać aktualny rok dodaję do tej wartości z dodatkowej komórki rok z automatycznego rejestru RTC zmieniający się automatycznie</strong>. Czyli rok mojego zegara składa się z zawartości komórki pod tym adresem + wartość z rejestru year PCF-a. Z tym zegarkiem rtc niestety tak trzeba sobie radzić bo obsługuje tylko 4-latkę:)<br />ds1307 ma to fajniej rozwiązane.<br />Pozdrawiam<br />Jarek<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 4 minutach ]</span></strong><br /><br /><div class="quotetitle">programek napisał(a):</div><div class="quotecontent"><br />PCF8583_year[0]=year-(year%4);<br /></div><br />No a ten konkretny zapis pozwala mi na zapisanie do tej dodatkowo uzywanej komórki pamięci część wartości roku nieobsługiwaną automatycznie przez PCF-a.<br />Pozdrawiam<br />Jarek<br />ps.<br />Wytłuściłem to gdzie poprawiłem zapis.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=582">jark</a> — 23 lut 2014, o 16:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2014-02-23T14:12:58+01:00</updated>
<published>2014-02-23T14:12:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=71675#p71675</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=71675#p71675"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=71675#p71675"><![CDATA[
Czy rok jest przestepny czy nie jest w rtc.  Ja rok rozwiazalem troche inaczej. <br />Zrobie szczegółowy opis jak bede w domu. Bo z tel ciezko kod pisac. <br /><br />Wysłane z telefonu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 23 lut 2014, o 14:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[programek]]></name></author>
<updated>2014-02-23T12:28:08+01:00</updated>
<published>2014-02-23T12:28:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=71671#p71671</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=71671#p71671"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=71671#p71671"><![CDATA[
Nie wiem jakie zamierzenie miał autor kodu, ale wydaje mi się że miało to związek z tym czy rok jest przestępny czy nie.....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1526">programek</a> — 23 lut 2014, o 12:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ortegus]]></name></author>
<updated>2014-02-23T11:40:30+01:00</updated>
<published>2014-02-23T11:40:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=71660#p71660</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=71660#p71660"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=71660#p71660"><![CDATA[
no dobra, modulo rozumiem<br /><br />&quot;czyli od roku odejmuje się modulo z roku (czyli resztę z dzielenia przez 4)&quot;<br /><br /> ale co to daje bo ja to widzę tak:<br />2010%4= 2   wiec 2010 - 2= 2008<br />2011%4= 3   wiec 2011 - 3= 2008<br />2012%4= 0   wiec 2012 - 0= 2012<br />2013%4= 1   wiec 2013 - 1= 2012 <br />2014%4= 2   wiec 2014 - 2= 2012<br />2015%4=3    wiec 2014 - 3= 2012<br />...<br />co to daje?(wpisałem cały rok tylko dla lepszego zobrazowania, sam buduje zegarek rtc i się mecze z rokiem <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> )<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1289">ortegus</a> — 23 lut 2014, o 11:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[programek]]></name></author>
<updated>2014-02-23T09:08:41+01:00</updated>
<published>2014-02-23T09:08:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=71651#p71651</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=71651#p71651"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=71651#p71651"><![CDATA[
<div class="quotetitle">ortegus napisał(a):</div><div class="quotecontent"><br />jak to działa, bo nie rozumiem <br />[syntax=c]PCF8583_year&#91;0&#93;=year-(year%4);[/syntax]<br /></div><br /><br />A masz może bluebook'a, tam jest masa takich przykładów <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />do PCF8583_year[0] przypisuje się: year-(year%4);<br />czyli od roku odejmuje się modulo z roku (czyli resztę z dzielenia przez 4)<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />masz tu przykład z modulo: <br />10%7 = 3 (10 po podzieleniu przez 7 daje resztę 3)<br />lub<br />10%4 = 2<br />już rozumiesz??? <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=1526">programek</a> — 23 lut 2014, o 09:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ortegus]]></name></author>
<updated>2014-02-23T08:55:40+01:00</updated>
<published>2014-02-23T08:55:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=71650#p71650</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=71650#p71650"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=71650#p71650"><![CDATA[
jak to działa, bo nie rozumiem <br />[syntax=c]PCF8583_year&#91;0&#93;=year-(year%4);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1289">ortegus</a> — 23 lut 2014, o 08:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jark]]></name></author>
<updated>2014-01-12T19:16:37+01:00</updated>
<published>2014-01-12T19:16:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64812#p64812</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64812#p64812"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64812#p64812"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />a nie lepiej rok w RAM PCFa umiescic ??<br /></div><br />Tak lepiej.<br />Ja mam np. zmienną year (od 0 do 99 bo rok daję tylko 2 cyfry) i wtedy zapis daty wygląda tak, że pod adres 0x05 daję:<br />[syntax=c]PCF8583_bufor_date&#91;0&#93; = dec2bcd(day)|(year%4&lt;&lt;6);[/syntax]<br />Adres 0x06 zapisywany standardowo. Natomiast pod adresem 0x10 (taki sobie akurat wybrałem) wrzucam to:<br />[syntax=c]PCF8583_year&#91;0&#93;=year-(year%4);[/syntax]<br />To wszystko jeśli chodzi o zapis.<br />Należy pamiętać, że w pętli głównej należy wykrywać zmianę wartości w PCF roku z 3 na 0 i po jej wykryciu zmienną zapisaną pod adresem 0x10 należy zwiększyć o 4. <br />Jeśli chcesz zapis roku 4 cyfrowy dodajesz sobie tylko 2000 do wartości year i masz pełen rok. Uprzedzając Twoje uwagi to powiem że taka metoda spowoduje że w 2100 roku ) jeśli przyjmiesz (tak jak ja) że year ma być w granicach 0-99 lub w 2256 roku (jeśli zmienna year będzie miała pełen zakres bajtu) zegar pokaże Ci złą datę. No ale to dość odległa perspektywa i myślę że jaki byś nie zrobił zegar to tyle on raczej nie pochodzi <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  Minusem też jest fakt że w takim wypadku nie ustawisz daty 19xx no ale w przeszłość zegara też raczej nie wyślesz;) Oczywiście można zmienną year zrobić uint16 i zapisywać ją w dwóch bajtach do zegara ale jaki to ma sens jak jedna z tych komórek (starszy bajt) będzie zmieniana raz na 255 lat <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Oczywiście żeby odczytać rok musisz odczytać wartość roku PCF-a (od 0 do 3) i dodać do tego wartość odczytaną z adresu 0x10.<br />Pozdrawiam<br />Jarek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=582">jark</a> — 12 sty 2014, o 19:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2014-01-11T20:51:30+01:00</updated>
<published>2014-01-11T20:51:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64662#p64662</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64662#p64662"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64662#p64662"><![CDATA[
tak tyle wiem tylko pisze ze ten sposób jest nie hallo ... bo 2012 + rok to sie sprawdzi do 2016 ... a pozniej ?   wolalbym zastosowac zegarek bez pozniejszych kombinacji<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 12 minutach ]</span></strong><br /><br /><div class="quotetitle">gufim napisał(a):</div><div class="quotecontent"><br />Owszem wtedy moża wpisać zamist 2012 , 2016 + rok , i bedzie dobrze lub napisać swój własny program , to tylko przyklad działajacy od roku u mnie na biurku lub zastosować PCF8563 ze 100 letnim kalendarzem albo RTC DS3231 - najdokładniejszy zegarek na świecie .<br /></div><br /><br /><br />a nie lepiej rok w RAM PCFa umiescic ??<br /><br />wiem ze sa inne zegareczki ale opieram sie na PCF8583 bo taki jest w ATB do nauki chyba bez sensu jest kupowac DS3231<br />widzialem tez inne co maja niezly kalendarz ... ale opieram sie na PCF 8583 bo taki jest w ATB i ten rok mnie troche razi :/<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 11 sty 2014, o 20:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gufim]]></name></author>
<updated>2014-01-11T20:44:56+01:00</updated>
<published>2014-01-11T20:44:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64660#p64660</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64660#p64660"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64660#p64660"><![CDATA[
Owszem wtedy moża wpisać zamist 2012 , 2016 + rok , i bedzie dobrze lub napisać swój własny program , to tylko przyklad działajacy od roku u mnie na biurku lub zastosować PCF8563 ze 100 letnim kalendarzem albo RTC DS3231 - najdokładniejszy zegarek na świecie .<br />I jeszcze ten watek polecam zwłaszcza uwagi kolegi Krauser<br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic1378.html" >topic1378.html</a><!-- l --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=126">gufim</a> — 11 sty 2014, o 20:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2014-01-11T20:19:05+01:00</updated>
<published>2014-01-11T20:19:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64655#p64655</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64655#p64655"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64655#p64655"><![CDATA[
dokladnie dlatego pisze do gufin ze ma blad ... <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> bo zamiast 2016 poda mu 2012<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 11 sty 2014, o 20:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[klonyyy]]></name></author>
<updated>2014-01-11T20:00:56+01:00</updated>
<published>2014-01-11T20:00:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64651#p64651</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64651#p64651"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64651#p64651"><![CDATA[
majster -&gt; tylko się upewnię - wiesz że pcf nie podaje Ci roku tylko liczbę 0-3 czyli czy jest to rok przestępny czy są akurat lata nieprzestępne. A rok to już Ty sam sobie inkrementujesz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=532">klonyyy</a> — 11 sty 2014, o 20:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2014-01-11T19:39:19+01:00</updated>
<published>2014-01-11T19:39:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64648#p64648</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64648#p64648"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64648#p64648"><![CDATA[
ok rozumie to co podałeś aczkolwiek mam problem z <br /><br />[syntax=c]rok = (bufor&#91;dd&#93; &amp; 0xC0)&gt;&gt; 6;<br />            pelny_rok = 2012 + rok;   // na poczatku rok = 0 + 2012[/syntax]<br /><br />podaje mi 2012 widać że u mnie aktualnie rok = 0<br /><br />będę musiał popchnąć rok z 0 na 2 <br /><br />ale mam pytanie odnoście <br /><br />[syntax=c]rok = (bufor&#91;dd&#93; &amp; 0xC0)&gt;&gt; 6;[/syntax]<br /><br />jak dobrze pamiętam z PDFa wartość rok od 0 do 3 ... czyli i tak w 2016 pojawi nam się rok 2012 ... nie wiem czy ten fragment dobrze rozumie czy mi się myli ?<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 7 minutach ]</span></strong><br /><br />Nie no czytałem BB ze 10 razy odnośnie PCF i nie mogę zrozumieć jak wpisać rok ... aby wynosił 2<br />ale i tak wg mnie jest z tym coś nie tak bo nie poda nam 2016 a 2012<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 11 sty 2014, o 19:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gufim]]></name></author>
<updated>2014-01-11T18:36:12+01:00</updated>
<published>2014-01-11T18:36:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64639#p64639</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64639#p64639"/>
<title type="html"><![CDATA[Re: odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64639#p64639"><![CDATA[
Witaj , jakiś czas temu poskładałem zegarek z tym układem i do dzis działa więc jeśli mogę pomóc to zobacz na kawałek mojego kodu choć pisanego już dawno temu<br />[syntax=c]void wys_czas(void)<br />{<br /><br />if ( int0_flag )   // jezeli int0_flag = 1 to<br />{<br />//odczyt 6 bajtów do bufora od adresu 0x01 z pamięci RAM naszego RTC<br />TWI_read_buf( PCF8583_ADDR, 0x01, 6, bufor );<br /><br />sekundy = bcd2dec( bufor&#91;ss&#93; );<br />minuty = bcd2dec( bufor&#91;mm&#93; );<br />godziny = bcd2dec( bufor&#91;hh&#93; );<br />dni = bcd2dec( bufor&#91;dd&#93; &amp; 0x3F);<br />    miesiace = bcd2dec( bufor&#91;month&#93; &amp; 0x1F);<br />    rok = (bufor&#91;dd&#93; &amp; 0xC0)&gt;&gt; 6;<br />    pelny_rok = 2012 + rok;   // na poczatku rok = 0 + 2012<br /><br />// wyświetlenie czasu na LCD<br />lcd_locate(0,0);<br />if( godziny &lt; 10 ) lcd_str(&quot;0&quot;);<br />lcd_int(godziny);<br />lcd_str(&quot;:&quot;);<br />if( minuty &lt; 10 ) lcd_str(&quot;0&quot;);<br />lcd_int(minuty);<br />lcd_str(&quot;:&quot;);<br />if( sekundy &lt; 10 ) lcd_str(&quot;0&quot;);<br />lcd_int(sekundy);<br /><br />lcd_locate(1,3);<br />if( dni &lt; 10 ) lcd_str(&quot;0&quot;);<br />lcd_int(dni);<br />lcd_str(&quot;-&quot;);<br />if( miesiace &lt; 10 ) lcd_str(&quot;0&quot;);<br />lcd_int(miesiace);<br />lcd_str(&quot;-&quot;);<br />lcd_int(pelny_rok);<br /><br />int0_flag=0;<br />}<br />}[/syntax]<br /><br />może pomoze .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=126">gufim</a> — 11 sty 2014, o 18:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2014-01-11T17:02:41+01:00</updated>
<published>2014-01-11T17:02:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64613#p64613</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64613#p64613"/>
<title type="html"><![CDATA[odczyt dnia miesiąca z pcf 8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5505&amp;p=64613#p64613"><![CDATA[
witam głowie się nad odczytem dni i miesiąca z pcf8583<br /><br />dzień odczytuję tak:<br /><br />[syntax=c]TWI_read_buf( PCF8583_ADDR, 0x05, 10, data );<br />lcd_locate(1,0);<br />dzien = data&#91;0&#93;;<br />lcd_int(bcd2dec(dzien));[/syntax]<br /><br />zastanawiam się czy jest to prawidłowy odczyt gdyż testowałem przesunięciami godziny i gdy wskakuje zegar z 23:59:59 na następny dzień to go przesuwa niby prawidłowo ale widziałem że wskoczył sobie na 32 i zastanawiam się dlaczego tak się stało ? czy muszę dać warunek ?<br /><br />[syntax=c]if(dzien &gt; 31){<br />dzien = 1;<br /><br /><br />data&#91;0&#93; = dec2bcd(dzien);<br />TWI_write_buf( PCF8583_ADDR, 0x05, 1, dzien );[/syntax]<br /><br />zastanawiam się jak to rozwiązać w BB nie ma nic na ten temat w sensie jest opis ale bez przykładów więc w celach edukacyjnych stwierdziłem że sam postaram się wyciągnąć z PCFa datę<br />i zastanawiam się czy dobrze robię ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 11 sty 2014, o 17:02</p><hr />
]]></content>
</entry>
</feed>