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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-11-13T20:03:35+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=30&amp;t=4615&amp;mode</id>
<entry>
<author><name><![CDATA[dawidn47]]></name></author>
<updated>2013-11-13T20:03:35+01:00</updated>
<published>2013-11-13T20:03:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=56725#p56725</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=56725#p56725"/>
<title type="html"><![CDATA[Re: Konflikt na i2c pomiędzy pcf8574ap a pcf8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=56725#p56725"><![CDATA[
W plikach nagłówkowych były same deklaracje funkcji. Nie było żadnych extern.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1012">dawidn47</a> — 13 lis 2013, o 20:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dawidn47]]></name></author>
<updated>2013-10-30T22:33:46+01:00</updated>
<published>2013-10-30T22:33:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54899#p54899</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54899#p54899"/>
<title type="html"><![CDATA[Re: Konflikt na i2c pomiędzy pcf8574ap a pcf8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54899#p54899"><![CDATA[
Stworzyłem sobie 2 niezależne biblioteki do obsługi modułów. Jedna do umieszczania znaków na wyświetlaczu led przez ekspander a druga do obsługi rtc. Obie korzystały z bibliotek Mirka do TWI. W tych moich obydwu bibliotekach była zmienna o tej samej nazwie &quot;address&quot; przechowywała ona adres modułu za który odpowiadała. Problem był taki ze adres inicjowanej później biblioteki nadpisywał adres tej poprzedniej bo tak samo się nazywały. (Dziwne to trochę dla mnie przyznam). Ale nadanie unikatowych nazw rozwiązało ten problem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1012">dawidn47</a> — 30 paź 2013, o 22:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dawidn47]]></name></author>
<updated>2013-10-30T21:26:05+01:00</updated>
<published>2013-10-30T21:26:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54883#p54883</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54883#p54883"/>
<title type="html"><![CDATA[Re: Konflikt na i2c pomiędzy pcf8574ap a pcf8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54883#p54883"><![CDATA[
Miałeś racje <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=1012">dawidn47</a> — 30 paź 2013, o 21:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-10-30T20:58:23+01:00</updated>
<published>2013-10-30T20:58:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54868#p54868</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54868#p54868"/>
<title type="html"><![CDATA[Re: Konflikt na i2c pomiędzy pcf8574ap a pcf8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54868#p54868"><![CDATA[
<div class="quotetitle">dawidn47 napisał(a):</div><div class="quotecontent"><br />Problem był czysto programowy<br /></div><br /><br />a widziałeś co wyżej pisałem ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />coś gdzieś masz babolka w sofcie - trzeba poszukać BUG'a<br /></div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 30 paź 2013, o 20:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dawidn47]]></name></author>
<updated>2013-10-30T20:33:19+01:00</updated>
<published>2013-10-30T20:33:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54860#p54860</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54860#p54860"/>
<title type="html"><![CDATA[Re: Konflikt na i2c pomiędzy pcf8574ap a pcf8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54860#p54860"><![CDATA[
Problem rozwiązany <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> mimo ze zabrało mi to tyle czasu to się nieźle uśmiałem jak doszukałem się błędu. Problem był czysto programowy. Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1012">dawidn47</a> — 30 paź 2013, o 20:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dawidn47]]></name></author>
<updated>2013-10-29T21:25:08+01:00</updated>
<published>2013-10-29T21:25:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54744#p54744</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54744#p54744"/>
<title type="html"><![CDATA[Re: Konflikt na i2c pomiędzy pcf8574ap a pcf8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54744#p54744"><![CDATA[
Próbowałem pozmieniać adresu zmieniając konfiguracje na nóżkach do adresowania. Niestety bez zmian. Moduły osobno działają a razem się blokują.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1012">dawidn47</a> — 29 paź 2013, o 21:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-10-29T14:26:08+01:00</updated>
<published>2013-10-29T14:26:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54709#p54709</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54709#p54709"/>
<title type="html"><![CDATA[Re: Konflikt na i2c pomiędzy pcf8574ap a pcf8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54709#p54709"><![CDATA[
No to obydwa układy nie mogą się gryźć na magistrali ... coś gdzieś masz babolka w sofcie - trzeba poszukać BUG'a<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 29 paź 2013, o 14:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dawidn47]]></name></author>
<updated>2013-10-29T13:46:54+01:00</updated>
<published>2013-10-29T13:46:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54706#p54706</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54706#p54706"/>
<title type="html"><![CDATA[Re: Konflikt na i2c pomiędzy pcf8574ap a pcf8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54706#p54706"><![CDATA[
Dzięki za odpowiedz, spróbowałem własnie z adresem 0x38 niestety nie działa. U mnie działa z adresem 0x70.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1012">dawidn47</a> — 29 paź 2013, o 13:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojtek1000]]></name></author>
<updated>2013-10-29T09:21:57+01:00</updated>
<published>2013-10-29T09:21:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54680#p54680</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54680#p54680"/>
<title type="html"><![CDATA[Re: Konflikt na i2c pomiędzy pcf8574ap a pcf8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54680#p54680"><![CDATA[
Z noty katalogowej PCF 8574 wynika,że przy ustawieniu A0,A1,A2 w stan niski (tak jak u Ciebie na schemacie) adres jest 20hex dla PCF 8574 i 38hex dla PCF 8574A, a u Ciebie w trakcie inicjalizacji ustawiasz adres 70hex.<br /><br />pozdrawiam<br />wojtek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=708">wojtek1000</a> — 29 paź 2013, o 09:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[perlon]]></name></author>
<updated>2013-10-29T08:55:00+01:00</updated>
<published>2013-10-29T08:55:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54677#p54677</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54677#p54677"/>
<title type="html"><![CDATA[Re: Konflikt na i2c pomiędzy pcf8574ap a pcf8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54677#p54677"><![CDATA[
<div class="quotetitle">marc90 napisał(a):</div><div class="quotecontent"><br />Moim zdaniem masz konflikt poniewaz na obu urzadzeniach ustawiles adres 0 (zwarles nożki scalak do masy) . Zmień adres ktoregos z urzadzen na inny niz zero( podpinajac nozke adres do zasilania).<br /></div><br />Chyba jednak nie.<br />adres PCF8574       0 1 0 0 A2 A1 A0<br />adres PCF8574A     0 1 1 1 A2 A1 A0<br />adres PCF8583       1 0 1 0  0  0   A0<br /> W żadnym razie ustawiając bity Ax nie uda się uzyskać tego samego adresu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=382">perlon</a> — 29 paź 2013, o 08:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[marc90]]></name></author>
<updated>2013-10-29T06:20:07+01:00</updated>
<published>2013-10-29T06:20:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54670#p54670</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54670#p54670"/>
<title type="html"><![CDATA[Re: Konflikt na i2c pomiędzy pcf8574ap a pcf8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54670#p54670"><![CDATA[
Moim zdaniem masz konflikt poniewaz na obu urzadzeniach ustawiles adres 0 (zwarles nożki scalak do masy) . Zmień adres ktoregos z urzadzen na inny niz zero( podpinajac nozke adres do zasilania).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1379">marc90</a> — 29 paź 2013, o 06:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dawidn47]]></name></author>
<updated>2013-10-29T00:17:38+01:00</updated>
<published>2013-10-29T00:17:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54667#p54667</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54667#p54667"/>
<title type="html"><![CDATA[Konflikt na i2c pomiędzy pcf8574ap a pcf8583]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4615&amp;p=54667#p54667"><![CDATA[
Witam, mam problem polegający na tym ze układy  pcf8574ap i pcf8583 nie działają poprawnie w jednym programie. Program wykorzystujący tylko jeden moduł działa poprawnie. Chciałbym połączyć prace tych układów abym miał możliwość pobierać czas z rtc i wyświetlać go na wyświetlaczu led z użyciem ekspandera. W tym momencie robię jakiś błąd ponieważ program blokuje działanie jednego z modułów. Zakomentowanie obsługi jednego z modułów dopiero umożliwia poprawna prace tego drugiego. W przypadku próby obsługi obydwu modułów poprawnie działa tylko rtc a na wyjściu ekspandera pojawiają się (losowe?) wartości. Rezystory podciągające maja wartość 5k. Procek to atmega8 8Mhz. Proszę o jakieś wskazówki. Poniżej kod i schemat. <br /><br />Z góry dzięki i pozdrawiam.<br /><br />main.c<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;I2C_TWI/i2c_twi.h&quot;<br />#include &quot;rtcTWI/rtc.h&quot;<br /><br />#include &quot;MKUART/mkuart.h&quot;<br />#include &quot;ledDisplayi2c/ledDisplay.h&quot;<br /><br />#define ledTest (1&lt;&lt;PB1)<br /><br />volatile uint8_t int0_flag=1;<br />volatile uint8_t tim2flag;<br /><br />void toggleLed()<br />{<br />PORTB ^= ledTest;<br />}<br />void int0init()<br />{<br />MCUCR |= (1&lt;&lt;ISC01);// wyzwalanie zboczem opadającym<br />GICR |= (1&lt;&lt;INT0);// odblokowanie przerwania<br />PORTD |= (1&lt;&lt;PD2);<br />}<br />void timer2ctcInit()<br />{<br />TCCR2 |= (1&lt;&lt;WGM21);// tryb  CTC<br />TCCR2 |= (1&lt;&lt;CS20);<br />OCR2 = 30;<br />TIMSK |= (1&lt;&lt;OCIE2);<br />}<br />int main(void)<br />{<br />DDRB |= ledTest;<br /><br />ledDis_pcf8574Init(0x70);<br />rtc_Init(0xA0);<br /><br />i2cSetBitrate(100);<br /><br />USART_Init(__UBRR);<br /><br />int0init();<br />timer2ctcInit();<br /><br />sei();<br /><br />//ledDis_setNumber(12,34);<br />while(1)<br />{<br />if(int0_flag)<br />{<br />toggleLed();<br /><br />rtc_readTime();<br />ledDis_setNumber(rtc_getHours(),rtc_getMinutes());<br />uart_putint(rtc_getSeconds(),10);<br />uart_puts(&quot;\n\r&quot;);<br /><br />ledDis_dotsBlink();<br />int0_flag=0;<br />}<br />if(tim2flag==1)<br />{<br />ledDis_refreshDisplay();<br />tim2flag=0;<br />}<br />}<br />}<br />ISR(TIMER2_COMP_vect)<br />{<br />tim2flag =1;<br />}<br />ISR( INT0_vect )<br />{<br />int0_flag = 1;<br />}[/syntax]<br /><br />ledDisplay.c<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;../I2C_TWI/i2c_twi.h&quot;<br />#include &quot;ledDisplay.h&quot;<br /><br />uint8_t adress;<br />uint8_t recentSegment;<br />uint8_t segmentsDigit&#91;4&#93;;<br /><br />const uint8_t numberPattern&#91;11&#93; = {<br />192,// 0<br />249,// 1<br />164,// 2<br />176,// 3<br />153,// 4<br />146,// 5<br />130,// 6<br />248,// 7<br />128,// 8<br />144,// 9<br />254,   // puste<br />};<br />#define segment1 (1&lt;&lt;PC0)<br />#define segment2 (1&lt;&lt;PC1)<br />#define segment3 (1&lt;&lt;PC2)<br />#define segment4 (1&lt;&lt;PC3)<br />#define ledDots (1&lt;&lt;PD3)<br /><br />void ledDis_pcf8574Init(uint8_t _adress)<br />{<br />adress =_adress;<br /><br />DDRC |= segment1| segment2 |segment3| segment4;<br />//PORTC |= segment1| segment2 |segment3| segment4;<br />DDRD |= ledDots;<br />}<br />void ledDis_displayNumber(uint8_t number)<br />{<br />TWI_start();<br />TWI_write(adress);<br />TWI_write(numberPattern&#91;number&#93;);<br />TWI_stop();<br />}<br />void ledDis_setNumber(uint8_t a,uint8_t b)<br />{<br />if(a&lt;10)<br />{<br />segmentsDigit&#91;0&#93;= 0;<br />segmentsDigit&#91;1&#93;= a;<br />}<br />else<br />{<br />segmentsDigit&#91;0&#93; = (int) a/10;<br />segmentsDigit&#91;1&#93; = a%10;<br />}<br />if(b&lt;10)<br />{<br />segmentsDigit&#91;2&#93;= 0;<br />segmentsDigit&#91;3&#93;= b;<br />}<br />else<br />{<br />segmentsDigit&#91;2&#93; = (int) b/10;<br />segmentsDigit&#91;3&#93; = b%10;<br />}<br />}<br />void ledDis_dotsBlink()<br />{<br />PORTD ^= ledDots;<br />}<br />void clearSegments()<br />{<br />PORTC &amp;= ~0b00001111;<br />}<br />void ledDis_refreshDisplay()<br />{<br />clearSegments();<br />ledDis_displayNumber(segmentsDigit&#91;recentSegment&#93;);<br />PORTC |= (1&lt;&lt;recentSegment);<br /><br />recentSegment++;<br />if(recentSegment==4)<br />recentSegment=0;<br />}[/syntax]<br />rtc.c<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;../I2C_TWI/i2c_twi.h&quot;<br /><br />uint8_t adress;<br />uint8_t valueTemp;<br /><br />uint8_t time&#91;3&#93;;<br /><br />uint8_t dec2bcd(uint8_t dec)<br />{<br />return ((dec / 10)&lt;&lt;4) | (dec % 10);<br />}<br />uint8_t bcd2dec(uint8_t bcd)<br />{<br />    return ((((bcd) &gt;&gt; 4) &amp; 0x0F) * 10) + ((bcd) &amp; 0x0F);<br />}<br />void rtc_Init(uint8_t x)<br />{<br />adress = x;<br />}<br />uint8_t rtc_getSeconds()<br />{<br />return bcd2dec( time&#91;0&#93;);<br />}<br />uint8_t rtc_getMinutes()<br />{<br />return bcd2dec( time&#91;1&#93;);<br />}<br />uint8_t rtc_getHours()<br />{<br />return bcd2dec( time&#91;2&#93;);<br />}<br />void rtc_readTime()<br />{<br />TWI_read_buf(adress, 0x02, 3, time );<br />}<br />void  rtc_setTime(uint8_t a, uint8_t b)<br />{<br />time&#91;0&#93; = 0;<br />time&#91;1&#93; = dec2bcd(b);<br />time&#91;2&#93; = dec2bcd(a);<br /><br />TWI_write_buf(adress, 0x02, 3, time);<br />}<br />void rtc_setSeconds(uint8_t sec)<br />{<br />time&#91;0&#93; = sec;<br />TWI_start();<br />TWI_write(adress);<br />TWI_write(0x02);<br />TWI_write(dec2bcd(sec));<br />TWI_stop();<br />}[/syntax]<br /><br />Biblioteki do obsługi modułów pisałem w oparciu o kody z DVD.<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/1012/860129f100f887cea46ce7377af25d4e.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/1012/860129f100f887cea46ce7377af25d4e.jpg" alt="Obrazek" /></a><br /><br />Wybaczcie kod po angielsku <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=1012">dawidn47</a> — 29 paź 2013, o 00:17</p><hr />
]]></content>
</entry>
</feed>