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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-11-05T10:05:32+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=3769&amp;mode</id>
<entry>
<author><name><![CDATA[mirek1968]]></name></author>
<updated>2013-11-05T10:05:32+01:00</updated>
<published>2013-11-05T10:05:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=55463#p55463</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=55463#p55463"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=55463#p55463"><![CDATA[
Masz rację ,przecież mieszkamy w Polsce,zmienię to <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=922">mirek1968</a> — 5 lis 2013, o 10:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirek1968]]></name></author>
<updated>2013-11-05T00:19:55+01:00</updated>
<published>2013-11-05T00:19:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=55449#p55449</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=55449#p55449"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=55449#p55449"><![CDATA[
Zrobiłem to wykorzystując funkcję printf i przekształcenia.<br /><br />[syntax=c]printf(&quot;GODZINA: %02i:%02i:%02i&quot;, DateTime.hour, DateTime.minute, DateTime.second);[/syntax]<br /><br />I wszystko działa ok,oto wynik zadania na terminalu laptopa:-)<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/922/5f740067db78855a319dec4eb0fc9ed2.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/922/5f740067db78855a319dec4eb0fc9ed2.jpg" alt="Obrazek" /></a><br /><br />Jakby ktoś potrzebował pomocy dotyczącej obsługi tego DS1302 i ew. problemów z nim to pomogę chętnie:-)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=922">mirek1968</a> — 5 lis 2013, o 00:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-11-03T21:04:55+01:00</updated>
<published>2013-11-03T21:04:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=55301#p55301</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=55301#p55301"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=55301#p55301"><![CDATA[
A teraz robisz coś zupełnie innego niż post wyżej  <img src="https://forum.atnel.pl/images/smilies/icon_eek.gif" alt=":shock:" title="Zaszokowany" />, a możesz też wykorzystać inną funkcję:<br />[syntax=c]uart_putint(czas.second, 10);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 3 lis 2013, o 21:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirek1968]]></name></author>
<updated>2013-11-03T14:48:10+01:00</updated>
<published>2013-11-03T14:48:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=55263#p55263</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=55263#p55263"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=55263#p55263"><![CDATA[
Zrobiłem tak ale nic nie wyświetla na terminalu <br /><br />[syntax=c]rtc_get_time(&amp;czas);<br /><br />tr_locate(0,0);<br />        uart_putc(czas.second);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=922">mirek1968</a> — 3 lis 2013, o 14:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-11-02T22:54:59+01:00</updated>
<published>2013-11-02T22:54:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=55222#p55222</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=55222#p55222"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=55222#p55222"><![CDATA[
Za pomocą funkcji uart_putc lub innej która wysyła jeden znak w zależności od użytej biblioteki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 2 lis 2013, o 22:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirek1968]]></name></author>
<updated>2013-11-02T10:22:00+01:00</updated>
<published>2013-11-02T10:22:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=55129#p55129</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=55129#p55129"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=55129#p55129"><![CDATA[
lcd_char(czas.year / 10 + '0');<br /><br />jak to wysłać poprzez UART na terminal?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=922">mirek1968</a> — 2 lis 2013, o 10:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirek1968]]></name></author>
<updated>2013-08-12T17:35:26+01:00</updated>
<published>2013-08-12T17:35:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45512#p45512</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45512#p45512"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45512#p45512"><![CDATA[
Spróbuję zmienić układ,kwarc muszę wylutować z płytki(więcej roboty i cieniutkie ścieżki na PCB),jednego tylko nie rozumiem jak to możliwe że w momencje podłączenia zasilacza do PCB kasuje (zeruje mi0 i zatrzymuje zegarek a jak podłączę zasilanie z laptopa poprzez programator USBasf to nigdy nie kasuje układu i pamięć czasu jest podtrzymana pomimo tego że czasem nie rusza zegarek.?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=922">mirek1968</a> — 12 sie 2013, o 17:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-08-12T17:14:10+01:00</updated>
<published>2013-08-12T17:14:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45505#p45505</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45505#p45505"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45505#p45505"><![CDATA[
wydłubałem 1302  i działa bez błędnie , zmień kwarc i lub układ jak możesz<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 12 sie 2013, o 17:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirek1968]]></name></author>
<updated>2013-08-12T17:09:35+01:00</updated>
<published>2013-08-12T17:09:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45504#p45504</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45504#p45504"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45504#p45504"><![CDATA[
Tak dokładnie jak na fotkach mam podłączone DS1302 oraz zasilanie PCB.Co masz na myśli o zasilaniu I2C?,ten układ nie działa na I2C proszę sprecyzuj:-)<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/922/256ad57d9c431ddabf541445307bb282.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/922/256ad57d9c431ddabf541445307bb282.jpg" alt="Obrazek" /></a><a href="http://forum.atnel.pl/_obrazki/o/922/d30c848c158f8fad6269fb7a5a2e4648.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/922/d30c848c158f8fad6269fb7a5a2e4648.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=922">mirek1968</a> — 12 sie 2013, o 17:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-08-11T20:36:04+01:00</updated>
<published>2013-08-11T20:36:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45376#p45376</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45376#p45376"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45376#p45376"><![CDATA[
Mi to też zaczyna wyglądać na problemy sprzętowe , niestety nie mam pod ręką żadnego DS1302 żeby sprawdzić fizycznie<br />czy I2C masz podciągnięte ?? wszystkie masy itd podłączone ?? zasilanie podtrzymujące jest ??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 11 sie 2013, o 20:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirek1968]]></name></author>
<updated>2013-08-11T20:18:18+01:00</updated>
<published>2013-08-11T20:18:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45374#p45374</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45374#p45374"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45374#p45374"><![CDATA[
Po przeróbce w zasadzie dostosowaniu bibliotek LCD do Twojego programu wszystko ruszyło OK.<br />Ale jest dokładnie taki sam problem jak w przypadku mojego kodu opisanego powyżej,tzn: jak odłączę napięcie i podłączę znów to niekiedy jest czysty wyświetlacz i nic nie pokazuje a niekiedy za np. następnym załączeniu zasilania jest ok.Wtedy jak na LCD nic nie pokazuje wystarczy zresetować na PCB procesor i zegarek pracuje poprawnie-dzieje się dokładnie to samo co na moim kodzie,czyli raz działa a po wyłączeniu i załączeniu jest czasami problem.Ale najbardziej ciekawe jest to że jak podłączę zasilanie PCB z zasilacza to za każdym razem kasuje się zegarek i nie pracuje,wtedy muszę podłączyć go ponownie do programatora USBasf i ustawić wszystko i wtedy pracuje znów OK.Ale się rozpisałem ale nie daje mi to spokoju bo wygląda na to ze soft jest ok i jeden i drugi ten Twój a więc co jest nie tak bo już zgupiałem.<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=922">mirek1968</a> — 11 sie 2013, o 20:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirek1968]]></name></author>
<updated>2013-08-11T14:00:57+01:00</updated>
<published>2013-08-11T14:00:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45264#p45264</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45264#p45264"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45264#p45264"><![CDATA[
Dzięki bardzo,jak dostosuję jeszcze sobie main.c do moich bibliotek dla LCD hd44780 to dam znać czy wszystko działa poprawnie i odezwię się.<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=922">mirek1968</a> — 11 sie 2013, o 14:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-08-11T12:43:24+01:00</updated>
<published>2013-08-11T12:43:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45247#p45247</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45247#p45247"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45247#p45247"><![CDATA[
wydaje mi się jednak że jestem zbyt okrutny dla ciebie ...<br />dlatego postanowiłem nieco uprościć  całość :<br /><br />plik DS1302.c<br /><br />[syntax=c]#include &quot;ds1302.h&quot;<br /><br />uint8_t DS1302_Bin8_To_BCD(uint8_t data)<br />{<br />   uint8_t nibh;<br />   uint8_t nibl;<br /><br />   nibh=data/10;<br />   nibl=data-(nibh*10);<br /><br />   return((nibh&lt;&lt;4)|nibl);<br />}<br /><br />uint8_t DS1302_BCD_To_Bin8(uint8_t data)<br />{<br />unsigned char result;<br />result = ((data&gt;&gt;4) &amp; 0b00000111);<br />data &amp;= 0x0F;<br />data = data + result*10;<br />return data;<br />}<br /><br /><br />void ds1302_write(unsigned char cmd)<br />{<br />unsigned char i;<br />DS1302_DDR_RTC |= (1&lt;&lt;DS1302_E) | (1&lt;&lt;DS1302_SCLK);<br />DS1302_PORT_RTC |= (1&lt;&lt;DS1302_E);  //E=1<br />_delay_us(1);<br />DS1302_DDR_RTC |= (1&lt;&lt;DS1302_IO);<br />for(i=0; i&lt;8; i++)<br />{<br />if((cmd&amp;(1&lt;&lt;i)) == 1&lt;&lt;i)<br />{<br />DS1302_PORT_RTC |= (1&lt;&lt;DS1302_IO);<br />}<br />else<br />{<br />DS1302_PORT_RTC &amp;= ~(1&lt;&lt;DS1302_IO);<br />}<br />DS1302_PORT_RTC |= (1&lt;&lt;DS1302_SCLK);<br />_delay_us(1);<br />DS1302_PORT_RTC &amp;= ~(1&lt;&lt;DS1302_IO);<br />DS1302_PORT_RTC &amp;= ~(1&lt;&lt;DS1302_SCLK);<br />} <br />}<br /><br />void ds1302_end_write_data()<br />{<br />DS1302_PORT_RTC &amp;= ~(1&lt;&lt;DS1302_E);<br />}<br /><br />unsigned char ds1302_read()<br />{<br />unsigned char readbyte;<br />unsigned char i;<br />readbyte=0;<br />DS1302_DDR_RTC &amp;= ~(1&lt;&lt;DS1302_IO);<br />for(i=0;i&lt;8;i++)<br />{<br />DS1302_PORT_RTC |= 1&lt;&lt;DS1302_SCLK;<br />if((DS1302_PIN_RTC &amp; (1&lt;&lt;DS1302_IO))==0)<br />{<br />readbyte &amp;= ~(1&lt;&lt;i);<br />}<br />else<br />{<br />readbyte |= 1&lt;&lt;i;<br />}<br />_delay_us(1);<br />DS1302_PORT_RTC &amp;= ~(1&lt;&lt;DS1302_SCLK);<br />_delay_us(1);<br />}<br />DS1302_PORT_RTC &amp;= ~(1&lt;&lt;DS1302_E);<br />_delay_us(1);<br />return readbyte;<br />}<br /><br />void DS1302_ReadDateTime() {<br />//odczyt sekund <br />ds1302_write(0x81);<br />DateTime.Sec = DS1302_BCD_To_Bin8(ds1302_read());<br />//odczyt minut<br />ds1302_write(0x83);<br />DateTime.Min = DS1302_BCD_To_Bin8(ds1302_read());<br />//odczyt godziny<br />ds1302_write(0x85);<br />DateTime.Hour = ds1302_read();<br />DateTime.AMPM = (DateTime.Hour &amp; 0b00100000);<br />DateTime.H12_24 = (DateTime.Hour &amp; 0b10000000);<br />if (DateTime.H12_24 == H12) {<br />DateTime.Hour = DateTime.Hour &amp; 0b00011111;<br />}<br />else {<br />DateTime.Hour = DateTime.Hour &amp; 0b00111111;<br />}<br />DateTime.Hour = DS1302_BCD_To_Bin8(DateTime.Hour);<br />//odczyt dnia<br />ds1302_write(0x87);<br />DateTime.Day = DS1302_BCD_To_Bin8(ds1302_read());<br />//odczyt miesiąca <br />ds1302_write(0x89);<br />DateTime.Month = DS1302_BCD_To_Bin8(ds1302_read());<br />//odczyt dnia (w tygodniu)<br />ds1302_write(0x8B);<br />DateTime.WeekDay=ds1302_read();<br />//odczyt roku<br />ds1302_write(0x8D);<br />DateTime.Year = DS1302_BCD_To_Bin8(ds1302_read());<br />}<br /><br />void DS1302_WriteDateTime() {<br />uint8_t tmp;<br />//ustawienie sekund<br />ds1302_write(0x80);<br />ds1302_write(DS1302_Bin8_To_BCD(DateTime.Sec));<br />ds1302_end_write_data();<br />//ustawienie minut<br />ds1302_write(0x82);<br />ds1302_write(DS1302_Bin8_To_BCD(DateTime.Min));<br />ds1302_end_write_data();<br />//ustawienie minut<br />tmp = (DS1302_Bin8_To_BCD(DateTime.Hour) | DateTime.AMPM | DateTime.H12_24);<br />ds1302_write(0x84);<br />ds1302_write(tmp);<br />ds1302_end_write_data();<br />//ustawienie daty<br />ds1302_write(0x86);<br />ds1302_write(DS1302_Bin8_To_BCD(DateTime.Day));<br />ds1302_end_write_data();<br />//ustawienie miesiąca<br />ds1302_write(0x88);<br />ds1302_write(DS1302_Bin8_To_BCD(DateTime.Month));<br />ds1302_end_write_data();<br />//ustawienie dnia (w tygodniu)<br />ds1302_write(0x8A);<br />ds1302_write(DateTime.WeekDay);<br />ds1302_end_write_data();<br />//ustawienie roku<br />ds1302_write(0x8C);<br />ds1302_write(DS1302_Bin8_To_BCD(DateTime.Year));<br />ds1302_end_write_data();<br />}[/syntax]<br /><br /><br /><br />plik DS1302.h<br /><br />[syntax=c]#ifndefDS1302_H<br />#defineDS1302_H<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define DS1302_E 0<br />#define DS1302_SCLK 1<br />#define DS1302_IO 2<br />#define DS1302_DDR_RTC DDRC<br />#define DS1302_PORT_RTC PORTC<br />#define DS1302_PIN_RTC PINC<br /><br />#define AM 0<br />#define PM 0b00100000<br /><br />#define H12 0b10000000<br />#define H24 0<br /><br />typedefstruct<br />{<br />uint8_tSec;<br />uint8_tMin;<br />uint8_tHour;<br />uint8_tMonth;<br />uint8_tDay;<br />uint8_tYear;<br />uint8_tWeekDay;<br />uint8_tAMPM;<br />uint8_tH12_24;<br />} tpDateTime;<br /><br />tpDateTimeDateTime;<br /><br />void DS1302_ReadDateTime();<br />void DS1302_WriteDateTime();<br /><br />#endif[/syntax]<br /><br /><br />oraz przykładowe użycie  w main.c<br /><br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;hd44780.h&quot;<br /><br />#include &quot;ds1302.h&quot;<br /><br />char buffer&#91;16&#93;=&quot;&quot;;<br /><br />int main()<br />{<br /><br /><br />DateTime.Sec = 57;<br />DateTime.Min = 59;<br />DateTime.Hour = 11;<br />DateTime.Month = 8;<br />DateTime.Day = 16;<br />DateTime.Year = 11;<br />DateTime.WeekDay = 2;<br />DateTime.AMPM = AM;   //AM/PM  <br />DateTime.H12_24 = H12;  //H12/H24<br /><br /><br />DS1302_WriteDateTime();<br /><br /><br />LCDinit();<br />LCDcursorOFF();<br />LCDclr();<br /><br />while(1)<br />{<br /><br />DS1302_ReadDateTime();<br /><br /><br />sprintf(buffer, &quot;%02i:%02i:%02i&quot;, DateTime.Hour, DateTime.Min, DateTime.Sec);<br />LCDGotoXY(0,0);<br />LCDstring(buffer, 8);<br /><br />if (DateTime.H12_24 == H12) {<br />if (DateTime.AMPM == AM){<br />LCDsendChar('A');<br />}<br />else {<br />LCDsendChar('P');<br />}<br />LCDsendChar('M');<br />}<br /><br />sprintf(buffer, &quot;%02i-%02i-%02i,%i&quot;, DateTime.Day, DateTime.Month, DateTime.Year, DateTime.WeekDay);<br />LCDGotoXY(0,1);<br />LCDstring(buffer, 10);<br /><br /><br />_delay_ms(100);<br />}<br />}[/syntax]<br /><br />mam nadzieję że teraz sobie poradzisz bez problemu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 11 sie 2013, o 12:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirek1968]]></name></author>
<updated>2013-08-11T12:32:45+01:00</updated>
<published>2013-08-11T12:32:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45246#p45246</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45246#p45246"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45246#p45246"><![CDATA[
No tak ja jestem jeszcze początkujący w języku c i stale muszę się uczyć,dorobienie pliku ds1302.h  i modyfikacja main.c zajmnie mi sporo czasu i nie jest pewne czy mi się uda to uruchomić ale dziękuję za te wiadomości i za czas poświęcony i chęć pomocy:-)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=922">mirek1968</a> — 11 sie 2013, o 12:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-08-11T12:16:13+01:00</updated>
<published>2013-08-11T12:16:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45243#p45243</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45243#p45243"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45243#p45243"><![CDATA[
Zadanie masz proste dorobić sobie plik ds1302.h co będzie proste <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />i zmodyfikować używane funkcje w main.c <br /><br />masz gotową inicjację , zapis i odczyt z DSA wiec teraz nie powinieneś mieć problemów <br /><br />Wiem zostanę za kod zlinczowany przez Mirka i Antego <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />no ale ja strasznie lubię zamotać wszystko <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=58">SunRiver</a> — 11 sie 2013, o 12:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirek1968]]></name></author>
<updated>2013-08-11T12:06:24+01:00</updated>
<published>2013-08-11T12:06:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45238#p45238</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45238#p45238"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45238#p45238"><![CDATA[
Dzięki za ten plik:-)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=922">mirek1968</a> — 11 sie 2013, o 12:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-08-11T12:04:57+01:00</updated>
<published>2013-08-11T12:04:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45237#p45237</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45237#p45237"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45237#p45237"><![CDATA[
tak wypadało by <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=58">SunRiver</a> — 11 sie 2013, o 12:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirek1968]]></name></author>
<updated>2013-08-11T12:01:21+01:00</updated>
<published>2013-08-11T12:01:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45234#p45234</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45234#p45234"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45234#p45234"><![CDATA[
tzn że mój plik rtc.h i main.c to muszę dostosować do tego pliku?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=922">mirek1968</a> — 11 sie 2013, o 12:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-08-11T11:58:59+01:00</updated>
<published>2013-08-11T11:58:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45232#p45232</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45232#p45232"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45232#p45232"><![CDATA[
to jest plik biblioteki DS1302.c<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 11 sie 2013, o 11:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirek1968]]></name></author>
<updated>2013-08-11T11:57:13+01:00</updated>
<published>2013-08-11T11:57:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45231#p45231</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45231#p45231"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45231#p45231"><![CDATA[
czy mogę cały ten kod umieścić w pliku main.c?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=922">mirek1968</a> — 11 sie 2013, o 11:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-08-11T11:50:41+01:00</updated>
<published>2013-08-11T11:50:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45230#p45230</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45230#p45230"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45230#p45230"><![CDATA[
DS1302 , 06 i 07  to jedne z bardziej przyjaznych RTC na rynku <br />w przypadku DS1302  używałem kodu zamieszczonego poniżej , obecnie <br />nie używam już DS1302 , a DS1306 i DS1337<br /><br /><br />[syntax=c]#include&lt;iom16v.h&gt;   <br />#include&lt;macros.h&gt;   <br />   <br />#define uchar unsigned char    <br />#define uint  unsigned int   <br />   <br />//ds1302 podłaczenie <br />#define DS1302_RST 4  //pC4   <br />#define DS1302_SDA 5  //pC5   <br />#define DS1302_SCLK 6 //pC6   <br />//DS1302_RST=1   <br />#define Set_DS1302_RST()  PORTC|=1&lt;&lt;DS1302_RST   <br />//DS1302_RST=0   <br />#define Clr_DS1302_RST()  PORTC&amp;=~(1&lt;&lt;DS1302_RST)   <br />//DS1302_SDA=1   <br />#define Set_DS1302_SDA()  PORTC|=1&lt;&lt;DS1302_SDA   <br />//DS1302_SDA=0   <br />#define Clr_DS1302_SDA()  PORTC&amp;=~(1&lt;&lt;DS1302_SDA)   <br />//DS1302_SCLK=1   <br />#define Set_DS1302_SCLK() PORTC|=1&lt;&lt;DS1302_SCLK   <br />//DS1302_SCLK=0   <br />#define Clr_DS1302_SCLK() PORTC&amp;=~(1&lt;&lt;DS1302_SCLK)   <br />  <br />#define Set_DS1302_DDRSDA() DDRC|=1&lt;&lt;DS1302_SDA   <br />  <br />#define Clr_DS1302_DDRSDA() DDRC&amp;=~(1&lt;&lt;DS1302_SDA)   <br /> <br />#define DS1302_SDA_bit    (PINC&amp;(1&lt;&lt;DS1302_SDA)    <br /><br />//DS1302  -- adresy<br />#define DS1302_SEC_Reg 0x80   <br />#define DS1302_MIN_Reg 0x82   <br />#define DS1302_HR_Reg 0x84   <br />#define DS1302_DATE_Reg 0x86   <br />#define DS1302_MONTH_Reg 0x88   <br />#define DS1302_DAY_Reg 0x8a   <br />#define DS1302_YEAR_Reg 0x8c   <br />#define DS1302_CONTROL_Reg 0x8e   <br />#define DS1302_CHARGER_Reg 0x90   <br />#define DS1302_CLKBURST_Reg 0xbe   <br />   <br />// zapis  ---------------------------------------------------------<br />void DS1302_Write(uchar addr,uchar data)   <br />  {   <br />    uchar i;   <br />      <br />    Set_DS1302_DDRSDA();   <br />    Clr_DS1302_RST();   <br />    asm(&quot;nop&quot;);   <br />    asm(&quot;nop&quot;);   <br />    Clr_DS1302_SCLK();   <br />    asm(&quot;nop&quot;);   <br />    asm(&quot;nop&quot;);   <br />    Set_DS1302_RST();   <br />    asm(&quot;nop&quot;);   <br />    asm(&quot;nop&quot;);   <br />     for(i=8;i&gt;0;i--)   <br />       {    <br />        if(addr&amp;0x01) Set_DS1302_SDA();   <br />        else Clr_DS1302_SDA();   <br />        asm(&quot;nop&quot;);   <br />        asm(&quot;nop&quot;);   <br />        Set_DS1302_SCLK();    <br />        asm(&quot;nop&quot;);   <br />        asm(&quot;nop&quot;);   <br />        Clr_DS1302_SCLK();   <br />        asm(&quot;nop&quot;);   <br />        asm(&quot;nop&quot;);   <br />        addr&gt;&gt;=1;   <br />       }   <br />     for(i=8;i&gt;0;i--)   <br />       {    <br />        if(data&amp;0x01) Set_DS1302_SDA();   <br />        else Clr_DS1302_SDA();   <br />        asm(&quot;nop&quot;);   <br />        asm(&quot;nop&quot;);   <br />        Set_DS1302_SCLK();   <br />        asm(&quot;nop&quot;);   <br />        asm(&quot;nop&quot;);   <br />        Clr_DS1302_SCLK();   <br />        asm(&quot;nop&quot;);   <br />        asm(&quot;nop&quot;);   <br />        data&gt;&gt;=1;   <br />       }   <br />    Clr_DS1302_RST();   <br />    asm(&quot;nop&quot;);   <br />    asm(&quot;nop&quot;);   <br />    Clr_DS1302_DDRSDA();   <br />  }   <br />   <br />// Odczyt  ------------------------------------------------<br />uchar DS1302_Read(uchar addr)   <br />  {   <br />    uchar data=0,i;   <br />       <br />    addr =addr|=0x01;   <br />    Set_DS1302_DDRSDA();   <br />    Clr_DS1302_RST();   <br />    asm(&quot;nop&quot;);   <br />    asm(&quot;nop&quot;);   <br />    Clr_DS1302_SCLK();   <br />    asm(&quot;nop&quot;);   <br />    asm(&quot;nop&quot;);   <br />    Set_DS1302_RST();   <br />    asm(&quot;nop&quot;);   <br />    asm(&quot;nop&quot;);   <br />    for(i=8;i&gt;0;i--)   <br />      {   <br />       if(addr&amp;0x01) Set_DS1302_SDA();   <br />       else Clr_DS1302_SDA();   <br />       asm(&quot;nop&quot;);   <br />       asm(&quot;nop&quot;);   <br />       Set_DS1302_SCLK();    <br />       asm(&quot;nop&quot;);   <br />       asm(&quot;nop&quot;);    <br />       Clr_DS1302_SCLK();   <br />       asm(&quot;nop&quot;);   <br />       asm(&quot;nop&quot;);   <br />       addr&gt;&gt;=1;   <br />      }   <br />    Clr_DS1302_DDRSDA();   <br />    for(i=8;i&gt;0;i--)   <br />      {    <br />       data&gt;&gt;=1;   <br />       if(DS1302_SDA_bit)==(1&lt;&lt;DS1302_SDA)) data|=0x80;   <br />       Set_DS1302_SCLK();   <br />       asm(&quot;nop&quot;);   <br />       asm(&quot;nop&quot;);   <br />       Clr_DS1302_SCLK();   <br />       asm(&quot;nop&quot;);   <br />       asm(&quot;nop&quot;);    <br />      }   <br />    Clr_DS1302_RST();   <br />    asm(&quot;nop&quot;);   <br />    asm(&quot;nop&quot;);   <br />    return(data);   <br />  }   <br />   <br />//  --- kontrola ------------------------ <br />uchar Check_DS1302(void)   <br />  {   <br />   DS1302_Write(DS1302_CONTROL_Reg,0x80);   <br />   if(DS1302_Read(DS1302_CONTROL_Reg)==0x80) return 1;   <br />   return 0;   <br />  }   <br />   <br />  uchar BcdToBin(uchar val)    <br />  {    <br />  val = (val &gt;&gt; 4) *10+(val &amp;0x0f); <br />  return val;   <br />  }    <br />   <br />uchar BinToBcd(uchar val)    <br />  {    <br />  return ((val / 10) *16+val % 10);    <br />  }    <br />   <br /><br /><br />unsigned char WeekDay_cal(char c,char y, char m, char d)    <br /> {   <br />  char week,tempy;    <br />  c=c-1;   <br />  y=(y &gt;&gt; 4) *10+(y &amp;0x0f);   <br />  m=(m &gt;&gt; 4) *10+(m &amp;0x0f);    <br />  d=(d &gt;&gt; 4) *10+(d &amp;0x0f);   <br />  tempy=y;   <br />  if(m==1){m=13;y=y-1;} <br />  if(m==2){m=14;y=y-1;} <br />    <br />  if(((tempy==0)&amp;&amp;(m==13))||((tempy==0)&amp;&amp;(m==14))){c=c-1;y=99;}   <br />  week=(y+y/4+c/4-2*c+(26*(m+1))/10+d-1)%7; <br />  return (week);  <br /> }   <br />/*************************************************************/   <br />      <br />// Inicjacja ..... <br />void DS1302_Init(void)   <br />  {   <br />    DS1302_Write(DS1302_CONTROL_Reg,0x00);    <br />    DS1302_Write(DS1302_SEC_Reg,0x80);    <br />    DS1302_Write(DS1302_CHARGER_Reg,0xa9);  <br />    DS1302_Write(DS1302_YEAR_Reg,0x08);   <br />    DS1302_Write(DS1302_MONTH_Reg,0x04); <br />    DS1302_Write(DS1302_DATE_Reg,0x26);    <br />    DS1302_Write(DS1302_DAY_Reg,0x00);  <br />    DS1302_Write(DS1302_HR_Reg,0x15);   <br />    DS1302_Write(DS1302_MIN_Reg,0x20);   <br />    DS1302_Write(DS1302_SEC_Reg,0x00); <br />    DS1302_Write(DS1302_CONTROL_Reg,0x80);   <br />  }   <br />   <br />// Odczyt czasu ------------------------------  <br />void ReadTime(void)   <br />  {   <br />   uint T,Y,M,D,YH,YL,MMH,MML,DH,DL,WK,HH,HL,MH,ML,SH,SL;   <br />      <br />   Y=DS1302_Read(DS1302_YEAR_Reg);  <br />   YL=Y&amp;0x0f;   <br />   YH=Y&gt;&gt;4;   <br />   M=DS1302_Read(DS1302_MONTH_Reg);   <br />   MML=M&amp;0x0f;   <br />   MMH=(M&gt;&gt;4)&amp;0x01;   <br />   D=DS1302_Read(DS1302_DATE_Reg);   <br />   DL=D&amp;0x0f;   <br />   DH=(D&gt;&gt;4)&amp;0x03;   <br />   //WK=DS1302_Read(DS1302_DAY_Reg);   <br />   //WK=WK&amp;0x07;   <br />   WK=WeekDay_cal(21,Y,M,D);  <br />   T=DS1302_Read(DS1302_HR_Reg);<br />   HL=T&amp;0x0f;   <br />   HH=(T&gt;&gt;4)&amp;0x03;   <br />   T=DS1302_Read(DS1302_MIN_Reg); <br />   ML=T&amp;0x0f;   <br />   MH=(T&gt;&gt;4)&amp;0x07;   <br />   T=DS1302_Read(DS1302_SEC_Reg);  <br />   SL=T&amp;0x0f;   <br />   SH=(T&gt;&gt;4)&amp;0x07;   <br />      <br />   ds1302F(YH,YL,MMH,MML,DH,DL,WK,HH,HL,MH,ML,SH,SL);   <br />     <br />  }[/syntax]<br /><br /><br />przepraszam za brak komentarzy , ale stary to juz kod <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=58">SunRiver</a> — 11 sie 2013, o 11:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-08-10T12:36:23+01:00</updated>
<published>2013-08-10T12:36:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45073#p45073</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45073#p45073"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=45073#p45073"><![CDATA[
Funkcje najlepiej umieścić w pliku rtc.c, a jej prototyp w rtc.h.<br />Bit WP jest na najstarszej pozycji i 0 to oczywiście 0b00000000, czyli w porządku, a 1 to 0b00000001, a ma być 0b10000000.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 10 sie 2013, o 12:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirek1968]]></name></author>
<updated>2013-08-09T12:09:16+01:00</updated>
<published>2013-08-09T12:09:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=44961#p44961</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=44961#p44961"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=44961#p44961"><![CDATA[
przepraszam za pytanie ale nie rozumiem w którym pliku mam wpisać funkcję<br />[syntax=c]void write_protect_bit(void)<br /> {<br /> unsigned char data = 0;<br /> rtc_comms(&amp;data, 0x8E, WRITE); //clear write protect bit<br /> }[/syntax]<br /><br />tzn czy w pliku rtc.c ,rtc.h czy może w programie głównym.<br />Bo jak wpisałem do programu głównego tę funkcję w wywołałem ja poprzez <br /><br />[syntax=c]write_protect_bit();[/syntax]<br /><br />to nie przynosi żadnego rezultatu,tzn czy dam 0 czy 1 to i tak mogę wgrać nastawę zegaraka a myślałem że to blokuje właśnie tę funkcję.<br />[syntax=c]write_protect_bit();<br />rtc_set_time(0X15,0X36,0X10);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=922">mirek1968</a> — 9 sie 2013, o 12:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirek1968]]></name></author>
<updated>2013-08-08T22:51:53+01:00</updated>
<published>2013-08-08T22:51:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=44942#p44942</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=44942#p44942"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=44942#p44942"><![CDATA[
Wstawiłem delay 1000ms na początku main.c ale niestety nadal to jeszcze jest z tym problem.Teraz czasami LCd jest czysty po załączeniu zasilania i daję reset procesora na PCB i wtedy zegarek rusza.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=922">mirek1968</a> — 8 sie 2013, o 22:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-08-08T16:20:20+01:00</updated>
<published>2013-08-08T16:20:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=44909#p44909</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=44909#p44909"/>
<title type="html"><![CDATA[Re: Obsługa zegara DS1302 w języku C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3769&amp;p=44909#p44909"><![CDATA[
Zaraz na początku funkcji main możesz dodać opóźnienie 1 sekundę.<br />Zegar nie startuje czasem, bo bit CH ma przypadkową wartość. Wypróbuj kod po poprawce.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 8 sie 2013, o 16:20</p><hr />
]]></content>
</entry>
</feed>