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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-06-05T18:37:33+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=3257&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-06-05T18:37:33+01:00</updated>
<published>2013-06-05T18:37:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38590#p38590</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38590#p38590"/>
<title type="html"><![CDATA[Re: RTC Atmega32 problem z odświeżaniem czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38590#p38590"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Czy ma ktoś może jakieś pomysły co może być nie tak?<br /></div><br /><br />przede wszystkim to twój program stoi do góry nogami .... skąd ty wymyśliłeś żeby definicje funkcji powrzucać do pliku i2c.h ??? to jest masakra <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> ... masz przecież przykłady działające na DVD, a w książce opis o podziale projektu na pliki - tymczasem ty tworzysz po swojemu wszystko ?<br /><br />tyczy się to także tego co napisał wyżej kolega Krauser - podstawa programu to nieskończona pętla while(1) albo for(;;) w głównej funkcji programu main(). Więc może rzuć okiem jeszcze raz proszę na podstawy C opisane w książce ok ? będzie ci łatwiej dalej pisać programy<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 cze 2013, o 18:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-06-05T16:41:51+01:00</updated>
<published>2013-06-05T16:41:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38580#p38580</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38580#p38580"/>
<title type="html"><![CDATA[Re: RTC Atmega32 problem z odświeżaniem czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38580#p38580"><![CDATA[
<em>if( int0_flag ){}</em> umieść w nieskończonej pętli <em>while(1){}</em>, bo teraz nie ma się co dziwić, że raz się wykona odczyt.<br />PS.<br />Kod umieszczaj w znacznikach syntax=c<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 5 cze 2013, o 16:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[poczatkujacy]]></name></author>
<updated>2013-06-05T15:04:00+01:00</updated>
<published>2013-06-05T15:04:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38572#p38572</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38572#p38572"/>
<title type="html"><![CDATA[Re: RTC Atmega32 problem z odświeżaniem czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38572#p38572"><![CDATA[
Podłączyłem A0 do GND. Niestety problem w dalszym ciągu jest ten sam. Adresowanie mam zdefiniowane w następujący sposób: PCF8583_ADDR  0xA0 .<br /><br />Zamieszczam również kod odpowiedzialny za rtc:<br />[syntax=c]#include &quot;i2c.h&quot;<br /><br />#define PCF8583_ADDR 0xA0<br />#define _24C04_ADDR 0xA8<br /><br />uint8_t tekst&#91;&#93; = &quot;EEPROM&quot;;<br />uint8_t bo&#91; sizeof(tekst)+1 &#93;; // bufor pomocniczy na odczyt z EEPROM<br />volatile uint8_t int0_flag=1;// flaga zmieniana w przerwaniu i sprawdzana w pętli głównej<br /><br />int main(void)<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 VC<br /><br />enum {ss=1, mm, hh};<br />uint8_t bufor&#91;4&#93;;// rezerwacja bufora 4 bajty<br />uint8_t sekundy, minuty, godziny;<br /><br />i2cSetBitrate(100);<br />sei();<br /><br />EI2C_write_buf( _24C04_ADDR, 253, sizeof(tekst), tekst );<br /><br />if ( int0_flag )<br /> {<br />//odczyt 4 bajtów do bufora od adresu 0x01 z pamięci RAM naszego RTC<br />TWI_read_buf( PCF8583_ADDR, 0x01, 4, bufor );<br /><br />sekundy = bcd2dec( bufor&#91;ss&#93; );<br />minuty = bcd2dec( bufor&#91;mm&#93; );<br />godziny = bcd2dec( bufor&#91;hh&#93; );<br /><br />itoa(godziny, napis_godziny, 10);<br />itoa(minuty, napis_minuty, 10);<br />itoa(sekundy, napis_sekundy, 10);<br />DrawTime(55,8,BLUE);<br />if(godziny&lt;10)<br />{<br />LCD_String(&quot;0&quot;,8,55, WHITE, BLUE) ;<br />LCD_String(napis_godziny,8,64, WHITE, BLUE) ;<br />}<br />else<br />{<br />LCD_String(napis_godziny,8,55, WHITE, BLUE) ;<br />}<br />LCD_String(&quot;:&quot;,8,72, WHITE, BLUE) ;<br />if( minuty &lt; 10 )<br />{<br />LCD_String(&quot;0&quot;,8,77, WHITE, BLUE) ;<br />LCD_String(napis_minuty,8,86, WHITE, BLUE) ;<br />}<br />else<br />{<br />LCD_String(napis_minuty,8,77, WHITE, BLUE) ;<br />}<br />LCD_String(&quot;:&quot;,8,94, WHITE, BLUE) ;<br />if( sekundy &lt; 10 )<br />{<br />LCD_String(&quot;0&quot;,8,99, WHITE, BLUE) ;<br />LCD_String(napis_sekundy,8,108, WHITE, BLUE) ;<br />}<br />else<br />{<br />LCD_String(napis_sekundy,8,99, WHITE, BLUE) ;<br />}<br />// odczyt z EEPROM<br />EI2C_read_buf( _24C04_ADDR, 253, sizeof(tekst), bo );<br />int0_flag=0;<br />}<br />}<br /><br />// procedura obsługi przerwania INT 0<br />ISR( INT0_vect ) {<br />int0_flag = 1;<br />}[/syntax]<br /><br />Wykorzystane funkcje z pliku i2c.h:<br />[syntax=c]#define ACK 1<br />#define NACK 0<br /><br />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 />}<br /><br />// zapis danych do pamięci EEPROM<br />void EI2C_write_buf(u08 device, u16 subAddr, u16 len, u08 *buf) {<br /><br />while (len--) <br />{<br />TWI_start();<br />// ustawienie 9 bitu adresu pamięci EEPROM w ramach<br />// sprzętowego adresu urządzenia na pozycji bitu 1 (nr.2)<br />TWI_write( device | ((subAddr&gt;&gt;8)&lt;&lt;1) );<br />TWI_write(subAddr);<br />TWI_write(*buf++);<br />TWI_stop();<br />_delay_ms(5); // oczekiwanie na zapis<br />subAddr++;<br />}<br />}<br /><br />void TWI_read_buf(uint8_t SLA, uint8_t adr, uint8_t len, uint8_t *buf) {<br /><br />TWI_start();<br />TWI_write(SLA);<br />TWI_write(adr);<br />TWI_start();<br />TWI_write(SLA + 1);<br />while (len--) *buf++ = TWI_read( len ? ACK : NACK );<br />TWI_stop();<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 />}<br /><br />// odczyt danych z pamięci EEPROM<br />void EI2C_read_buf(u08 device, u16 subAddr, u16 len, u08 *buf) <br />{<br /><br />while (len--) <br />{<br />TWI_start();<br />TWI_write(device | ((subAddr&gt;&gt;8)&lt;&lt;1) );<br />TWI_write(subAddr);<br />TWI_start();<br />TWI_write(device + 1);<br />*buf++ = TWI_read( NACK );<br />TWI_stop();<br />subAddr++;<br />}<br />}[/syntax]<br />Czy ma ktoś może jakieś pomysły co może być nie tak?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1377">poczatkujacy</a> — 5 cze 2013, o 15:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-06-04T19:08:24+01:00</updated>
<published>2013-06-04T19:08:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38531#p38531</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38531#p38531"/>
<title type="html"><![CDATA[Re: RTC Atmega32 problem z odświeżaniem czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38531#p38531"><![CDATA[
To jeszcze sprawdź adres na I2C bo masz podpięte A0 do VCC a adres jaki ? podłącz A0 do GND <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i sprawdź tak na szybko - ale i tak doczytaj o adresowaniu tzn ustalaniu adresu jak ruszy<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 4 cze 2013, o 19:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[poczatkujacy]]></name></author>
<updated>2013-06-04T18:09:34+01:00</updated>
<published>2013-06-04T18:09:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38529#p38529</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38529#p38529"/>
<title type="html"><![CDATA[Re: RTC Atmega32 problem z odświeżaniem czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38529#p38529"><![CDATA[
Przepraszam za brak obrazka, byłem przekonany, że dodałem schemat. Teraz już jest. Zastosowałem rezystory podciągające.  Zastosowałem funkcję i2cBitRate(), wszystko działa dobrze w zestawie uruchomieniowym, a na mojej płytce tak jak wcześniej opisałem. Dzięki za linka <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><a href="http://forum.atnel.pl/_obrazki/o/1377/b2dbae1096dd8d322a07bbbae5b13e79.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/1377/b2dbae1096dd8d322a07bbbae5b13e79.png" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1377">poczatkujacy</a> — 4 cze 2013, o 18:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-06-04T14:56:24+01:00</updated>
<published>2013-06-04T14:56:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38518#p38518</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38518#p38518"/>
<title type="html"><![CDATA[Re: RTC Atmega32 problem z odświeżaniem czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38518#p38518"><![CDATA[
a przeglądałeś ten schemat ATB dokładnie ? widziałeś że są tam rezystory podciągające SDA i SCL do VCC ( 2x po 4,7K) ? coś mi się wydaje że nie widziałeś i pewnie ich nie zastosowałeś - a wtedy nie ma co się dziwić opisywanym przez ciebie efektom<br /><br />inny powód to może być że nie zastosowałeś funkcji i2cSetBitRate() .... czytasz na naszej stronie o uaktualnieniach do DVD ?<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 />jak nie ? to zachęcam cię do zajrzenia<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 4 cze 2013, o 14:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-06-04T14:54:30+01:00</updated>
<published>2013-06-04T14:54:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38516#p38516</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38516#p38516"/>
<title type="html"><![CDATA[Re: RTC Atmega32 problem z odświeżaniem czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38516#p38516"><![CDATA[
hmmm .... gdzie masz ten schemat ??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 4 cze 2013, o 14:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[poczatkujacy]]></name></author>
<updated>2013-06-04T14:24:24+01:00</updated>
<published>2013-06-04T14:24:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38515#p38515</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38515#p38515"/>
<title type="html"><![CDATA[RTC Atmega32 problem z odświeżaniem czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3257&amp;p=38515#p38515"><![CDATA[
Witam,<br /><br />Od dłuższego czasu próbuję uruchomić zegar RTC na swojej płytce,  niestety nie potrafię sobie poradzić z problemem na jaki się natknąłem. Napisałem program, w którym na wyświetlaczu LCD wyświetla się aktualna godzina. Wszystko działa dobrze na zestawie uruchomieniowym ATB rev:1.03. Niestety problem pojawia się na mojej płytce. Otóż czas wyświetlany na LCD nie aktualizuje się. Po zresetowaniu atmegi wyświetla się czas aktualny w momencie resetu, ale później brak kolejnych aktualizacji. Stan na pinie PD2 (przerwanie INT0) zmienia się od 0 do 5V, co sekundę więc wydaje się być ok.<br />Podejrzewam, że problemem może być transmisja I2C, ponieważ napięcie na nóżce SCL zmierzone za pomocą multimetru wynosi 0V natomiast w przypadku zestawu uruchomieniowego napięcie to 5V.<br /><br />W załączniku dołączam schemat.<br /><br />Bardzo proszę o pomoc  .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1377">poczatkujacy</a> — 4 cze 2013, o 14:24</p><hr />
]]></content>
</entry>
</feed>