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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-04-27T22:01:33+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1401&amp;mode</id>
<entry>
<author><name><![CDATA[mesho]]></name></author>
<updated>2013-04-27T22:01:33+01:00</updated>
<published>2013-04-27T22:01:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=35453#p35453</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=35453#p35453"/>
<title type="html"><![CDATA[Re: Komunikacja poprzez I2C z układem PCF8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=35453#p35453"><![CDATA[
Przerobiłem jeszcze parę kombinacji (tamta opcja nie działała poprawnie <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" />) i wyszło mi, że za każdym razem trzeba załączyć w pętli przerwanie:<br /><br />[syntax=c]TWI_write_byte(PCF8563_ADDR, 0x01, 0b00010001);<br />       TWI_write_byte(PCF8563_ADDR, 0x0E, 0b10000010);<br />               TWI_write_byte( PCF8563_ADDR, 0x0F, 1 );<br /><br />//**********************  pętla główna<br />while(1)<br />{<br />if ( int0_flag ) {<br />TWI_write_byte(PCF8563_ADDR, 0x01, 0b00010001); //tą linijkę trzeba podać do pętli<br />//odczyt 4 bajtów do bufora od adresu 0x01 z pamięci RAM naszego RTC<br />TWI_read_buf( PCF8563_ADDR, 0x01, 4, bufor );<br />sekundy = bcd2dec( bufor&#91;ss&#93; );<br />minuty = bcd2dec( bufor&#91;mm&#93; );<br />bufor&#91;hh&#93; &amp;= ~((1&lt;&lt;7)|(1&lt;&lt;6)); //maskujemy bity żeby nie było bałaganu;)<br />godziny = bcd2dec( bufor&#91;hh&#93; );<br />                                wyswietl_czas();<br />int0_flag=0;<br />}<br />}[/syntax]<br /><br />Bez tej linijki program odbiera godzinę tylko raz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=381">mesho</a> — 27 kwi 2013, o 22:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zlata_n]]></name></author>
<updated>2013-04-20T14:03:12+01:00</updated>
<published>2013-04-20T14:03:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=34792#p34792</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=34792#p34792"/>
<title type="html"><![CDATA[Re: Komunikacja poprzez I2C z układem PCF8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=34792#p34792"><![CDATA[
Way poradziłeś sobie z tym przerwaniem? (ja sprawdziłem także przykład kolegi mesho). Ja mam dziwną sytuację bo, w październiku tamtego roku przerabiałem ten problem i udało mi się uruchomić układ na Attiny2313 oraz ATmega16, mam gotowy kod i nawet rysunki z połączeniami.... Podłączam teraz i nie działa <img src="https://forum.atnel.pl/images/smilies/icon_neutral.gif" alt=":|" title="Średnio zadowolony" /> (RTC pracuje, bo po wysłaniu danych po I2C zapisuje datę, godzinę i zaczyna sobie wewnątrz tykać, przy resecie pokazuje zmianę czasu, lecz nie działa przerwanie na INT w RTC i nie mam zmiany na LCD co 1sek)<br />(Rezystory na I2C są, filtrowanie zasilania jest, kondensator od rezonatora do masy jest). W kodzie na początku mam wysyłanie informacji do PCF'a o generowanie przerwania... ale dioda nie świeci (zapali się jakoś losowo co 40sek) Hmm?<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 /><br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;I2C_SOFT/i2c_soft.h&quot;<br /><br />#define PCF8563_ADDR 0xA2<br /><br />typedef unsigned char  u08;<br />typedef unsigned short u16;<br />volatile uint8_t int0_flag=1;// flaga zmieniana w przerwaniu i sprawdzana w pętli głównej<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 />int main(void) {<br /><br />i2c_init();<br />// właczenie przerwania INT (TI_TP czyli bit 4 oraz TF czyli bit 2 ustawione na 1) oraz aktywowanie przerwan (TIE czyli LSB na 1)<br />I2C_write_byte( PCF8563_ADDR, 0x01, 0b00010101 );<br />// uaktywnienie timera (MSB na 1) i ustawienie czestotliwosci na 1Hz (dwa ost. bity 10)<br />I2C_write_byte( PCF8563_ADDR, 0x0E, 0b10000010 );<br />lcd_init();<br />sei();<br /><br />// Przerwanie INT0<br />MCUCR |= (1&lt;&lt;ISC01);// wyzwalanie zboczem opadającym<br />GIMSK |= (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=0, mm, hh, mday, wday, month, year};<br />uint8_t bufor&#91;6&#93;;// rezerwacja bufora 3 bajty<br />uint8_t sekundy, minuty, godziny, dzien_miesiaca, dzien_tyg, miesiac;<br />uint16_t rok;<br /><br />/*<br />// Ustawianie czasu na godzinę: 13:27:00 i date 12.10.2012<br />bufor&#91;0&#93; = dec2bcd(00);// sekundy<br />bufor&#91;1&#93; = dec2bcd(27);// minuty<br />bufor&#91;2&#93; = dec2bcd(13);// godziny<br />bufor&#91;3&#93; = dec2bcd(12);// dzien_miesiaca<br />bufor&#91;4&#93; = dec2bcd(2);// dzien_tyg<br /><br />miesiac = 10;// miesiac<br />rok = 2012;// rok<br /><br />if (rok&lt;2000)<br />{<br />bufor&#91;5&#93; = dec2bcd(miesiac) | 0b10000000;<br />bufor&#91;6&#93; = dec2bcd(rok-1900);<br />}<br />else<br />{<br />bufor&#91;5&#93; = dec2bcd(miesiac);<br />bufor&#91;6&#93; = dec2bcd(rok-2000);<br />}<br /> //zapis 7 bajtów z bufora pod adres 0x02 w pamięci RAM naszego RTC<br />I2C_write_buf( PCF8563_ADDR, 0x02, 7, bufor );<br /><br />*/<br />while(1) {<br /><br />if ( int0_flag ) {<br />//odczyt 7 bajtów do bufora od adresu 0x02 z pamięci RAM naszego RTC<br />I2C_read_buf( PCF8563_ADDR, 0x02, 7, bufor );<br /><br />sekundy = bcd2dec( bufor&#91;ss&#93;&amp; 0b01111111 );<br />minuty = bcd2dec( bufor&#91;mm&#93;&amp; 0b01111111 );<br />godziny = bcd2dec( bufor&#91;hh&#93;&amp; 0b00111111);<br />dzien_miesiaca = bcd2dec( bufor&#91;mday&#93;&amp; 0b00111111);<br />dzien_tyg = bcd2dec( bufor&#91;wday&#93;&amp; 0b00000111);<br />miesiac = bcd2dec( bufor&#91;month&#93;&amp; 0b00011111);<br />rok = bcd2dec( bufor&#91;year&#93;);<br />if ((bufor&#91;year&#93; &amp; 0b10000000) == 0) rok+=2000;<br />else rok+=1900;<br /><br />// wyświetlanie napisu na LCD<br />//lcd_str_P(PSTR(&quot;Zegar 'PCF 8563'&quot;));<br />// wyświetlenie czasu na LCD<br />lcd_locate(0,6);<br />lcd_int(dzien_miesiaca);<br />lcd_str(&quot;.&quot;);<br />lcd_int(miesiac);<br />lcd_str(&quot;.&quot;);<br />lcd_int(rok);<br /><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 />}<br />}<br /><br /><br />// procedura obsługi przerwania INT 0<br />ISR( INT0_vect ) {<br />int0_flag = 1;<br />}<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]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=142">zlata_n</a> — 20 kwi 2013, o 14:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mesho]]></name></author>
<updated>2013-03-29T10:36:31+01:00</updated>
<published>2013-03-29T10:36:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=32310#p32310</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=32310#p32310"/>
<title type="html"><![CDATA[Re: Komunikacja poprzez I2C z układem PCF8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=32310#p32310"><![CDATA[
Udało mi się rozwikłać zagadkę z tymi dziesiątkami godzin. Pies jest pogrzebany w rejestrach ostatnich dwóch nieużywanych bitach rejestru godzin, wystarczy je zamaskować.<br /><br />[syntax=c]TWI_read_buf( PCF8563_ADDR, 0x01, 4, bufor );<br />sekundy = bcd2dec( bufor[ss] );<br />minuty = bcd2dec( bufor[mm] );<br />bufor[hh] &amp;= ~((1&lt;&lt;7)|(1&lt;&lt;6)); //maskujemy nieużywane bity<br />godziny = bcd2dec( bufor[hh] );[/syntax]<br /><br />Co do tego przerwania, zadziałała mi taka kombinacja wysłana na początku programu:<br />[syntax=c]TWI_write_byte(PCF8563_ADDR, 0x01, 0b00010001); //timer interrupt enabled + pulsowanie INT zgodnie u ustawieniem<br />TWI_write_byte(PCF8563_ADDR, 0x0E, 0b10000010); //timer enabled + częstotliwość 1Hz[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=381">mesho</a> — 29 mar 2013, o 10:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Way]]></name></author>
<updated>2013-03-16T23:45:15+01:00</updated>
<published>2013-03-16T23:45:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=30865#p30865</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=30865#p30865"/>
<title type="html"><![CDATA[Re: Komunikacja poprzez I2C z układem PCF8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=30865#p30865"><![CDATA[
<strong>zlata_n</strong> mógłbyś wkleić poprawiony kod na forum, bo mam dokładnie taki sam problem jak twój, tzn. nie działa mi przerwanie. Układ PCF8563 działa poprawnie,  w pętli ładnie wysyła czas, tylko zależy mi na tym by to przerwanie zaczęło działać (podłączyłem diodę i nie miga, połączenie sprawdzałem multimetrem i jest w porządku).<br /><br />No i witam wszystkich, gdyż to mój pierwszy post na forum <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=1062">Way</a> — 16 mar 2013, o 23:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zlata_n]]></name></author>
<updated>2012-10-12T10:51:32+01:00</updated>
<published>2012-10-12T10:51:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=16733#p16733</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=16733#p16733"/>
<title type="html"><![CDATA[Re: Komunikacja poprzez I2C z układem PCF8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=16733#p16733"><![CDATA[
Sprostowanie problemu, sytuacja opanowana.<br />Sprawdziłem diodą LED czy układ PCF generuję przerwanie i faktycznie nie generował. Poczytałem jeszcze raz PDF'a oraz z pomocą kolegi z forum (The river) dodałem linie konfigurujące przerwanie. Miałem je dodane w złym miejscu. Poźniej lekka kosmetyka main'a. Zmniejszenie tablicy o setne sekundy bo 8563 ich nie generuję, i wszystko pokazuje dokładnie.Problem opisywałem posługując się ATtiny 2313 i programową obsługą I2C, natomiast układ obecnie ruszył w konfiguracji ATmega16 i sprzętowa obsługa I2C. Teraz spróbuję przenieś układ na ATtiny 2313 z obsługą programową I2C.<br /><br />Dzięki za pomoc i sorry za zamieszanie.<br />Pozdrawiam.<br />Jacek.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=142">zlata_n</a> — 12 paź 2012, o 10:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zlata_n]]></name></author>
<updated>2012-10-10T20:43:49+01:00</updated>
<published>2012-10-10T20:43:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=16692#p16692</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=16692#p16692"/>
<title type="html"><![CDATA[Re: Komunikacja poprzez I2C z układem PCF8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=16692#p16692"><![CDATA[
schematu obecnie nie mam, ale jest prawie identyczny jak kolegi The river'a w pierwszym poście. rozni się tylko tym że ja mam ATtiny 2313, rezonator wewnętrzny 8MHz, rezystory które idą od SDA i SCL mają po 4,5k a nie 4,7k<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=142">zlata_n</a> — 10 paź 2012, o 20:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2012-10-10T20:31:40+01:00</updated>
<published>2012-10-10T20:31:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=16690#p16690</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=16690#p16690"/>
<title type="html"><![CDATA[Re: Komunikacja poprzez I2C z układem PCF8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=16690#p16690"><![CDATA[
no to zarzuć pan schematem  <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=189">MirkoT</a> — 10 paź 2012, o 20:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zlata_n]]></name></author>
<updated>2012-10-10T20:20:25+01:00</updated>
<published>2012-10-10T20:20:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=16689#p16689</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=16689#p16689"/>
<title type="html"><![CDATA[Re: Komunikacja poprzez I2C z układem PCF8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=16689#p16689"><![CDATA[
Tak, tak o tym pamiętałem 22p są podłączone do GND.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=142">zlata_n</a> — 10 paź 2012, o 20:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[savian86]]></name></author>
<updated>2012-10-10T20:11:18+01:00</updated>
<published>2012-10-10T20:11:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=16688#p16688</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=16688#p16688"/>
<title type="html"><![CDATA[Re: Komunikacja poprzez I2C z układem PCF8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=16688#p16688"><![CDATA[
Zarzuć schemat. Piszesz że złożyłeś schemat wg książki, a dla PCF8563 kondensator przy kwarcu należy podłączyć do GND, a nie do VCC.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=393">savian86</a> — 10 paź 2012, o 20:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zlata_n]]></name></author>
<updated>2012-10-10T16:16:47+01:00</updated>
<published>2012-10-10T16:16:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=16683#p16683</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=16683#p16683"/>
<title type="html"><![CDATA[Re: Komunikacja poprzez I2C z układem PCF8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=16683#p16683"><![CDATA[
Witajcie, mam pewien problem odnośnie tej komunikacji. Posiadam ATtiny 2313, skorzystałem z implementacji programowej I2C. Kodów użyłem z książki Pana Mirka. Chciałem sprawdzić jak pracuje ten PCF jednak po wgraniu wsadu pokazuje mi się tylko<br /><br />[start. . .   #########]<br />[165:165:165                ]<br /><br />i nic się wiecej nie dzieje. Dodałem funkcję które wyczytałem z postów The river'a i nic. Mozliwe, że mam coś źle w kodzie i tego nie widzę. Nurtuje mnie jeszcze jedno pytanie, złożyłem układ PCF8563 według schematu z książki i gdy zasilam tylko baterią cr2032 to na pinach VCC i GND PCF mam 3.14V, jednak gdy zasilam układ z portu USB na układzie PCF jest 3.19 V,  inaczej jak wyjmę baterie i zasilam tylko z USB jest 1.25V na PCF. Jest to normalne ??<br /><br />Proszę o sprawdzenie kodu, w pozostałych plikach nic nie zmieniałem poza zmianą pinów i dopisania funkcji w pliku i2c_soft.c<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">void TWI_write_byte( u08 device, u08 adr, u08 bajt)</div> <br /><br />plik main.c<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 2010-09-07<br /> *       Autor: Mirosław Kardaś<br /> *<br /> *       Program korzysta ze programowej obsługi I2C<br /> *       Umożliwia zapis danych do RTC oraz EEPROM a także<br /> *       oczyt z tych urządzeń<br /> *<br /> */<br />#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_SOFT/i2c_soft.h&quot;<br /><br />#define PCF8583_ADDR 0xA2<br /><br />#define _24C04_ADDR 0xA8<br /><br /><br /><br />uint8_t tekst[] = &quot;EEPROM&quot;;<br /><br />uint8_t bo[ sizeof(tekst)+1 ]; // bufor pomocniczy na odczyt z EEPROM<br /><br />volatile uint8_t int0_flag=1;// flaga zmieniana w przerwaniu i sprawdzana w pętli głównej<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 />// odczyt danych z pamięci EEPROM<br />//void EI2C_read_buf(u08 device, u16 subAddr, u16 len, u08 *buf);<br />// zapis danych do pamięci EEPROM<br />//void EI2C_write_buf(u08 device, u16 subAddr, u16 len, u08 *buf);<br /><br /><br />void TWI_write_byte( uint8_t device, uint8_t adr, uint8_t bajt);<br /><br /><br /><br />int main(void) {<br /><br />//DDRA |= (1&lt;&lt;PA7);<br />//PORTA |= (1&lt;&lt;PA7); // podświetlenie wyświetlacza LCD<br /><br />// Przerwanie INT0<br />MCUCR |= (1&lt;&lt;ISC01);// wyzwalanie zboczem opadającym<br />GIMSK |= (1&lt;&lt;INT0);// odblokowanie przerwania<br />PORTD |= (1&lt;&lt;PD2);// podciągnięcie pinu INT0 do VCC<br /><br />TWI_write_byte( PCF8583_ADDR, 0x01, 0b00010101 );                               // właczenie przerwania INT (TI_TP czyli bit 4 oraz TF czyli bit 2 ustawione na 1) oraz aktywowanie przerwan (TIE czyli LSB na 1)<br />TWI_write_byte( PCF8583_ADDR, 0x0E, 0b10000010 );                               // uaktywnienie timera (MSB na 1) i ustawienie czestotliwosci na 1Hz (dwa ost. bity 10)<br />//TWI_write_byte( PCF8563_ADDR, 0x0F, 1 );                                              // ta linijka do ust. jakiejs innej czestotliwosci niz te standardowe z rejestru wyzej<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 /><br />i2c_init();<br />lcd_init();<br /><br />sei();<br /><br />lcd_str_P(PSTR(&quot;start...&quot;));<br /><br />// Ustawianie czasu na godzinę: 18:34:27<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 />I2C_write_buf( PCF8583_ADDR, 0x01, 4, bufor );<br /><br /><br />// zapis tekstu do pamięci EEPROM od adresu 253, dlatego aby tekst<br />// został zapisany w jednym i drugim banku pamięci<br />//EI2C_write_buf( _24C04_ADDR, 253, sizeof(tekst), tekst );<br /><br />while(1) {<br /><br />if ( int0_flag ) {<br />//odczyt 4 bajtów do bufora od adresu 0x01 z pamięci RAM naszego RTC<br />I2C_read_buf( PCF8583_ADDR, 0x01, 4, bufor );<br /><br />sekundy = bcd2dec( bufor[ss] );<br />minuty = bcd2dec( bufor[mm] );<br />godziny = bcd2dec( bufor[hh] );<br /><br />// wyświetlenie czasu na LCD<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 />// odczyt z EEPROM<br />//EI2C_read_buf( _24C04_ADDR, 253, sizeof(tekst), bo );<br /><br />// wyświetlenie napisu z EEPROM na LCD<br />lcd_locate(0, 9);<br />lcd_str( (char*)bo );<br /><br />int0_flag=0;<br />}<br /><br />}<br />}<br /><br /><br />// procedura obsługi przerwania INT 0<br />ISR( INT0_vect ) {<br />int0_flag = 1;<br />}<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 />}<br /><br /><br />// odczyt danych z pamięci EEPROM<br />void EI2C_read_buf(u08 device, u16 subAddr, u16 len, u08 *buf) {<br /><br />while (len--) {<br />I2C_START();<br />i2cPutbyte(device | ((subAddr&gt;&gt;8)&lt;&lt;1) );<br />i2cPutbyte(subAddr);<br />I2C_REP_START();<br />i2cPutbyte(device + 1);<br />*buf++ = i2cGetbyte( NACK );<br />I2C_STOP();<br />subAddr++;<br />}<br /><br /><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 />I2C_START();<br />// ustawienie 9 bitu adresu pamięci EEPROM w ramach<br />// sprzętowego adresu urządzenia na pozycji bitu 1 (nr.2)<br />i2cPutbyte( device | ((subAddr&gt;&gt;8)&lt;&lt;1) );<br />i2cPutbyte(subAddr);<br /><br />i2cPutbyte(*buf++);<br /><br />I2C_STOP();<br />_delay_ms(5); // oczekiwanie na zapis<br />subAddr++;<br />}<br />}[/syntax]<br /><span style="color: #FF0000">[plików bibliotek nie umieszczamy na forach - czy kolega nie wiedział o tym? - mirekk36]</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=142">zlata_n</a> — 10 paź 2012, o 16:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[The River]]></name></author>
<updated>2012-08-12T16:05:47+01:00</updated>
<published>2012-08-12T16:05:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12456#p12456</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12456#p12456"/>
<title type="html"><![CDATA[Re: Komunikacja poprzez I2C z układem PCF8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12456#p12456"><![CDATA[
Nie, nie używam żadnej pamięci EEPROM.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=508">The River</a> — 12 sie 2012, o 16:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-08-12T13:24:36+01:00</updated>
<published>2012-08-12T13:24:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12443#p12443</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12443#p12443"/>
<title type="html"><![CDATA[Re: Komunikacja poprzez I2C z układem PCF8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12443#p12443"><![CDATA[
a czy nie masz przypadkiem na tej samej magistrali I2C jeszcze jakiejś pamięci EEPROM ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> aprop'os tych skaczących sekund ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 12 sie 2012, o 13:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[The River]]></name></author>
<updated>2012-08-12T13:21:21+01:00</updated>
<published>2012-08-12T13:21:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12441#p12441</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12441#p12441"/>
<title type="html"><![CDATA[Re: Komunikacja poprzez I2C z układem PCF8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12441#p12441"><![CDATA[
Kondensator poprawiony a po podłączeniu diody tak jak Mirku mówiłeś brak reakcji, znaczy się przerwania nie były generowane, bo faktycznie nie były skonfigurowane. Po przeczytaniu tematu który kolega savian podesłał i po analizie kodu który z kolei kolega xbary w nim zamieścił oraz po ponownym zagłębieniu się w note katalogową udało się problem naprawić. W ogóle teraz bardziej &quot;zaczaiłem&quot; całą idę całej obsługi I2C przy pomocy modułu TWI więc dzięki Panowie za pomoc. Zmiany w kodzie jakie dokonałem zamieszczam poniżej gdyż może jeszcze komuś się przydadzą.<br /><br />plik i2c_twi.c dodana funkcja do zapisu bajtu<br />[syntax=c]<br />void TWI_write_byte( uint8_t SLA, uint8_t adr, uint8_t bajt) {<br /><br />TWI_start();<br />TWI_write(SLA);<br />TWI_write(adr);<br />TWI_write(bajt);<br />TWI_stop();<br />}<br />[/syntax]<br />oraz plik główny main.c dodane 3 linie konfigurujące przerwanie <br /><br />[syntax=c]<br />TWI_write_byte( PCF8563_ADDR, 0x01, 0b00010101 );// właczenie przerwania INT (TI_TP czyli bit 4 oraz TF czyli bit 2 ustawione na 1) oraz aktywowanie przerwan (TIE czyli LSB na 1)<br />TWI_write_byte( PCF8563_ADDR, 0x0E, 0b10000010 );// uaktywnienie timera (MSB na 1) i ustawienie czestotliwosci na 1Hz (dwa ost. bity 10)<br />//TWI_write_byte( PCF8563_ADDR, 0x0F, 1 );// ta linijka do ust. jakiejs innej czestotliwosci niz te standardowe z rejestru wyzej<br /><br />[/syntax]<br />Reasumujac, biorąc pod uwagę drobne zmiany a w zasadzie parę dopisanych lini kodu, przykładowy kod do obsługi PCF8583 działa również na PCF8563 ale z jednym mały błędem. Mianowicie zauważyłem że przy sekundach powyżej 40 dziesiątki godzin przeskakują na 5. Ale już w następnej minucie dla sekund od 0 do 40 liczba dziesietna godzin wraca do prawidłowej i tak w kóło, przeskakuje na 5 i wraca. Ale jak rozwiązać ten problem to już będę się starał samemu dojść. Narazie jeszcze raz dzięki wielkie za pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=508">The River</a> — 12 sie 2012, o 13:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-08-11T22:17:24+01:00</updated>
<published>2012-08-11T22:17:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12408#p12408</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12408#p12408"/>
<title type="html"><![CDATA[Re: Komunikacja poprzez I2C z układem PCF8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12408#p12408"><![CDATA[
Ok dobrze - jak spojrzałem na twój schemat i symbol tego scalaka <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... to mi się wydało że jakoś zbyt mocno końcówki pomieszałeś ....<br /><br />ale na pewno masz podłączony źle kondensator 22pF .... w tym scalaku ma być od OSCI do GND a ty podłączyłeś do VCC tak jak w PCF8583 - więc to wypada poprawić<br /><br />No to teraz jak zwykle - skoro masz taki objaw jak opisałeś to wynika jakby się przerwanie nie generowało. A dlaczego może się nie generować ? no bo może coś źle jest podłączone wyjście INT od RTC do INT0 w procku - sprawdź połączenie i w ogóle sprawdź zwykłą diodą LED podłączając ją katodą do wyjścia INT scalaka RTC. Oczywiście przez rezystor do VCC i powinna sobie migać co sekundę wtedy będziesz miał pewność że masz w ogóle sygnał podawany na INT0<br /><br />a potem to już rzeczywiście trzeba trochę nieco dopasować kod<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 11 sie 2012, o 22:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[The River]]></name></author>
<updated>2012-08-11T22:07:36+01:00</updated>
<published>2012-08-11T22:07:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12407#p12407</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12407#p12407"/>
<title type="html"><![CDATA[Re: Komunikacja poprzez I2C z układem PCF8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12407#p12407"><![CDATA[
Nie to nie była literówka, zastosowałem układ PCF8583 ponieważ taki akurat miałem, aczkolwiek podejżewałem na początku że faktycznie przykładowy kod pewno nie będzie działał, a tu prosze. Po przeanalizowaniu obu not katalogowych stwierdziłem że różnice nie są wcale duże np. ten sam adres układu slave do czytania i zapisu. Mapa pamięci się trochę różni i trochę kombinowałem w kodzie od której komórki rozpocząć zapis, efekty były różne ale w końcu zostawiłem tak jak było bo najlepiej dziłało. Jeśli chodzi o wyprowadzenia to różnica jest tylko w jednym pinie, 8583 ma A0 a 8563 ma CLKOUT ale tego wyjścia akurat nie użyłem a A0 z tego co pamiętam z książki służyło do zmiany adresu. Więc generalnie będąc świadomy różnic w tych układach postanowiłem zastosować ten kod i tak jak napisałem działa <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> tylko cyfry na wyświetlaczu nie zmieniają mi się co sekunde. A układ faktycznie liczy, bo po wyłączeniu zasilania i jego załączeniu pojawia się godzina która powinna się pojawić (biorąc pod uwage czas który upłynął). Nawet sobie wpisałem godzine dzisiaj gdzieś koło południa żeby z zegarkiem systemowym zsynchornizować i teraz dalej pokazuje dobrą godzine. Ale poczytam jeszcze jutro obydwie te noty katalogowe i może nasuną mi się jakieś spostrzeżenia.<br /><br />-------edit:<br /><br />dzięki savian za link do tematu, przekope jeszcze raz jutro note katalogową, przynajmniej teraz wiem na co zwrócić szczególną uwagę<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=508">The River</a> — 11 sie 2012, o 22:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[savian86]]></name></author>
<updated>2012-08-11T21:55:29+01:00</updated>
<published>2012-08-11T21:55:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12406#p12406</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12406#p12406"/>
<title type="html"><![CDATA[Re: Komunikacja poprzez I2C z układem PCF8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12406#p12406"><![CDATA[
Jeśli jednak jest to PCF8563 to poczytaj od tego miejsca<br /><a href="http://forum.atnel.pl/topic1289-30.html?hilit=pcf8563#p10745"  class="postlink">topic1289-30</a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=393">savian86</a> — 11 sie 2012, o 21:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-08-11T21:41:53+01:00</updated>
<published>2012-08-11T21:41:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12405#p12405</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12405#p12405"/>
<title type="html"><![CDATA[Re: Komunikacja poprzez I2C z układem PCF8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12405#p12405"><![CDATA[
Witam,<br /><br />Tak na samym wstępie - przed analizą dalej to dopytam czy to tylko literówka ???? kolega użył scalaka PCF8563 czy PCF8583 ??? <br /><br />czy się po prostu dziabnął na maxa ? <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> ........ Bo jeśli użyłeś rzeczywiście użyłeś scalaka PCF8563 to hmmm - <br /><br />czy kolega nie widzi że to CAŁKIEM INNY SCALAK ???? (no może nie całkiem, jest nawet bardzo podobny - ale jednak inny)<br /><br />- inne wyprowadzenia<br />- inna obsługa programowa<br /><br />a tymczasem kolega pokazał schemat jak dla PCF8583 no i zastosował kod z książki dla PCF8583<br /><br />toż to nie ma prawa działać z PCF8563 <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 11 sie 2012, o 21:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[The River]]></name></author>
<updated>2012-08-11T21:45:15+01:00</updated>
<published>2012-08-11T21:30:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12404#p12404</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12404#p12404"/>
<title type="html"><![CDATA[Komunikacja poprzez I2C z układem PCF8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1401&amp;p=12404#p12404"><![CDATA[
Witam <br /><br />Postanowiłem &quot;pobawić się&quot; trochę układem RTC PCF8563 i w tym celu sięgnąłem od książki Pana Mirosława Kardasia. Na podstawie informacji zawartych w książce, przykładowych kodów z płyty oraz informacji zawartych w notach katalogowych (mikrokontrolera i układu) zrobiłem sobie układ który wygląda mniej więcej tak jak na rysunku poniżej. Kod (załączony poniżej) jest to w zasadzie okrojona wersja przykładu. Do obsługi wyświetlacza 2x16 na HD44780 użyłem również przykładów z płyty (o ile pamiętam nic tam nie zmieniałem) i teraz w czym rzecz.<br /><br />Z tego co wydedukowałem to w pętli głównej sprawdzane jest &quot;wystawienie&quot; flagi przerwanie INT0. Czyli jeśli nastąpi przerwanie, a z tego co wyczytałem w książce powinno ono następować z częstotliwością 1Hz więc co sekunde wystawiana jest flaga a tym samym wykonywany kod znajdujących się w &quot;ifie&quot;, czyli odczytywany jest czas. Tylko że u mnie po podłaczeniu zasilania (zasilany układ z portu usb przez programator) pojawia się godzina która stoi w miejscu. Po wyłączeniu i ponownym załączeniu pojawia się inna godzina (zgodna z czasem jaki upłyną) czyli że niby tam wszystko działa tylko, układ odmierza czas ale nie jest to wyświetlane co sekunde, a tylko raz po załączeniu zasilania. Czyli ja tak wnioskuje że po prostu cały czas jest wystawiona flaga przerwania, tak jak by na początku po pierwszy odczycie nie została ona wyzerowana, ale w kodzie jest wszystko ok i nie rozumiem co może być nie tak. Układ budowałem sam bo nie mam zestawu uruchomieniowego a w sumie też chce się trochę pobawić elektroniką a nie tylko samym programowaniem ale błędu tam nie widze żadnego. Nie wiem, może ktoś będzie w stanie mi coś doradzić. To jest taki głównym probmem bo wogóle jeśli chodzi o samą obsługę wyświetlacza to też nie zawsze coś gra, bo czasmi po podłaczeniu programatora nic się nie wyświetla (przy zaprogramowanym uC) a po ponownym załaczeniu zasilania wszystko gra. Ale narazie przedewszystkim ciekawi mnie co jest nie tak z tym układem PCF8563 bo problem z wyświetlaczem może w końcu uda mi się samemu rozgryźć a narazie &quot;przynajmniej czasmi&quot; działa. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />kod:<br />[syntax=c]/*<br /> * main.c<br />*/<br /><br />#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 0xA2<br /><br />// utworzenie typu u08, odpowiednika uint8_t aby kod byl bardziej czytelny<br />typedef unsigned char  u08;<br />typedef unsigned short u16;<br /><br />volatile uint8_t int0_flag=1;// flaga zmieniana w przerwaniu i sprawdzana w pêtli g³ównej<br /><br />uint8_t dec2bcd(uint8_t dec);// konwersja liczby dziesiêtnej na BCD<br />uint8_t bcd2dec(uint8_t bcd);// konwersja liczby BCD na dziesiêtn¹<br /><br />int main(void) {<br /><br />// Przerwanie INT0<br />DDRD |= 0x00;<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 />enum {ss=1, mm, hh};// definiujemy sobie dla polepszenia czytelnoœci programu typ wyliczeniowy, skazuj¹cy nam póŸniej na odpowiednie indeksy w tablicy (buforze)<br />uint8_t bufor[4];// rezerwacja bufora 4 bajty<br />uint8_t sekundy, minuty, godziny;<br /><br />lcd_init();<br />i2cSetBitrate(100);<br />sei();<br />//lcd_str_P(PSTR(&quot;start...&quot;));<br /><br />//Ustawianie czasu na konkretna godzine<br />/*<br />bufor[0] = 0;// setne czêœci sekundy<br />bufor[1] = dec2bcd(00);// sekundy<br />bufor[2] = dec2bcd(19);// minuty<br />bufor[3] = dec2bcd(13);// godziny<br />// zapis 4 bajtów z bufora pod adres 0x01 w pamiêci RAM naszego RTC<br />TWI_write_buf(0xA2 , 0x01, 4, bufor );<br />*/<br />while(1) {<br /><br />if ( int0_flag ) {<br />TWI_read_buf( 0xA2 , 0x01, 4, bufor );//odczyt 4 bajtów do bufora od adresu 0x01 z pamiêci RAM naszego RTC<br /><br />sekundy = bcd2dec( bufor[ss] );<br />minuty = bcd2dec( bufor[mm] );<br />godziny = bcd2dec( bufor[hh] );<br /><br />// wyœwietlenie czasu na LCD<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 />}<br />}<br /><br /><br />// procedura obs³ugi przerwania INT 0<br />ISR( INT0_vect ) {<br />int0_flag = 1;<br />}<br /><br />uint8_t dec2bcd(uint8_t dec) {<br />return ((dec / 10)&lt;&lt;4) | (dec % 10);// konwersja liczby dziesiêtnej na BCD<br />}<br /><br />uint8_t bcd2dec(uint8_t bcd) {<br />    return ((((bcd) &gt;&gt; 4) &amp; 0x0F) * 10) + ((bcd) &amp; 0x0F);// konwersja liczby BCD na dziesiêtn¹<br />}<br />[/syntax]<br /><br />Schemat:<br /><a href="http://img684.imageshack.us/i/pcf8563andatmega32.png/"  class="postlink"><img src="http://img684.imageshack.us/img684/1504/pcf8563andatmega32.th.png" alt="Obrazek" /></a><br /><br />Z góry dziękuje za jakiekolwiek zainteresowanie tematem <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=508">The River</a> — 11 sie 2012, o 21:30</p><hr />
]]></content>
</entry>
</feed>