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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-05-16T21:31:51+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=42&amp;t=7080&amp;mode</id>
<entry>
<author><name><![CDATA[barti879]]></name></author>
<updated>2014-05-16T21:31:51+01:00</updated>
<published>2014-05-16T21:31:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81353#p81353</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81353#p81353"/>
<title type="html"><![CDATA[Re: Problem z odczytem sekund z DS1307]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81353#p81353"><![CDATA[
Mogłbyś powiedzieć, jak Ci się to udało? Ja teraz walczę z wersją na sprzętowym TWI ale nadal nic nie wychodzi... Na wyświetlaczu cały czas &quot;84&quot;<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;i2c_twi.h&quot;<br />#include &quot;HD44780.h&quot;<br /><br /><br />#define DS1307_adr 0xD0     //adres DS'a<br /><br />uint8_t bcd2dec(uint8_t bcd); // konwersja BCD do DEC<br />uint8_t dec2bcd(uint8_t dec); // konwersja DEC do BCD<br /><br />int main(void)<br />{<br />i2cSetBitrate(100); // ustawianie prędkości magistrali<br />LCD_Initalize();    // inicjalizacja LCD<br /> <br />uint8_t bufor&#91;1&#93;; // bufor na znaki odebrane z DS'a<br />uint8_t znaki&#91;1&#93;; // bufor na znaki dla LCD<br />uint8_t sekundy;  // zmienna przechowująca aktualną artość sekund odebraną z DS'a<br /><br />    TWI_write_buf(DS1307_adr, 0x00, 1, 0x0000000 ); <br /><br /><br />    while(1)<br />    {<br />TWI_read_buf(DS1307_adr, 0x00, 1, bufor); // odczytanie sekund z DS'a<br />sekundy = bcd2dec(bufor&#91;0&#93;);              // konwersja na DEC i przypisanie wartości zmiennej sekundy<br /><br />   itoa(sekundy, znaki, 10);    // konwersja na znaki dla LCD<br />   <br />   LCD_WriteText(znaki);        // wyświetlenie na LCD<br />   LCD_Home(); <br />    }<br />}<br /><br /><br />uint8_t bcd2dec(uint8_t bcd)<br />{<br />return ((((bcd) &gt;&gt; 4) &amp; 0x0F) * 10) + ((bcd) &amp; 0x0F);<br />}<br /><br />uint8_t dec2bcd(uint8_t dec) <br />{<br />return ((dec / 10)&lt;&lt;4) | (dec % 10);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2099">barti879</a> — 16 maja 2014, o 21:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Atmegowiec]]></name></author>
<updated>2014-05-16T00:08:55+01:00</updated>
<published>2014-05-16T00:08:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81259#p81259</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81259#p81259"/>
<title type="html"><![CDATA[Re: Problem z odczytem sekund z DS1307]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81259#p81259"><![CDATA[
<div class="quotetitle">barti879 napisał(a):</div><div class="quotecontent"><br />Jak na razie nie mam takiej możlwiości, bo korzystam z ATmegi8 i ATtiny2313, które niestety nie mają sprzętowego interfejsu TWI ;/<br /></div><br /><br />mam atmege8, i udało mi sie postawić sprzetowe RTC<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1123">Atmegowiec</a> — 16 maja 2014, o 00:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas_]]></name></author>
<updated>2014-05-15T23:37:46+01:00</updated>
<published>2014-05-15T23:37:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81257#p81257</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81257#p81257"/>
<title type="html"><![CDATA[Re: Problem z odczytem sekund z DS1307]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81257#p81257"><![CDATA[
Kolego, ja ze swojej strony polecam obejrzeć ten poradnik: <!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2013/11/rtc-ds3231-najdokadniejszy-zegarek-na.html" >http://mirekk36.blogspot.com/2013/11/rt ... ek-na.html</a><!-- m -->. Jest tam ładnie pokazane co i jak robić. Razem z inicjalizacja i innymi potrzebnymi rzeczami.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1060">lukas_</a> — 15 maja 2014, o 23:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-05-15T22:35:27+01:00</updated>
<published>2014-05-15T22:35:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81256#p81256</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81256#p81256"/>
<title type="html"><![CDATA[Re: Problem z odczytem sekund z DS1307]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81256#p81256"><![CDATA[
ATmega8 jak najbardziej posiadam sprzętowy moduł TWI<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 15 maja 2014, o 22:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barti879]]></name></author>
<updated>2014-05-15T22:26:04+01:00</updated>
<published>2014-05-15T22:26:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81255#p81255</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81255#p81255"/>
<title type="html"><![CDATA[Re: Problem z odczytem sekund z DS1307]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81255#p81255"><![CDATA[
Jak na razie nie mam takiej możlwiości, bo korzystam z ATmegi8 i ATtiny2313, które niestety nie mają sprzętowego interfejsu TWI ;/<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2099">barti879</a> — 15 maja 2014, o 22:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-05-15T22:19:40+01:00</updated>
<published>2014-05-15T22:19:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81254#p81254</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81254#p81254"/>
<title type="html"><![CDATA[Re: Problem z odczytem sekund z DS1307]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81254#p81254"><![CDATA[
No i tu może jest właśnie jakiś problem. Spróbuj sprzętowo czy się uda. A później przejdź na rozwiązanie programowe.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 15 maja 2014, o 22:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barti879]]></name></author>
<updated>2014-05-15T22:15:35+01:00</updated>
<published>2014-05-15T22:15:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81253#p81253</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81253#p81253"/>
<title type="html"><![CDATA[Re: Problem z odczytem sekund z DS1307]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81253#p81253"><![CDATA[
Zarówno funkcja i2cSetBitrate() jak i TWI_write_byte() są zawarte w bibliotekach dla sprzętowego TWI. Ja używam wersji programowej dlatego nie mogę ich użyć.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2099">barti879</a> — 15 maja 2014, o 22:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Atmegowiec]]></name></author>
<updated>2014-05-15T22:02:45+01:00</updated>
<published>2014-05-15T22:02:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81252#p81252</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81252#p81252"/>
<title type="html"><![CDATA[Re: Problem z odczytem sekund z DS1307]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81252#p81252"><![CDATA[
Po kodzie widac ze nie ustawił chyba. Ustaw prędkość funkcją [syntax=c]i2cSetBitrate(100);[/syntax] przed petlą while.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1123">Atmegowiec</a> — 15 maja 2014, o 22:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-05-15T22:00:48+01:00</updated>
<published>2014-05-15T22:00:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81250#p81250</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81250#p81250"/>
<title type="html"><![CDATA[Re: Problem z odczytem sekund z DS1307]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81250#p81250"><![CDATA[
<div class="quotetitle">gufim napisał(a):</div><div class="quotecontent"><br />Witam jesli moge pomoc to ja robilem inicjalizcje w ten sposob<br /><br />[syntax=c]//************** Inicjalizacja RTC ******************************************************<br />TWI_write_byte(DS1307_ADDR, 0x00, 0b00000000);   // wlaczenie kwarcu w RTC<br />TWI_write_byte(DS1307_ADDR, 0x07, 0b10010000);   // wlaczenie na wyjsciu OUT 1 Hz[/syntax]<br /></div><br /><br />No dokładnie. Ale to się musi zapisać do pamięci.<br />U mnie był problem z uruchomieniem Ds'a bo ustawiłem mu za dużą prędkość magistrali.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 15 maja 2014, o 22:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gufim]]></name></author>
<updated>2014-05-15T21:57:38+01:00</updated>
<published>2014-05-15T21:57:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81249#p81249</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81249#p81249"/>
<title type="html"><![CDATA[Re: Problem z odczytem sekund z DS1307]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81249#p81249"><![CDATA[
Witam jesli moge pomoc to ja robilem inicjalizcje w ten sposob<br /><br />[syntax=c]//************** Inicjalizacja RTC ******************************************************<br />TWI_write_byte(DS1307_ADDR, 0x00, 0b00000000);   // wlaczenie kwarcu w RTC<br />TWI_write_byte(DS1307_ADDR, 0x07, 0b10010000);   // wlaczenie na wyjsciu OUT 1 Hz[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=126">gufim</a> — 15 maja 2014, o 21:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-05-15T21:56:02+01:00</updated>
<published>2014-05-15T21:56:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81248#p81248</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81248#p81248"/>
<title type="html"><![CDATA[Re: Problem z odczytem sekund z DS1307]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81248#p81248"><![CDATA[
Myślę, że problem może wynikać z tego coś jest źle zapisywane do DS'a....<br />Ustawiłeś prędkość magistrali I2C na 100 kHz ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 15 maja 2014, o 21:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barti879]]></name></author>
<updated>2014-05-15T21:53:01+01:00</updated>
<published>2014-05-15T21:53:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81247#p81247</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81247#p81247"/>
<title type="html"><![CDATA[Re: Problem z odczytem sekund z DS1307]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81247#p81247"><![CDATA[
Jeśli nie ma maskowania na wyświetlaczu cały czas jest &quot;165&quot; , a z maskowaniem &quot;85&quot;, więc chyba jednak do bitu 7nie jest wpisywane 0. Dobrze myślę?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2099">barti879</a> — 15 maja 2014, o 21:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-05-15T21:50:01+01:00</updated>
<published>2014-05-15T21:50:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81246#p81246</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81246#p81246"/>
<title type="html"><![CDATA[Re: Problem z odczytem sekund z DS1307]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81246#p81246"><![CDATA[
No końcu ma być zero tzn w bicie 7. Więc przy pracy zegara, odczycie sekund nie ma czego maskować. Bo i tak jest tam zero. Z tej połówki bitu i tak uzyskasz poprawną wartość BCD.<br /><br />Dalej coś jest nie tak ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 15 maja 2014, o 21:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barti879]]></name></author>
<updated>2014-05-15T21:45:32+01:00</updated>
<published>2014-05-15T21:45:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81243#p81243</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81243#p81243"/>
<title type="html"><![CDATA[Re: Problem z odczytem sekund z DS1307]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81243#p81243"><![CDATA[
Oto kod z maskowaniem bitu 7.<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;I2C_SOFT/i2c_soft.h&quot;<br />#include &quot;HD44780.h&quot;<br /><br /><br />#define DS1307_adr 0xD0      //adres DS'a<br /><br /><br />uint8_t bcd2dec(uint8_t bcd); // konwersja BCD do DEC<br />uint8_t dec2bcd(uint8_t dec); // konwersja DEC do BCD<br /><br />int main(void)<br />{<br />i2c_init();       // inicjalizacja magistrali I2C<br />LCD_Initalize();  // inicjalizacja LCD<br /><br />uint8_t bufor&#91;1&#93;; // bufor na znaki odebrane z DS'a<br />uint8_t znaki&#91;1&#93;; // bufor na znaki dla LCD<br />uint8_t sekundy;  // zmienna przechowująca aktualną artość sekund odebraną z DS'a<br /><br />I2C_write_buf(DS1307_adr, 0x00, 1, 0x00); // wyzerowanie całego bajtu 0x00 (tam przechowywane są sekundy)<br /><br /><br />    while(1)<br />    {<br />       I2C_read_buf(DS1307_adr, 0x00, 1, bufor); // odczyt sekund z DS'a<br />   <br />   sekundy = bcd2dec(bufor&#91;0&#93; &amp; 0b01111111); // konwersja odczytanej wartości i wpisanie jej do zmiennej sekundy<br />   itoa(sekundy, znaki, 10);    // konwersja na znaki dla LCD<br />   <br />   LCD_WriteText(znaki);        // wyświetlenie na LCD<br />   LCD_Home(); <br />    }<br />}<br /><br /><br />uint8_t bcd2dec(uint8_t bcd)<br />{<br />return ((((bcd) &gt;&gt; 4) &amp; 0x0F) * 10) + ((bcd) &amp; 0x0F);<br />}<br /><br />uint8_t dec2bcd(uint8_t dec) <br />{<br />return ((dec / 10)&lt;&lt;4) | (dec % 10);<br />}[/syntax]<br /><br /><br />Na wyświetlaczu nic się nie zmienia. W poniższej linii wpisywane jest 0 do calego bajtu, więc oscylator powinien ruszyć.<br />[syntax=c]I2C_write_buf(DS1307_adr, 0x00, 1, 0x00); // wyzerowanie całego bajtu 0x00 (tam przechowywane są sekundy)[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2099">barti879</a> — 15 maja 2014, o 21:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Atmegowiec]]></name></author>
<updated>2014-05-15T21:24:29+01:00</updated>
<published>2014-05-15T21:24:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81239#p81239</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81239#p81239"/>
<title type="html"><![CDATA[Re: Problem z odczytem sekund z DS1307]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81239#p81239"><![CDATA[
Wstaw poprawiony kod.To jest cały plik main.c?<br />Hmm, a to wogole nic sie nie przesuwa?<br />W nocie pisze zeby odblokować zegar trzeba zapisac 0  na własnie ten 7 bit pod adres 0x00.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1123">Atmegowiec</a> — 15 maja 2014, o 21:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barti879]]></name></author>
<updated>2014-05-15T21:09:11+01:00</updated>
<published>2014-05-15T21:09:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81238#p81238</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81238#p81238"/>
<title type="html"><![CDATA[Re: Problem z odczytem sekund z DS1307]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81238#p81238"><![CDATA[
Po zamaskowaniu bitu nr 7 na wyświetlaczu cały czas wyswietlane jest &quot;85&quot;. Nie mam już pojęcia o co z tym chodzi<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2099">barti879</a> — 15 maja 2014, o 21:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Atmegowiec]]></name></author>
<updated>2014-05-15T21:02:11+01:00</updated>
<published>2014-05-15T21:02:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81237#p81237</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81237#p81237"/>
<title type="html"><![CDATA[Re: Problem z odczytem sekund z DS1307]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81237#p81237"><![CDATA[
Czesc, zobaczyłem notę tego układu, i coś mi sie przypomniało..<br />Jak pobierasz sekundy to w lini:[syntax=c]sekundy = bcd2dec(bufor&#91;0&#93;); // konwersja odczytanej wartości i wpisanie jej do zmiennej sekundy[/syntax]<br />spróbuj zamskować  bit 7. <br />[syntax=c]sekundy = bcd2dec(bufor&#91;0&#93; &amp; 0b01111111); // konwersja odczytanej wartości i wpisanie jej do zmiennej sekundy[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1123">Atmegowiec</a> — 15 maja 2014, o 21:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barti879]]></name></author>
<updated>2014-05-15T20:44:26+01:00</updated>
<published>2014-05-15T20:44:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81235#p81235</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81235#p81235"/>
<title type="html"><![CDATA[Problem z odczytem sekund z DS1307]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7080&amp;p=81235#p81235"><![CDATA[
Witam! Aktualnie jestem na etapie przerabiania magistrali I2C z BlueBooka. Nie posiadam PCF'a takiego jak w książce, jednak chciałem odczytać czas z DS1307. Z noty aplikacyjnej dowiedziałem się, że żeby uruchomić oscylator należy wpisać O do bitu nr 7 w rejestrze pod adresem 0x00 ( robię to w mainie, jeszcze przed while). Cały program ma za zadanie odczytywać tylko sekundy (jak na razie), jednak na wyświetlaczu ciągle pojawia się &quot;165&quot;. Biblioteki obsługi I2C są skopiowane z płyty dołączonej do książki, więc tam raczej nie ma żadnych blędów. Czym może być spowodowane takie działanie?<br /><br />Tak prezentuje się kod mojego prostego programu.<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;I2C_SOFT/i2c_soft.h&quot;<br />#include &quot;HD44780.h&quot;<br /><br /><br />#define DS1307_adr 0xD0      //adres DS'a<br /><br /><br />uint8_t bcd2dec(uint8_t bcd); // konwersja BCD do DEC<br />uint8_t dec2bcd(uint8_t dec); // konwersja DEC do BCD<br /><br />int main(void)<br />{<br />i2c_init();       // inicjalizacja magistrali I2C<br />LCD_Initalize();  // inicjalizacja LCD<br /><br />uint8_t bufor&#91;1&#93;; // bufor na znaki odebrane z DS'a<br />uint8_t znaki&#91;1&#93;; // bufor na znaki dla LCD<br />uint8_t sekundy;  // zmienna przechowująca aktualną artość sekund odebraną z DS'a<br /><br />I2C_write_buf(DS1307_adr, 0x00, 1, 0x00); // wyzerowanie całego bajtu 0x00 (tam przechowywane są sekundy)<br /><br /><br />    while(1)<br />    {<br />       I2C_read_buf(DS1307_adr, 0x00, 1, bufor); // odczyt sekund z DS'a<br />   <br />   sekundy = bcd2dec(bufor&#91;0&#93;); // konwersja odczytanej wartości i wpisanie jej do zmiennej sekundy<br />   itoa(sekundy, znaki, 10);    // konwersja na znaki dla LCD<br />   <br />   LCD_WriteText(znaki);        // wyświetlenie na LCD<br />   LCD_Home(); <br />    }<br />}<br /><br /><br />uint8_t bcd2dec(uint8_t bcd)<br />{<br />return ((((bcd) &gt;&gt; 4) &amp; 0x0F) * 10) + ((bcd) &amp; 0x0F);<br />}<br /><br />uint8_t dec2bcd(uint8_t dec) <br />{<br />return ((dec / 10)&lt;&lt;4) | (dec % 10);<br />}[/syntax]<br /><br />Czy ktoś jest w stanie mi pomóc? Z góry bardzo dziękuję <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=2099">barti879</a> — 15 maja 2014, o 20:44</p><hr />
]]></content>
</entry>
</feed>