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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-01-21T17:21:55+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=158&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-01-21T17:21:55+01:00</updated>
<published>2012-01-21T17:21:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=158&amp;p=1369#p1369</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=158&amp;p=1369#p1369"/>
<title type="html"><![CDATA[Re: RTC i wyświetlanie daty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=158&amp;p=1369#p1369"><![CDATA[
No to ja podpowiem tylko, że to co kolega robi nie jest zgodne z tym co w książce. Bo w książce przykład dotyczył sekund, minut i godzin. Te wartości są po prostu zapisywane w całym bajcie w formacie BCD. Ale już takie wartości jak miesiąc, rok czy dzień tygodnia ???? .... tu polecam zajrzeć do noty PDF scalaka RTC i wszystko stanie się jasne <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ..... <br /><br />Podpowiedź, miesiąc panie kolego zapisany jest wprawdzie w BCD ale tylko w 5 młodszych bitach, za to kolejne 3 najstasze bity służą do przechowywania dnia tygodnia. Dlatego gdy mija czarodziejska godzina 0:00 to RTC zwiększa o 1 dzień tygodnia <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... stąd te dziwolągi. A przecież w nocie PDF są pięknie w tabelach rozpisane poszczególne bajty i opis co w jakim bicie jest trzymane ...<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/54_a6c39780aefb0e715d868ce17f59fc34.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/54_a6c39780aefb0e715d868ce17f59fc34.jpg" alt="Obrazek" /></a><br /><br />pokazałem opis komórki pamięci przechowującej właśnie to o co kolega pyta z opisem. Pozostałe proszę znaleźć już samemu. No i teraz chyba jasne, że przy odczycie miesiąca trzeba zamaskować (wyzerować 3 najstarsze bity hmmm?) <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> — 21 sty 2012, o 17:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[modrzej]]></name></author>
<updated>2012-01-21T16:41:53+01:00</updated>
<published>2012-01-21T16:41:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=158&amp;p=1365#p1365</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=158&amp;p=1365#p1365"/>
<title type="html"><![CDATA[RTC i wyświetlanie daty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=158&amp;p=1365#p1365"><![CDATA[
Zgodnie z prośbą Pana Mirka zakładam osobny temat.<br /><br />Po krótce chodzi o to, że przy poniższym kodzie, występują błędy przy wyświetlaniu miesiąca. Dzień miesiąca wyświetla się prawidłowo, jednak przy zmianie miesiąca pojawiają się jakieś pasożytnicze wartości. Opierając się o kod z książki Pana Mirka<br /><br />zapisuję do bufora kolejno dnień i miesiąc:<br /> <br />[syntax=cpp]<br />bufor[0] = 0;// setne części sekundy<br />bufor[1] = dec2bcd(55);// sekundy<br />bufor[2] = dec2bcd(59);// minuty<br />bufor[3] = dec2bcd(23);// godziny<br />bufor[4] = dec2bcd(21); // dzien<br />bufor[5] = dec2bcd(1); //  miesiac<br />// zapis 5 bajtów z bufora pod adres 0x01 w pamięci RAM naszego RTC<br />TWI_write_buf( PCF8583_ADDR, 0x01, 6, bufor );<br />[/syntax]<br /><br />później mam wyświetlanie wszystkiego na wyświetlaczu:<br /><br />[syntax=cpp]<br />if ( int0_flag ) {<br />//odczyt 4 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[ss] );<br />minuty = bcd2dec( bufor[mm] );<br />godziny = bcd2dec( bufor[hh] );<br />dzien = bcd2dec( bufor[dd] );<br />miesiac = bcd2dec( bufor[m_m] );<br /><br /><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 />lcd_locate(1,0);<br />if(dzien&lt;10) lcd_str(&quot;0&quot;);<br />lcd_int(dzien);<br />lcd_str(&quot;/&quot;);<br />if(miesiac&lt;10) lcd_str(&quot;0&quot;);<br />lcd_int(miesiac);<br />}<br />[/syntax]<br />i jest wszystko ładnie... do czasu aż godzina przejdzie przez 00:00:00. Wówczas wyświetlana data zmienia się z 21/01 na 22/21. Zapewne to jakiś banał, ale coś nie mogę go znaleźć...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=175">modrzej</a> — 21 sty 2012, o 16:41</p><hr />
]]></content>
</entry>
</feed>