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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-03-21T19:52:49+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=17936&amp;mode</id>
<entry>
<author><name><![CDATA[mateusz251093]]></name></author>
<updated>2017-03-21T19:52:49+01:00</updated>
<published>2017-03-21T19:52:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17936&amp;p=185298#p185298</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17936&amp;p=185298#p185298"/>
<title type="html"><![CDATA[Re: DS1307, zegar nie odmierza czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17936&amp;p=185298#p185298"><![CDATA[
Dzięki. Jutro się za to zabiorę <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Z czystej ciekawości sprawdziłem kilka dni temu dokładność PCF8583. Po ośmiu godzinach pracy, rozkalibrował się o ok. 2-3s <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=13833">mateusz251093</a> — 21 mar 2017, o 19:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wat1970]]></name></author>
<updated>2017-03-21T18:48:18+01:00</updated>
<published>2017-03-21T18:48:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17936&amp;p=185293#p185293</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17936&amp;p=185293#p185293"/>
<title type="html"><![CDATA[Re: DS1307, zegar nie odmierza czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17936&amp;p=185293#p185293"><![CDATA[
W wątku tym pod koniec zapodałem plik do projektu zegara opartego o DS1307. Masz tam poprawną inicjalizację etc. <br />DS1307 to fajny zegarek , może nie tak dokładny jak DS3231 ale ta niedokładność też ma swój urok jak szum starej płyty w adapterze <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Link do wątku : <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic11499.html" >topic11499.html</a><!-- l --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2179">wat1970</a> — 21 mar 2017, o 18:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mateusz251093]]></name></author>
<updated>2017-03-21T18:29:05+01:00</updated>
<published>2017-03-21T18:29:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17936&amp;p=185289#p185289</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17936&amp;p=185289#p185289"/>
<title type="html"><![CDATA[Re: DS1307, zegar nie odmierza czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17936&amp;p=185289#p185289"><![CDATA[
[syntax=c]bufor&#91;7&#93; = 0x0001000;      // control[/syntax]<br /><br />Zgadza się, w jednej linijce było nawet dwa błędy. Powinno być:<br /><br />[syntax=c]bufor&#91;7&#93; = 0b00010000;      // control[/syntax]<br /><br />Spróbowałem też z tą diodą zmienianą w przerwaniu, zaświeci się, ale nie gaśnie. Jeszcze raz przeanalizuję kod - tylko wieczorem - może kolejny głupi błąd <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=13833">mateusz251093</a> — 21 mar 2017, o 18:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jez2000]]></name></author>
<updated>2017-03-21T17:50:34+01:00</updated>
<published>2017-03-21T17:50:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17936&amp;p=185287#p185287</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17936&amp;p=185287#p185287"/>
<title type="html"><![CDATA[Re: DS1307, zegar nie odmierza czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17936&amp;p=185287#p185287"><![CDATA[
To sprawdź tak jak to Mirek pokazywał w debugerze jednodiodowym:) Podłącz jedna diodę, ustaw jako wyjście i sproboj ją zalaczyć w przerwaniu. Będziesz wiedział czy program do tego momentu się wykonuje.<br /><br />Nie wiem czy nie zjadles jednego zera<br /><br />zamiast<br />[syntax=c]bufor&#91;7&#93; = 0x0001000;      // control[/syntax]<br />sproboj<br />[syntax=c]bufor&#91;7&#93; = 0x00010000;      // control[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11828">jez2000</a> — 21 mar 2017, o 17:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mateusz251093]]></name></author>
<updated>2017-03-21T17:05:00+01:00</updated>
<published>2017-03-21T17:05:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17936&amp;p=185285#p185285</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17936&amp;p=185285#p185285"/>
<title type="html"><![CDATA[Re: DS1307, zegar nie odmierza czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17936&amp;p=185285#p185285"><![CDATA[
[syntax=c]while(1)<br /> {<br /> lcd_locate(0, 0);<br /> lcd_str(&quot;Costam&quot;);<br /> if(int0_flag)<br /> {[/syntax]<br /><br />Na początku pętli głównej dodałem przykładowy fragment tekstu - wyświetla się na wyświetlaczu. Wygląda na to, że nie zmienia się flaga zmieniana w przerwaniu, ponieważ &quot;nie wchodzi&quot; w tego ifa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13833">mateusz251093</a> — 21 mar 2017, o 17:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2017-03-21T17:05:09+01:00</updated>
<published>2017-03-21T16:57:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17936&amp;p=185284#p185284</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17936&amp;p=185284#p185284"/>
<title type="html"><![CDATA[Re: DS1307, zegar nie odmierza czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17936&amp;p=185284#p185284"><![CDATA[
Ale skoro na wyświetlaczu nie masz nic, to na początek doprowadź do ładu wyświetlacz. Albo jednak masz źle podłączony albo źle zainicjowany wyświetlacz (ewentualnie pokręć potencjometrem od kontrastu)<br />Na wyświetlaczu powinieneś mieć przynajmniej dwa dwukropki separujące godziny minuty i sekundy...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 21 mar 2017, o 16:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mateusz251093]]></name></author>
<updated>2017-03-21T16:45:26+01:00</updated>
<published>2017-03-21T16:45:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17936&amp;p=185279#p185279</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17936&amp;p=185279#p185279"/>
<title type="html"><![CDATA[DS1307, zegar nie odmierza czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17936&amp;p=185279#p185279"><![CDATA[
Witam,<br /><br />mam pewien problem z obsługą układu DS1307. Przy pisaniu poniższego kodu wzorowałem się na obsłudze zegara PCF8583, zmieniając tutaj pewne rzeczy. Czas i datę ustawiłem w sposób podobny, natomiast w nocie aplikacyjnej układu ds1307 zobaczyłem, że istnieje rejestr kontrolny, pod adresem 0x07. Czytając dalej notę - o ile dobrze zrozumiałem - ustawiłem w tym rejestrze tylko bit nr 4(SQWE), który załącza oscylator z częstotliwością 1Hz. Dalej następuje zapis danych do RTC, następnie - w pętli - odczyt, zmiana kodu bcd na kod dziesiętny i wyświetlenie czasu na LCD.<br />Wykorzystuję płytkę 1.05, gdzie po włożeniu układu ds1307 zmieniłem położenia zworek.<br /><br />Na wyświetlaczu nie wyświetla się żadna wartość (jest tylko podświetlony), ale jest on dobrze podłączony, wyjścia są odpowiednio wybrane w pliku *.h. Próbuję także podłączyć wyjście układu RTC do diody LED, i widać że ona nie gaśnie, czyli problem prawdopodobnie tkwi w niewystartowaniu układu.<br /><br />Jeśli ktoś znajdzie czas i rzuci okiem na kod, będę wdzięczny <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;math.h&gt;<br /><br />#include &quot;lcd44780.h&quot;<br />#include &quot;i2c_twi.h&quot;<br /><br /><br />#define DS1307_ADR 0xD0 // adres zegara rtc na magistrali i2c<br /><br />volatile uint8_t int0_flag = 1; // flaga zmieniana w przerwaniu co 1s<br />uint8_t dec2bcd(uint8_t dec); // konwersja liczby dziesiętnej na kod BCD<br />uint8_t bcd2dec(uint8_t bcd); // konwersja  BCD na l. dziesiętną<br /><br /><br /><br />int main(void)<br />{<br /><br /><br />// *** Podświetlanie LCD ***<br />DDRB |= (1&lt;&lt;PB7);<br />PORTB |= (1&lt;&lt;PB7);<br /><br /><br />// *** Przerwanie od INT0 ***<br />    MCUCR |= (1&lt;&lt;ISC01);    // wyzwalanie zboczem opadającym:<br />    GICR |= (1&lt;&lt;INT0);              // odblokowanie przerwania<br />    PORTD |= (1&lt;&lt;PD2);              // podciągnięcie pinu INT0 do VCC<br /><br />    // *** Tryb wyliczeniowy enum wskazujący na elementy tablicy: ***<br />     enum {ss=0, mm, hh, day, date, month, year, control};<br />     uint8_t bufor&#91;7&#93;;<br /><br /><br />    // zmienne służące do wysłania i odczytu danych z magistrali:<br />     uint8_t sekundy, minuty, godziny, dzien_tyg, data, miesiac, rok;<br /><br />    // ********************************************************<br />     i2cSetBitrate(100); // inicjalizacja magistrali z prędkością 100kHz<br />     lcd_init(); // inicjalizacja wyśw. LCD<br />     sei();   // zgoda globalna na przerwania<br />      // *******************************************************<br /><br /><br />     // *** Zapis danych na magistralę: ***<br />     bufor&#91;0&#93; = dec2bcd(50); // sekundy<br />     bufor&#91;1&#93; = dec2bcd(36); // minuty<br />     bufor&#91;2&#93; = dec2bcd(12); // godziny<br />     bufor&#91;3&#93; = dec2bcd(2);  // day<br />     bufor&#91;4&#93; = dec2bcd(21);  // date<br />     bufor&#91;5&#93; = dec2bcd(3);  // month<br />     bufor&#91;6&#93; = dec2bcd(17);  // year<br />     // *** ustawienie rejestru kontrolnego 0x07h,<br />     // stan niski na OUT <br />     // stan wysoki SQWE - zliczanie impulsów<br />     // dwa najmłodsze bity 00, częstotliwośc 1Hz<br />     bufor&#91;7&#93; = 0x0001000;// control<br /><br />     // ZAPIS powyzszych danych do pamięci RAM zegara RTC<br /> TWI_write_buf( DS1307_ADR, 0x00, 8, bufor );<br /><br /><br /> while(1)<br /> {<br /> if(int0_flag)<br /> {<br /> TWI_read_buf( DS1307_ADR, 0x00, 8, bufor ); // odczyt wysłanych danych z RTC<br /><br /> // zamiana czasu w kodzie BCD na kod dziesiętny<br />   sekundy = bcd2dec(bufor&#91;ss&#93;);<br />   minuty = bcd2dec(bufor&#91;mm&#93;);<br />   godziny = bcd2dec(bufor&#91;hh&#93;);<br /><br />   // *** Wyświetlanie 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 />   int0_flag = 0;<br /> }<br /> }<br />}<br /><br />// *** Procedura obsługi przerwania od INT0: ***<br />ISR( INT0_vect )<br />{<br />int0_flag = 1;<br />}<br /><br />// konwersja liczby dziesiętnej na BCD<br />uint8_t dec2bcd(uint8_t dec)<br />{<br />return ((dec / 10)&lt;&lt;4) | (dec % 10);<br />}<br />// konwersja liczby BCD na dziesiętną<br />uint8_t bcd2dec(uint8_t bcd)<br />{<br />return ((((bcd) &gt;&gt; 4) &amp; 0x0F) * 10) + ((bcd) &amp; 0x0F);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13833">mateusz251093</a> — 21 mar 2017, o 16:45</p><hr />
]]></content>
</entry>
</feed>