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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1669&amp;mode</id>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-01-11T19:59:37+01:00</updated>
<published>2013-01-11T19:59:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=24466#p24466</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=24466#p24466"/>
<title type="html"><![CDATA[Re: Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=24466#p24466"><![CDATA[
prawdopodobnie właśnie to wina stykówki .....<br />te i te 10 czasem więcej KHz umyka sobie gdzieś<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 11 sty 2013, o 19:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jan mazur]]></name></author>
<updated>2013-01-11T19:48:35+01:00</updated>
<published>2013-01-11T19:48:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=24459#p24459</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=24459#p24459"/>
<title type="html"><![CDATA[Re: Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=24459#p24459"><![CDATA[
Właśnie widzę na oscyloskopie, że jest 90,3kHz. Brak tych 10kHz raczej nie jest problemem chyba. No ale widzę teraz zmianę, bo układ działa tak jak chcę i rejestry poprawnie konfigurują zegar. Także sygnał na SCL ma kształt prostokąta, a nie jak przedtem piły...<br />Czy sądzisz, że powinienem się martwić tymi 10kHz? Może to wpływ pojemności, gdyż układ jest na razie na płytce stykowej...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=566">jan mazur</a> — 11 sty 2013, o 19:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jan mazur]]></name></author>
<updated>2013-01-11T19:14:50+01:00</updated>
<published>2013-01-11T19:14:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=24451#p24451</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=24451#p24451"/>
<title type="html"><![CDATA[Re: Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=24451#p24451"><![CDATA[
Znalazłem czas na sprawdzenie dlaczego nie działa u mnie to, że ustawiając (nawet na sztywno) rejestry tak, aby częstotliwość I2C wynosiła 100kHz i doszedłem do spostrzeżenia...<br /><br />Ustawiłem rejestry wyznaczające częstotliwość tak (wiem, że nieelegancko ale tylko do testów tak):<br /><br />[syntax=c]TWSR = 0x00;    //  preskaler 1<br />TWBR = 0x48;    //  czyli 72[/syntax]<br />Tak więc z tymi wartościami mamy 100kHz. Teraz metodą LED_ON/LED_OFF (idealny debuger <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ) sprawdzałem jak idzie program, który zaczyna się tak:<br /><br />[syntax=c]while(1) {<br />LED_ON;    //  DEBUG_LED_ON<br />    TWI_read_buf( PCF8583_ADDR, 0x01, 4, bufor );<br />    sekundy = bcd2dec( bufor[ss] );<br />    minuty = bcd2dec( bufor[mm] );<br />...[/syntax]<br />dalej wchodząc do funkcji:<br /><br />[syntax=c]TWI_read_buf( PCF8583_ADDR, 0x01, 4, bufor );[/syntax]<br />zauważyłem, że program nie wychodzi z tamtejszej pętli <em>while()</em>:<br /><br />[syntax=c]void TWI_read_buf(uint8_t SLA, uint8_t adr, uint8_t len, uint8_t *buf) {<br />    TWI_start();<br />    TWI_write(SLA);<br />    TWI_write(adr);<br />    TWI_start();<br />    TWI_write(SLA + 1);<br />LED_OFF;    //  DEBUG_LED_OFF<br />    while (len--) *buf++ = TWI_read( len ? ACK : NACK );<br />LED_ON;    //  DEBUG_LED_ON<br />    TWI_stop();<br />}[/syntax]<br />gdyż DEBUG_LED się nie zapala. Tak więc wszedłem do <em>TWI_read()</em> i wyszło, że tam program zatrzymuje się na tamtejszej pętli <em>while()</em>, która sprawdza ustawienie bitu <strong>TWINT</strong>.<br /><br />[syntax=c]uint8_t TWI_read(uint8_t ack) {<br />    TWCR = (1&lt;&lt;TWINT)|(ack&lt;&lt;TWEA)|(1&lt;&lt;TWEN);<br />LED_ON;    //  DEBUG_LED_ON<br />    while ( !(TWCR &amp; (1&lt;&lt;TWINT)));<br />LED_OFF;    //  DEBUG_LED_OFF<br />    return TWDR;<br />}[/syntax]<br />Uprzednio zgaszona dioda się zapala ale już nie gaśnie, czyli <em>LED_OFF;</em> się nie wykonuje<br />Widać, że ten bit się nie ustawia czyli program stoi w tym miejscu i nie idzie dalej.<br /><br />Jest to bardzo dziwne gdyż np. dla ustawień:<br /><br />[syntax=c]TWSR = 0x03;    //  preskaler 64<br />TWBR = 0x02;[/syntax]<br />nie ma problemu, jednak zmierzona oscyloskopem częstotliwość SCL miała wartość około 55kHz, czyli mniej więcej tyle ile z obliczeń.<br /><br />Z tego co wiem, niby mam poprawnie ustawione fuse bity w procesorze (ATmega8), kwarc 16MHz, rezystory SCL, SDA po 4,7kOhm... niby wszystko jest OK ale i tak chyba błąd jest sprzętowy, tylko teraz pytanie gdzie <img src="https://forum.atnel.pl/images/smilies/icon_neutral.gif" alt=":|" title="Średnio zadowolony" /><br /><br />---------------------------------------------------------<br /><span style="color: #FF0000">Już odkryłem co było nie tak!</span><br />Kolejnym narzędziem, które jest idealne do rozwiązywania problemów warstwy fizycznej jest... lupa.<br />Okazało się, że rezystory podciągające nie mają wartości 4k7 ale 470k. Przez omyłkę takie wlutowałem...<br /><span style="color: #0080FF">Zamiana na 4k7 pomogła, no ale debuger z diody led sporo mi pomógł <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /></span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=566">jan mazur</a> — 11 sty 2013, o 19:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-12-21T17:31:20+01:00</updated>
<published>2012-12-21T17:31:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21797#p21797</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21797#p21797"/>
<title type="html"><![CDATA[Re: Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21797#p21797"><![CDATA[
<div class="quotetitle">jan mazur napisał(a):</div><div class="quotecontent"><br />... i mam nadzieję, że nie będzie rozwlekły lecz konkretny <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /></div><br /><br />przykro mi tego nie mogę zapewnić <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> ... część ludzi narzeka że tworzę rozwlekłe poradniki właśnie - dlatego skoro pytanie/wątpliwość podana dużo wcześniej - przed poradnikiem - to wolę uprzedzić, żeby potem nie dostawać maili, że albo niewyraźnie mówię, albo źle po angielsku mówię, albo że nie mówi się &quot;se&quot; tylko &quot;sobie&quot; albo że nie mówi się &quot;włanczam&quot; tylko &quot;włączam&quot; ..... sorki ale takie maile - już mnie troszkę irytują - bo piszą ludzie zwykle na początku z takim dopiskiem. Ja życzliwie chciałem zwrócić uwagę że nie mówi się tak tylko tak. A tymczasem z uwagi na to że niezbyt wyraźnie mówię to źle słyszą <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i koło się zamyka.<br /><br />reasumując jeśli ktoś nie lubi poradników z takimi przypadłościami to ...<br /><br /> ....zawsze jest na to rada - a w zasadzie trzy rady <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />1. taki czerwony klawisz z krzyżykiem na górze okienka z przeglądarką - można zamknąć okno i nie oglądać dalej <br /><br />2. można w ogóle nie oglądać moich poradników jak już się z góry wie że są rozwlekłe - nawet nie włączać YT<br /><br />3. można wreszcie samemu nakręcić poradnik - ale taki który:<br />   a.) nie będzie rozwlekły<br />   b.) osoba mówiąca będzie wspaniały lektorem z idealną dykcją i wymową<br />   c.) prowadzący będzie wyśmienicie wypowiadał słowa angielskojęzyczne<br /><br /><br />tylko tyle w tym w temacie mogę niestety poradzić. Więc jeśli kolega (wcale nie mówię tego złośliwie) nie cierpi rozwlekłych poradników - to chyba jednak pozostanie tylko druga książka. A jeśli nie trafiam ze swoim przekazem to pewnie inna książka - w końcu nie tylko ja się takimi rzeczami zajmuję na tym bożym świecie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Nadmienię - jakby ktoś jeszcze inny spodziewał się lektora z telewizji typu np sławny JAN SUZIN - to te moje poradniki są bezpłatne - a w przeciwnym przypadku - byłyby słono płatne - choć pewnie mniej rozwlekłe <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />przy okazji już życzę wesołych świąt <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 gru 2012, o 17:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jan mazur]]></name></author>
<updated>2012-12-21T16:06:26+01:00</updated>
<published>2012-12-21T16:06:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21789#p21789</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21789#p21789"/>
<title type="html"><![CDATA[Re: Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21789#p21789"><![CDATA[
...no to czekam (jak pewnie inni) i mam nadzieję, że nie będzie rozwlekły lecz konkretny <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=566">jan mazur</a> — 21 gru 2012, o 16:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-12-21T14:44:33+01:00</updated>
<published>2012-12-21T14:44:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21784#p21784</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21784#p21784"/>
<title type="html"><![CDATA[Re: Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21784#p21784"><![CDATA[
<div class="quotetitle">jan mazur napisał(a):</div><div class="quotecontent"><br /><em>edit</em>: kiedy będzie te VIDEO o EVENT? <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br /><br />właśnie się smaży i gotuje. Będzie na pewno na wigilię jako 14-ta potrawa <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />mam nadzieję że zdążę <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 gru 2012, o 14:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jan mazur]]></name></author>
<updated>2012-12-21T13:51:09+01:00</updated>
<published>2012-12-21T13:51:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21780#p21780</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21780#p21780"/>
<title type="html"><![CDATA[Re: Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21780#p21780"><![CDATA[
Tak więc dla mnie też jest to zastanawiające, bo wiem że nie pasuje TWBR = 2, gdyż powinno być TWBR = 1. Jednak dla tej wartości układ nie wysyłał na UART żadnych danych od RTC. Po zmianie na '2' zadziałało.<br />Mój 'pseudo kod' z TWSR = 0 i TWBR = 18 był przykładem gdyż pisałem to z pamięci, jednak chciałem zaznaczyć, że mimo iż obliczyłem poprawne wartości i ustawiłem poprawnie rejestry układ nie wysyłał danych. Dopiero metodą &quot;Macajewa&quot; <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> udało mi się uzyskać poprzwne przesłanie danych.<br />Jeśli chodzi o rezystory to są dwa 4,7k...<br /><br />Rozumiem doskonale, że pisanie &quot;na szybko&quot; czegoś nie jest dobre, jednak w tym momencie chciałem zobaczyć czy ten układ w ogóle zadziała, oczywiście poprawię to, bo wiadomo że tak nie może zostać <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> no i muszę sprawdzić dlaczego niby poprawne ustawienie rejestrów daje nieoczekiwane rezultaty, bo rzeczywiścię Twój kod na i2cSetBitrate() jest OK ale u mnie nieststey nie zadziałał i to było bardzo zastanawiające.<br /><br />Jesli chodzi i EVENT'y to nie używałem ale już nie mogę się doczekać kiedy to poznam i będę stosował.<br /><br /><em>edit</em>: kiedy będzie te VIDEO o EVENT? <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=566">jan mazur</a> — 21 gru 2012, o 13:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-12-21T10:47:25+01:00</updated>
<published>2012-12-21T10:47:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21755#p21755</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21755#p21755"/>
<title type="html"><![CDATA[Re: Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21755#p21755"><![CDATA[
<div class="quotetitle">jan mazur napisał(a):</div><div class="quotecontent"><br />no właśnie to nie działa u mnie. Sprawdzałem na poczatku i program zatrzymuje się w miejscu, o którym pisałem na początku. Ogólnie zauważyłem, że układ RTC albo jest mega czuły na częstotliwość transmisji TWI albo &quot;coś nie tak z konfiguracją&quot;. U mnie zadziałało dopiero czy ustawiłem na sztywno, jak w poprzednim poście, bity TWSR i TWBR. Zauważyłem, że mimo poprawnych obliczeń i ustawień nie zadziałało coś w stylu:<br /><br />[syntax=c]//pseudo kod<br />void i2cBitrate(void) {<br />    TWSR = 0;<br />    TWBR = 18;<br />}[/syntax]<br />Jedynie to dało pozytywny rezultat:<br /><br />[syntax=c]void i2cBitrate(void) {<br />    TWSR |= (1&lt;&lt;TWPS1) | (1&lt;&lt;TWPS0);<br />    TWBR = 2;<br />}[/syntax]<br />Jakoś nie miałem chwili, aby się nad tym zastanawiać <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br /><br />No ale widzisz - czasem jednak warto się pozastanawiać nad takimi rzeczami, że tak powiem. Dlatego że w ten sposób nie rozwiązałeś problemu a go obszedłeś &quot;jakoś&quot; bokiem. Nie traktuj mojej wypowiedzi jako czepiania się - bo sam się wręcz zastanawiam co się tam u ciebie dzieje <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i rzuć okiem sobie na wzór z noty PDF:<br /><br /><img src="http://forum.atnel.pl/_obrazki/o/54_0f98b8f1c4959ce3b53a6de1771e070a.jpg" alt="Obrazek" /><br /><br />podstawiając do niego wartości z twoich ustawień wynikałoby, że w przypadku twojej pierwszej próby <br /><br />[syntax=c]//pseudo kod<br />void i2cBitrate(void) {<br />    TWSR = 0;<br />    TWBR = 18;<br />}[/syntax]<br /><br />chociaż zastanawiam się skąd to wziąłeś - częstotliwość I2C wyszłaby = 307,692 kHz - więc nie dziwne że standardowy układ pracujący na 100 kHz nie ruszy. No to weźmy twój drugi &quot;ręczny&quot; kod:<br /><br />[syntax=c]void i2cBitrate(void) {<br />    TWSR |= (1&lt;&lt;TWPS1) | (1&lt;&lt;TWPS0);<br />    TWBR = 2;<br />}[/syntax]<br /><br />ile teraz na wyjdzie częstotliwość I2C - policzmy wg wzoru - będzie dokładnie = 58,823 kHz<br /><br />toż to praktycznie połowa 100 kHz ! więc nie jest dziwne że działa - ale jak może nie działać ta funkcja?<br /><br />[syntax=c]void i2cSetBitrate(uint16_t bitrateKHz) {<br />        uint8_t bitrate_div;<br /> <br />        bitrate_div = ((F_CPU/1000l)/bitrateKHz);<br />        if(bitrate_div &gt;= 16)<br />                bitrate_div = (bitrate_div-16)/2;<br /> <br />        TWBR = bitrate_div;<br />}[/syntax]<br /><br />Policzmy dokładnie wg niej, po kolei:<br /><br />16000000 / 1000 / 100 = 160 i dalej ponieważ bitrate_div &gt;= 16 mamy: (160-16)/2 = 72<br /><br />więc sprawdźmy jeszcze raz wzór przedstawiony wyżej z wyliczoną wartością TWBR=72 i TWPS=0<br /><br />16000000/ 16 + 2(72) * 1 = 100 kHz (jak w mordkę strzelił)<br /><br />A nie spotkałem się z układami szczególnie obecnymi, które działałyby z częstotliwościami taktowania I2C mniejszymi niż 100 kHz. Powiem więcej one zwykle działają nawet i na 200 albo nawet na 250 kHz .... dopiero przy 300 - 400 kHz wymiekają. Więc jeśli już można byłoby mówić że mój układ jest czuły na częstotliwość I2C to w zakresach pomiędzy 150-250kHz czyli sporo większych niż dopuszczalny przez producenta.<br /><br />Jeśli jednak nie działało ci z tą funkcją na 100kHz czyli:<br /><br />i2cBitrate( 100 );<br /><br />to co za problem było sprawdzić mniejszej prędkości pisząc tak:<br /><br />i2cBitrate( 50 );<br /><br />przecież uzyskałbyś ten sam efekt co ręcznego grzebania w bitach TWBR i TWPS .... hmmm to jest właśnie to o czym m.in będzie w najbliższym poradniku VIDEO który zamieszczę. Nie o I2C ale o tym, że warto RAZ poświęcić się i zrobić sobie porządne funkcje czy biblioteki, które będą działały zawsze a później już nie musieć do nich zaglądać i zawracać sobie głowy nawet jak działają w szczegółach, niż tak jak ty tu prezentujesz - za każdym podejściem w programie do I2C od nowa rozważać &quot;na randoma&quot; (jak mawia mój syn) <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... czy lepiej użyć taką wartość TWPS i TWBR czy inną. Na prawdę warto tak podchodzić do programowania - a nie omijać problemy bokiem ok ? - to taka porada - a nie żadna kąśliwość żebyś mnie źle nie zrozumiał.<br /><br />aha - a jeśli ci RTC działa źle na 100kHz to weź sprawdź albo powiedz jakie rezystory masz w podciąganiu linii SDA i SCL bo jakoś o nich w ogóle nie napisałeś - już bałem się zapytać - ale zapytam (wybacz) czy je w ogóle masz ? Bo bez nich to co opisujesz to typowy objaw - że spada drastycznie prędkość I2C bo na wewnętrznych (za dużych) rezystorach podciągających zbocza drastycznie się wygładzają. <br /><br /><br /><div class="quotetitle">jan mazur napisał(a):</div><div class="quotecontent"><br />czas spędziłem na &quot;zmaganiach&quot; nad parsowaniem stringu na wejściu UART. Podobno jest to opsane w Twojej drugiej książce Mirek. Narazie zastanowię się nad własnym rozwiązanie, a jak wymięknę to zasięgnę do Twego <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Pewnie masz to napisane w jednej linijce <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br /><br />Oj to byś się zdziwił - nie w jednej linijce - ale z użyciem przede wszystkim zdarzeń (EVENTS) .... wiesz jak się tego używa ? jeśli nie to również zapraszam do najbliższego poradnika VIDEO - bo zobaczysz akurat właśnie przykłady na temat korzystania z EVENT'sów <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i jaka miodność z tego płynie dla użytkownika<br /><br />a o jednej linijce zapomnij - jest ich i to dość sporo - ale warto - na prawdę warto (znowu) RAZ A DOBRZE to rozwiązać<br /><br />bo później można w swoim kodzie szaleć <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i może być wtedy właśnie tak że używa się po jednej linijce kodu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 21 gru 2012, o 10:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jan mazur]]></name></author>
<updated>2012-12-21T07:47:29+01:00</updated>
<published>2012-12-21T07:47:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21752#p21752</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21752#p21752"/>
<title type="html"><![CDATA[Re: Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21752#p21752"><![CDATA[
...piszesz o tym?<br /><br />[syntax=c]void i2cSetBitrate(uint16_t bitrateKHz) {<br />        uint8_t bitrate_div;<br /><br />        bitrate_div = ((F_CPU/1000l)/bitrateKHz);<br />        if(bitrate_div &gt;= 16)<br />                bitrate_div = (bitrate_div-16)/2;<br /><br />        TWBR = bitrate_div;<br />}[/syntax]<br /><br />no właśnie to nie działa u mnie. Sprawdzałem na poczatku i program zatrzymuje się w miejscu, o którym pisałem na początku. Ogólnie zauważyłem, że układ RTC albo jest mega czuły na częstotliwość transmisji TWI albo &quot;coś nie tak z konfiguracją&quot;. U mnie zadziałało dopiero czy ustawiłem na sztywno, jak w poprzednim poście, bity TWSR i TWBR. Zauważyłem, że mimo poprawnych obliczeń i ustawień nie zadziałało coś w stylu:<br /><br />[syntax=c]//pseudo kod<br />void i2cBitrate(void) {<br />    TWSR = 0;<br />    TWBR = 18;<br />}[/syntax]<br />Jedynie to dało pozytywny rezultat:<br /><br />[syntax=c]void i2cBitrate(void) {<br />    TWSR |= (1&lt;&lt;TWPS1) | (1&lt;&lt;TWPS0);<br />    TWBR = 2;<br />}[/syntax]<br />Jakoś nie miałem chwili, aby się nad tym zastanawiać <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> czas spędziłem na &quot;zmaganiach&quot; nad parsowaniem stringu na wejściu UART. Podobno jest to opsane w Twojej drugiej książce Mirek. Narazie zastanowię się nad własnym rozwiązanie, a jak wymięknę to zasięgnę do Twego <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Pewnie masz to napisane w jednej linijce <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=566">jan mazur</a> — 21 gru 2012, o 07:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-12-20T18:24:11+01:00</updated>
<published>2012-12-20T18:24:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21722#p21722</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21722#p21722"/>
<title type="html"><![CDATA[Re: Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21722#p21722"><![CDATA[
<div class="quotetitle">jan mazur napisał(a):</div><div class="quotecontent"><br />...na szczęście potrafię czasem się oderwać i idę poćwiczyć <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> no ale wracając do tematu widzę, że ustawienie TWBR i TWSR pomogło. Ogólnie z obliczeń wyszło mi, że musi być tam wartość 2(d) przy &quot;Prescaler Value&quot; = 64, tak więc:<br /><br />[syntax=c]void i2cBitrate(void) {<br />    TWSR |= (1&lt;&lt;TWPS1) | (1&lt;&lt;TWPS0);<br />    TWBR = 2;<br />}[/syntax]<br />pomogło.<br /><br />Miłego Wieczoru <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br /><br />A możesz sobie zajrzeć do uaktualnienia lekcji 08_TWI ??? tutaj:<br /><br /><!-- m --><a class="postlink" href="http://atnel.pl/uaktualnienia-programow-do-dvd.html" >http://atnel.pl/uaktualnienia-programow-do-dvd.html</a><!-- m --><br /><br />przecież masz piękną funkcję i2cBitrate - którą można pięknie z parametrem wywoływać <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> — 20 gru 2012, o 18:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jan mazur]]></name></author>
<updated>2012-12-20T16:49:43+01:00</updated>
<published>2012-12-20T16:49:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21716#p21716</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21716#p21716"/>
<title type="html"><![CDATA[Re: Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21716#p21716"><![CDATA[
...na szczęście potrafię czasem się oderwać i idę poćwiczyć <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> no ale wracając do tematu widzę, że ustawienie TWBR i TWSR pomogło. Ogólnie z obliczeń wyszło mi, że musi być tam wartość 2(d) przy &quot;Prescaler Value&quot; = 64, tak więc:<br /><br />[syntax=c]void i2cBitrate(void) {<br />    TWSR |= (1&lt;&lt;TWPS1) | (1&lt;&lt;TWPS0);<br />    TWBR = 2;<br />}[/syntax]<br />pomogło.<br /><br />Miłego Wieczoru <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=566">jan mazur</a> — 20 gru 2012, o 16:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-12-20T11:41:59+01:00</updated>
<published>2012-12-20T11:41:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21698#p21698</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21698#p21698"/>
<title type="html"><![CDATA[Re: Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21698#p21698"><![CDATA[
<div class="quotetitle">jan mazur napisał(a):</div><div class="quotecontent"><br />Tak w ogóle to mi się śnił ten cały kod i jakieś poprawki w nim <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> za dużo siedzę przed kodem chyba...<br /></div><br /><br />No no to już poważne objawy uzależnienia <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... trudno - trzeba się z tym nauczyć jakoś żyć <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... ja też tak mam i lekarze mówią że nie da się tego zoperować.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 20 gru 2012, o 11:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jan mazur]]></name></author>
<updated>2012-12-20T09:14:22+01:00</updated>
<published>2012-12-20T09:14:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21686#p21686</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21686#p21686"/>
<title type="html"><![CDATA[Re: Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21686#p21686"><![CDATA[
hey Mirek <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> spokojnie, ja się w ogóle nie zdenerwowałem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ...ale rozumiem, też tak czasem mam, że jak czytam coś co ktoś napisze (przeważnie moja druga połówla <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> ) i od razu myślę, że się ta druga strona o coś się denerwuje. Jednak doszedłem do wniosku, że to wszystko zależy od tego jak się samemu odbiera to co napisane i ...w jakim się jest nastroju. Tak to jest ze słowem pisanym - raczej nie da się na 100% przekazać emocji.<br />Tak więc nie przejmuj się mną <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> dziś ustawię ten Bit Rate i mam nadzieję, że to pomoże. Tak w ogóle to mi się śnił ten cały kod i jakieś poprawki w nim <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> za dużo siedzę przed kodem chyba...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=566">jan mazur</a> — 20 gru 2012, o 09:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-12-19T21:18:20+01:00</updated>
<published>2012-12-19T21:18:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21663#p21663</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21663#p21663"/>
<title type="html"><![CDATA[Re: Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21663#p21663"><![CDATA[
Gdybyś miał taktowanie 8MHz to akurat zadziałałoby ci to nawet bez i2cSetBitrate(), tak całkiem przypadkowo. Ale dla większych częstotliwości taktowania już KONIECZNIE trzeba ustawiać prędkość na I2C.<br /><br />100kHz to akurat standard i wszystkie scalaki I2C muszą go obsługiwać - a ty przy taktowaniu 16MHz wręcz jak mówię MUSISZ to ustawić inaczej będą klopsy.<br /><br />A nie denerwuj się że pytam o sprzęt bo skąd ja mogę wiedzieć kto jest po drugiej stronie ??? no toż z opisu to nie wynika i nie wiem np czy znasz się na elektronice czy nie ? no skąd mogę wiedzieć <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> .... Więc czemu się niektórzy zaraz urażają gdy pytam o podstawowe rzeczy albo zarzucają mi że ja im zarzucam niewiedzę jakąś ??? nie rozumiem<br /><br />a przecież wystarczy że np nie dasz rezystorów podciągających linie SDA i SCL i już może ci się DOKŁADNIE w ten sposób transmisja wieszać - Nawet pewnie nie zdajesz sobie sprawy ile już setek razy to samo podpowiedziałem na dokładnie takie samo pytanie. Więc nieraz już lecę z automatu.<br /><br />Reasumując - im mniej informacji w pytaniu tym bardziej proszę mi wybaczyć jeśli zadaję w drugą stronę może dla ciebie banalne pytania ok ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 19 gru 2012, o 21:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jan mazur]]></name></author>
<updated>2012-12-19T19:48:30+01:00</updated>
<published>2012-12-19T19:48:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21652#p21652</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21652#p21652"/>
<title type="html"><![CDATA[Re: Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21652#p21652"><![CDATA[
mirekk36 --&gt; sprzęt to procesor ATMEGA8 z kwarcem 16MHz. Jeśli chodzi o połączenia fizyczne są w porządku. Tak więc tą warstwą bym się nie przejmował.<br /><br />PCF8583 ************* ATMEGA8<br /><br />P5 (SDA) ----------- PC4<br />P6 (SCA) ----------- PC5<br />P7 (/INT) ---------- PD2<br /><br />Reszta zgodnie z aplikacją PDF.<br /><br />Właśnie teraz się zastanawiam nad funkcją <strong>i2cSetBitrate()</strong>. Czy aby jej wywołanie w postaci <em>i2cSetBitrate(100)</em> dla mojej częstotliwości 16MHz jest poprawne...<br /><br />P.S. proszę wybaczyć, że nie zaznaczyłem składni kodu w moim poście <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=566">jan mazur</a> — 19 gru 2012, o 19:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-12-19T19:32:21+01:00</updated>
<published>2012-12-19T19:32:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21647#p21647</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21647#p21647"/>
<title type="html"><![CDATA[Re: Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21647#p21647"><![CDATA[
jan mazur --&gt; a może przy takiej okazji takim pytaniu zawsze warto napisać na czym ty to testujesz jeśli chodzi o sprzęt ??? to jest elektronika a nie programowanie na PC , gdzie każdy ma taką samą elektronikę pod maską <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />Pokaż schemat - opisz itp - bo równie dobrze mogłeś babola tu zrobić .... rozumiesz ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 19 gru 2012, o 19:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jan mazur]]></name></author>
<updated>2012-12-19T19:11:18+01:00</updated>
<published>2012-12-19T19:11:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21645#p21645</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21645#p21645"/>
<title type="html"><![CDATA[Re: Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=21645#p21645"><![CDATA[
...ja dołączę się do tego postu, bo problem lekko pokrywa się z moim. Mianowicie kod poniższy się zatrzymuje na <strong>TWI_read_buf()</strong>:<br /><br />[syntax=c]<br />...<br />#define PCF8583_ADDR 0xA0<br />...<br /><br />while(1) {<br /><br />        if ( int0_flag ) {<br /><br />         uart_puts(&quot;int0_flag ustawiona&quot;);<br /><br />            TWI_read_buf( PCF8583_ADDR, 0x01, 4, bufor );<br /><br />            uart_puts(&quot;po odczycie...&quot;);<br /><br />            sekundy = bcd2dec( bufor[ss] );<br />            minuty = bcd2dec( bufor[mm] );<br />            godziny = bcd2dec( bufor[hh] );<br /><br />            if( godziny &lt; 10 ) uart_puts(&quot;0&quot;);<br />            <br />            uart_putint(godziny,10);<br />            uart_puts(&quot;:&quot;);<br />            if( minuty &lt; 10 ) uart_puts(&quot;0&quot;);<br />            <br />            uart_putint(minuty,10);<br />            uart_puts(&quot;:&quot;);<br />            if( sekundy &lt; 10 ) uart_puts(&quot;0&quot;);<br />            uart_putint(sekundy,10);<br /><br />            int0_flag=0;<br />        }<br /><br /> } [/syntax]<br /><br />&quot;Debuger LED&quot; wskazuje poprawne przerwanie, napis &quot;int0_flag ustawiona&quot; pokazuje się w konsoli jednak kolejny - &quot;po odczycie...&quot; już nie.<br />Przeszukałem wszelakie możliwe miejsca występowania problemu, począwszy od warstwy fizycznej i nie widzę błędów. Program kompiluje się poprawnie, nie ma ostrzeżeń itp.<br /><br />Mogę jakoś inaczej sprawdzić czy ta funkcja <em>TWI_read_buf()</em> się wykonała/wykonuje?<br /><br />Dziękuję!<br /><br /><br /><span style="color: #FF0000">Kody w C zamieszczamy przy pomocy [syntax=c] - Zielony J.</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=566">jan mazur</a> — 19 gru 2012, o 19:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kiclaw]]></name></author>
<updated>2012-10-19T12:55:39+01:00</updated>
<published>2012-10-19T12:55:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=17092#p17092</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=17092#p17092"/>
<title type="html"><![CDATA[Re: Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=17092#p17092"><![CDATA[
Witam ponownie.<br /><br />Przyczyna okazała się tak kuriozalnie prosta, że aż mi wstyd.<br /><br />Otóż, jak wszyscy wiecie, układy scalone numeruje się od lewej do prawej, potem do góry i od prawej do lewej. Nie mam bladego pojęcia dlaczego tak zrobiłem, ale &quot;górną&quot; część PCF-a numerowałem od lewej do prawej. Więc piny od 5 do 8 były zamienione miejscami. Nie wiem co to za pomroczność mnie dopadła bo nigdy takiego czegoś nie odwaliłem, a mając przed oczami datasheet PCF8583 gdzie jest rysunek układu, nie dostrzegłem tego. <br /><br />Oczywiście gdy podłączyłem PCF-a jak należy, zegarek działa poprawnie.<br /><br />No cóż... dziękuję wszystkim którzy próbowali pomóc <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=600">kiclaw</a> — 19 paź 2012, o 12:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-10-18T20:41:57+01:00</updated>
<published>2012-10-18T20:41:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=17045#p17045</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=17045#p17045"/>
<title type="html"><![CDATA[Re: Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=17045#p17045"><![CDATA[
Dokładnie - polecam zacząć sprawdzać wszystko naszym &quot;debugerem&quot; jedno-diodowym LED <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />na początek podłączamy się do wyjścia INT układu RTC - katodą do pinu a anodę przez rezystor do VCC (MUSI migać co sekundę <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />potem łączymy ten pin do wejścia INT procka i znowu na tym pinie sprawdzamy diodą LED czy miga ..... jeśli nie to może kabelek nie łączy ?<br /><br />a jeśli tak - to dalej już programowo korzystamy po kolei z debugera LED, czyli w przerwaniu zmieniamy stan diody LED podłączonej do jakiegoś pinu procesora na przeciwny aby sprawdzić czy przerwanie działa itd itd itd<br /><br />no taka procedura jest już chyba z 5 razy opisana na tym forum, warto je troszkę też poprzeglądać pod tym kątem<br /><br />.... więc czekamy na info - co wyniknie z tych testów <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> — 18 paź 2012, o 20:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Piotrek_P]]></name></author>
<updated>2012-10-18T20:35:58+01:00</updated>
<published>2012-10-18T20:35:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=17044#p17044</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=17044#p17044"/>
<title type="html"><![CDATA[Re: Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=17044#p17044"><![CDATA[
Dokładnie jak kolega wyżej pisze. Przy prawidłowym podłączeniu i (sprawnym), PCF powinien dawać oznaki życia na nodze INT. Na szybko podłączyłem się do PCFki żeby sprawdzić (choć z niej nie korzystam) i pięknie miga LEDem co 1s.<br />Nawet nie trzeba żadnych programów pisać żeby hardware sprawdzić <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=290">Piotrek_P</a> — 18 paź 2012, o 20:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xamrex]]></name></author>
<updated>2012-10-18T20:12:39+01:00</updated>
<published>2012-10-18T20:12:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=17042#p17042</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=17042#p17042"/>
<title type="html"><![CDATA[Re: Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=17042#p17042"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Gdy mierze napięcie na INT to mam cały czas stałą wartość napięcia czyli nie ma przerwania.<br /></div><br />Sprawny RTC powinien generować tam sygnał co 1sek.<br />Wygląda, że coś jest niesprawny (aż nie chce mi się wierzyć)<br />Na pewno jest wszystko dobrze podłączone?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=74">xamrex</a> — 18 paź 2012, o 20:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kiclaw]]></name></author>
<updated>2012-10-18T19:30:47+01:00</updated>
<published>2012-10-18T19:30:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=17040#p17040</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=17040#p17040"/>
<title type="html"><![CDATA[Obsługa magistrali I2C na Atmega32 - Nie działa RTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1669&amp;p=17040#p17040"><![CDATA[
Witam<br /><br />Otóż robię od 2 dni przykład z niebieskiej książki &quot;Mikrokontrolery AVR  Podstawy programowania&quot;<br /><br />No i napotkałem na taki problem którego nijak przeskoczyć nie umiem, więc postanowiłem opisać go tutaj <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Chodzi dokładnie o podrozdział RTC- sprzętowa obsługa I2C<br /><br />A więc, podłączyłem układ jak na schemacie w książce, jako RTC służy mi PCF8583P (od NXP), kondensator do rezonatora 32.768kHz to 33pF--Vcc. Reszta dokładnie jak na schemacie.<br /><br />Problem polega na tym że gdy wgram wsad do uC, to na LCD pojawia mi się tylko string &quot;start...&quot;, i to wszystko.<br />Gdy mierze napięcie na INT to mam cały czas stałą wartość napięcia czyli nie ma przerwania.<br /><br />Nie za bardzo wiem co z tym fantem zrobić. Poniżej kod który wrzucam do procka. Zmieniłem tylko PCF8583_ADDR na 0xA0 ponieważ A0 jest podłączony do GND (sygnalizuje to, bo w książce była literówka i przy A0 do GND w kodzie był adres 0xA2)<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 /><br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;I2C_TWI/i2c_twi.h&quot;<br /><br />#define PCF8583_ADDR 0xA0<br /><br />typedef unsigned char  u08;<br />typedef unsigned short u16;<br /><br />// konwersja liczby dziesiętnej na BCD<br />uint8_t dec2bcd(uint8_t dec);<br />// konwersja liczby BCD na dziesiętną<br />uint8_t bcd2dec(uint8_t bcd);<br /><br />volatile uint8_t int0_flag=1;<br /><br /><br /><br />int main()<br />{<br />// Przerwanie 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 />// definiujemy sobie dla polepszenia czytelności programu typ wyliczeniowy<br />// wskazujący nam później na odpowiednie indeksy w tablicy (buforze)<br />enum {ss=1, mm, hh};<br />uint8_t bufor[4];// rezerwacja bufora 4 bajty<br />uint8_t sekundy, minuty, godziny;<br /><br />lcd_init();<br /><br />i2cSetBitrate(100);<br /><br />sei();<br /><br />lcd_locate(0,2);<br />lcd_str_P(PSTR(&quot;start...&quot;));<br /><br />bufor[0] = 0;// setne części sekundy<br />bufor[1] = dec2bcd(27);// sekundy<br />bufor[2] = dec2bcd(34);// minuty<br />bufor[3] = dec2bcd(18);// godziny<br />// zapis 4 bajtów z bufora pod adres 0x01 w pamięci RAM naszego RTC<br />TWI_write_buf( PCF8583_ADDR, 0x01, 4, bufor );<br /><br />while(1)<br />{<br />if ( int0_flag )<br />{<br />TWI_read_buf( PCF8583_ADDR, 0x01, 4, bufor );<br /><br />sekundy = bcd2dec( bufor[ss] );<br />minuty = bcd2dec( bufor[mm] );<br />godziny = bcd2dec( bufor[hh] );<br />lcd_locate(1,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 />}//klamra do main<br /><br />ISR( INT0_vect ) {<br />int0_flag = 1;<br />}<br /><br />// konwersja liczby dziesiętnej na BCD<br />uint8_t dec2bcd(uint8_t dec) {<br />return ((dec / 10)&lt;&lt;4) | (dec % 10);<br />}<br /><br />// konwersja liczby BCD na dziesiętną<br />uint8_t bcd2dec(uint8_t bcd) {<br />    return ((((bcd) &gt;&gt; 4) &amp; 0x0F) * 10) + ((bcd) &amp; 0x0F);<br />}[/syntax]<br /><br />Nie wiem w którym miejscu popełniam błąd, więc proszę zgromadzonych tu użytkowników o pomoc <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=600">kiclaw</a> — 18 paź 2012, o 19:30</p><hr />
]]></content>
</entry>
</feed>