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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-04-07T16:19:09+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2807&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-04-07T16:19:09+01:00</updated>
<published>2013-04-07T16:19:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33718#p33718</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33718#p33718"/>
<title type="html"><![CDATA[Re: I2C PCF8574]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33718#p33718"><![CDATA[
<div class="quotetitle">acid3 napisał(a):</div><div class="quotecontent"><br />... i za każdym razem kiedy czytam o obsłudze I2C to mam wrażenie, że autor zbyt mocno wierzy w szybkość pojmowania niektórych rzeczy przez użytkowników. Z jednej strony jest tam całkiem spory opis ale jakoś nie mogę tego zrozumieć.....<br /></div><br /><br />hmm no bardzo mi przykro, ale to może troszkę niesprawiedliwy osąd że ja wierzę że ktoś szybko czy tam wolno czy jakoś coś pojmie. Opisuję jak potrafię - ale czy to oznacza, że do każdego dotrę ? pewnie nie i być może tu mamy taki przykład.<br /><br />Jednak nie rozumiem w takiej sytuacji zachowania polegającego na tym, że kolega nawet nie spróbuje kodów dołączonych na DVD bo sądząc po błędzie, który kolega wyżej opisał - domniemuję że co najwyżej próbujesz przepisywać z książki a gdy coś nie wyjdzie to się poddajesz za szybko zamiast:<br /><br />1. jeszcze raz mówię - sięgnąć do sprawdzonych i mozolnie przygotowywanych przeze mnie kodów na DVD a też przecież tworzony były z myślą o edukacji w tym zakresie - sam bowiem często mam tak, że gdy mi coś z jakąś książką nie wychodzi to chciałbym mieć poprawnie działający kod na płycie aby przetestować czy gdzieś po prostu literówka mnie nie zgubiła przy przepisywaniu z książki. Jak widzisz książkę pisałem tak - jakbym chciał sam widzieć ją gdy się uczyłem podstaw<br /><br />2. skoro nie działa przykład z książki  to ja na twoim miejscu zamiast szukać innych bibliotek z netu postarałbym się albo skontaktować z autorem (ja nie unikam kontaktów i potwierdzi to wiele osób), albo zajrzał np na to forum i dopytał o to czego nie rozumiem bo i tu staram się udzielać ale jak widać nie tylko ja - jest tu także na szczęście już mnóstwo osób, które pomagają chętnie<br /><br />i wtedy na prawdę przy takim wsparciu oraz przy poradnikach które piszę na blogu czy poradnikach video do książek które tworzę na youtube - można się spokojnie i w swoim tempie uczyć.  Ja sam nie jestem żadnym geniuszem i jeszcze nigdy w życiu nie udało mi się opanować jakiegoś języka programowania na podstawie jednego czy dwóch czytań książki , ba żeby tylko jednej książki<br /><br />teraz się staram nauczyć Javy dla Androida - i mam masakrę, pomimo że mam już pod ręką 5 czy 6 książek - a idzie mi to jak krew z nosa przy czym ZERO wsparcia od autorów czy jakichś kodów z płyt dołączonych do książek .....<br /><br />reasumując - każdy uczy się w swoim tempie i ja nikogo nie staram się poganiać ale zachęcam do skorzystania z wielu kanałów wspomagających - tyle że jak widać nie wszyscy (ku mojemu zdumieniu) chcą z nich skorzystać <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> - wtedy to już nic nie poradzę, a z uwagi na to co robię nie mam aż tyle czasu aby analizować inne biblioteki i proszę się za to na mnie nie gniewać.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br /><div class="quotetitle">acid3 napisał(a):</div><div class="quotecontent"><br />Rzeczywiście średnika nie było. Kompilator (Eclipse + WINAVR) nie zgłaszał błędów.  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /><br /></div><br /><br />To że nie było średnika - nie było żadnym błędem z punktu syntaktyki języka C - dlatego kompilator nie zgłaszał błędu. To był błąd logiczny programisty - często się przydarza <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> chyba każdemu z nas .... kiedyś się takie coś przydarzyło więc nie ma co się martwić. Bez średnika - pętla wykonywała, kolejną instrukcję.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 7 kwi 2013, o 16:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[acid3]]></name></author>
<updated>2013-04-07T15:58:20+01:00</updated>
<published>2013-04-07T15:58:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33715#p33715</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33715#p33715"/>
<title type="html"><![CDATA[Re: I2C PCF8574]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33715#p33715"><![CDATA[
Rzeczywiście średnika nie było. Kompilator (Eclipse + WINAVR) nie zgłaszał błędów.  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> <br />Program dalej działa dokładnie tak samo.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=944">acid3</a> — 7 kwi 2013, o 15:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-04-07T15:45:18+01:00</updated>
<published>2013-04-07T15:45:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33712#p33712</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33712#p33712"/>
<title type="html"><![CDATA[Re: I2C PCF8574]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33712#p33712"><![CDATA[
<div class="quotetitle">acid3 napisał(a):</div><div class="quotecontent"><br />unsigned char pcf8574_send_start (void)<br />{<br />        /*writing a one to TWINT clears it, TWSTA=Start, TWEN=TWI-enable*/<br />        TWCR = (1&lt;&lt;TWINT) | (1&lt;&lt;TWEN) | (1&lt;&lt;TWSTA);<br />        /*wait, until start condition has been sent --&gt; ACK*/<br />        while (!(TWCR&amp;(1&lt;&lt;TWINT)))<br />        return TWSR;<br />}<br /></div><br />Brak średnika za while() w tym przypadku jest błędem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 7 kwi 2013, o 15:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[acid3]]></name></author>
<updated>2013-04-07T15:36:06+01:00</updated>
<published>2013-04-07T15:36:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33711#p33711</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33711#p33711"/>
<title type="html"><![CDATA[Re: I2C PCF8574]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33711#p33711"><![CDATA[
W kwestii książek - bardzo niedawno zakupiłem obydwie Pana książki i za każdym razem kiedy czytam o obsłudze I2C to mam wrażenie, że autor zbyt mocno wierzy w szybkość pojmowania niektórych rzeczy przez użytkowników. Z jednej strony jest tam całkiem spory opis ale jakoś nie mogę tego zrozumieć.<br /><br />Przy użyciu funkcji TWI_write_buf() program zatrzymuje się na poleceniu <br /><br /><strong>while (len--) TWI_write(*buf++);</strong><br /><br />w main.c <br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/twi.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;I2C_TWI/i2c_twi.h&quot;<br /><br />#define PCF 0x40<br /><br />uint8_t bufor&#91;1&#93; = { 0b11111111 };<br /><br />int main(void) {<br /><br />lcd_init();<br />i2cSetBitrate(100);<br />TWI_write_buf (PCF, 0x00, sizeof(bufor), bufor);<br /><br />while (1) {<br />_delay_ms(100);<br /><br />TWI_read_buf(PCF, 0, 0, bufor);<br />}<br />}[/syntax]<br /><br />Adres bajtu do odczytu (0x00) powinien być raczej dobry, dlatego że pcf8754.c bezbłędnie odczytuje wartości przy użyciu tego adresu.<br /><br />I jest to dla mnie podobna &quot;czarna dziura&quot; co z wykorzystaniem biblioteki pcf8754.c.<br /><br />Po prostu nie rozumiem dlaczego tak się dzieje i nie wiem gdzie szukać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=944">acid3</a> — 7 kwi 2013, o 15:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-04-07T13:50:32+01:00</updated>
<published>2013-04-07T13:50:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33705#p33705</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33705#p33705"/>
<title type="html"><![CDATA[Re: I2C PCF8574]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33705#p33705"><![CDATA[
ok, .... ja jednak nie jestem w stanie analizować tej całej biblioteki do obsługi a szczególnie z tymi unsigned coś tam niepotrzebnie się wciąż plączącymi .... ale ok też się tego nie czepiam - skoro kolega uważa że wszystko ok to dobrze...<br /><br />ja jednak polecałbym użyć bibliotek do obsługi I2C z książki<br /><br /><!-- m --><a class="postlink" href="http://atnel.pl/mikrokontrolery-avr-jezyk-c.html" >http://atnel.pl/mikrokontrolery-avr-jezyk-c.html</a><!-- m --><br /><br />bo sam na tych bibliotekach kiedyś robiłem sobie obsługę tych scalaków - i nie odnotowałem żadnych nawet najmniejszych kłopotów.... <br /><br />ale może ktoś z forum jak będzie miał tyle czasu to popatrzy w tą bibliotekę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 7 kwi 2013, o 13:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[acid3]]></name></author>
<updated>2013-04-07T13:43:26+01:00</updated>
<published>2013-04-07T13:43:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33703#p33703</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33703#p33703"/>
<title type="html"><![CDATA[Re: I2C PCF8574]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33703#p33703"><![CDATA[
Ogólnie całe urządzenie jest znacznie większe. W ATMega zabrakło - portów stąd ekspander. Diody są częścią układu, ale na tą chwilę są zupełnie nie istotne. <br /><br />Typy unsigned char są - dlatego że jest to gotowa biblioteka obsługi pcf8574.<br />Próbowałem zmieniać na uin8_t ale to nic nie zmieniło, więc powróciłem do oryginału.<br /><br />INT nie jest mi potrzebne w tej chwili gdyż cały program i całe urządzenie będzie bardziej skomplikowane. Teraz chciałem tylko &quot;ogarnąć&quot; obsługę tego scalaczka (PCF8574).<br /><br />Rysowanie schematu .....<br />Nie mogę nauczyć się EAGLE'a - mam niezbyt dużo czasu i raczej poświęcam go na próby nauczenia się &quot;pROGRAMOWANIA&quot;.<br />Proteusa trochę znam i potrafię go wykorzystywać jako symulator - stąd schemat w Proteusie.<br /><br />Panie Mirku czekam na kolejną książkę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=944">acid3</a> — 7 kwi 2013, o 13:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-04-07T13:34:19+01:00</updated>
<published>2013-04-07T13:34:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33701#p33701</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33701#p33701"/>
<title type="html"><![CDATA[Re: I2C PCF8574]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33701#p33701"><![CDATA[
Ja proponuję koledze jak najszybciej pożegnać się z tymi kocimi typami<br /><br />unsigned char <br /><br />w avr gcc na rzecz przeznaczonych do tego<br /><br />uint8_t<br /><br />poza tym proszę mi podpowiedzieć co na tym schemacie robią te nie podłączone diody LED?<br /><br />dlaczego kolega nie używa tak ważnego fiuczeru tego scalaka jak INT aby odczytywać np klawisze tylko gdy naciśnięty?<br /><br />jeśli chodzi o rysowanie schematów to polecam prościutkiego i lekkiego Eagla wraz z tym poradnikiem:<br /><br /><!-- m --><a class="postlink" href="http://goo.gl/A91tD" >http://goo.gl/A91tD</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 7 kwi 2013, o 13:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[acid3]]></name></author>
<updated>2013-04-07T10:06:26+01:00</updated>
<published>2013-04-07T10:06:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33672#p33672</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33672#p33672"/>
<title type="html"><![CDATA[I2C PCF8574]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2807&amp;p=33672#p33672"><![CDATA[
Witam<br /><br />Na wstępie chciałbym prosić o wyrozumiałość jeśli popełnię jakieś błędy <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Jest to mój pierwszy wątek. <br /><br />Mój problem to najstarszy bit w układzie PCF8574.<br /><br />Przy odczytywaniu nie ma najmniejszego problemu.<br />Przy wpisywaniu do układu samych 1, też nie ma problemu.<br />Przy wpisaniu do układu 0 nie ma problemu przy bitach 0-6.<br />Przy bicie 7, bez względu na sposób jego wpisania - czy to przycisk zwarty do masy czy wpisanie programowe układ &quot;kończy&quot; pracę w pętli [syntax=c]while (!(TWCR&amp;(1&lt;&lt;TWINT)))[/syntax] <br /><br />Wartość rejestru TWCR podczas &quot;zapętlenia się&quot; to 00100100.<br /><br />w funkcji <strong><span style="color: #BF0080">unsigned char</span> pcf8754_send_start (<span style="color: #BF0080">void</span>)</strong><br /><br />Ta funkcja jest dokładnie taka sama jak systemowa TWI_start() .<br /><br />plik pcf8754.c jest w zasadzie kopią ogólnie przyjętej obsługi sprzętowej I2C. Dodatkowo są tylko funkcje <em>set_inputs</em> i <em>get_inputs</em>.<br /><br />oto jego źródło:<br />[syntax=c]#include &quot;pcf8574.h&quot;<br /><br /><br />void pcf8574_init (void)<br />{<br />/*set bus speed*/<br />TWBR = 0x10;<br />}<br /><br /><br />unsigned char pcf8574_send_start (void)<br />{<br />/*writing a one to TWINT clears it, TWSTA=Start, TWEN=TWI-enable*/<br />TWCR = (1&lt;&lt;TWINT) | (1&lt;&lt;TWEN) | (1&lt;&lt;TWSTA);<br />/*wait, until start condition has been sent --&gt; ACK*/<br />while (!(TWCR&amp;(1&lt;&lt;TWINT))) <br />return TWSR;<br />}<br /><br /><br />void pcf8574_send_stop (void)<br />{<br />/*writing a one to TWINT clears it, TWSTO=Stop, TWEN=TWI-enable*/<br />TWCR = (1&lt;&lt;TWINT) | (1&lt;&lt;TWEN) | (1&lt;&lt;TWSTO) ;<br />}<br /><br /><br />unsigned char pcf8574_send_add_rw (unsigned char address, unsigned char rw)<br />{<br />/*address can be 0 .. 8; rw=0 --&gt; write, rw=1 --&gt; read*/<br />unsigned char addr_byte = 0;<br />/*shift address one bit left*/<br />addr_byte = address &lt;&lt; 1;<br />/*set RW-Bit, if necessary*/<br />addr_byte |= rw;<br />/*0b0100xxx0 --&gt; address of Expander*/<br />addr_byte |= 0b01000000;<br />/*TWDR contains byte to send*/<br />TWDR = addr_byte;<br />/*send content of TWDR*/<br />TWCR = (1&lt;&lt;TWINT) | (1&lt;&lt;TWEN);<br />/*wait, until address has been sent --&gt; ACK*/<br />while (!(TWCR &amp; (1&lt;&lt;TWINT)));<br />return TWSR;<br />}<br /><br /><br />unsigned char pcf8574_send_byte (unsigned char byte)<br />{<br />/*TWDR contains byte to send*/<br />TWDR = byte;<br />/*send content of TWDR*/<br />TWCR = (1&lt;&lt;TWINT) | (1&lt;&lt;TWEN);<br />/*wait, until byte has been sent --&gt; ACK*/<br />while (!(TWCR &amp; (1&lt;&lt;TWINT)));<br />return TWSR;<br />}<br /><br /><br />unsigned char pcf8574_read_byte (void)<br />{<br />/*send content of TWDR; TWEA = enable ACK*/<br />TWCR = (1&lt;&lt;TWINT) | (1&lt;&lt;TWEA) | (1&lt;&lt;TWEN);<br />/*wait, until byte has been received --&gt; ACK*/<br />while (!(TWCR &amp; (1&lt;&lt;TWINT)));<br />return TWDR;<br />}<br /><br /><br />unsigned char pcf8574_get_inputs (unsigned char address)<br />{<br />pcf8574_init ();<br />lcd_locate(0,0);<br />lcd_str(&quot;init&quot;);<br /><br />pcf8574_send_start ();<br />lcd_locate(0,0);<br />lcd_str(&quot;start&quot;);<br /><br />pcf8574_send_add_rw (address, 1);<br />lcd_locate(0,0);<br />lcd_str(&quot;addres,rw&quot;);<br /><br />unsigned char input = pcf8574_read_byte ();<br />lcd_locate(0,0);<br />lcd_str(&quot;input = pcf bajt&quot;);<br /><br />pcf8574_send_stop ();<br />lcd_locate(0,0);<br />lcd_str(&quot;stop&quot;);<br /><br />return input;<br />}<br /><br /><br />void pcf8574_set_outputs (unsigned char address, unsigned char byte)<br />{<br />pcf8574_init ();<br />pcf8574_send_start ();<br />pcf8574_send_add_rw (address, 0);<br />pcf8574_send_byte (byte);<br />pcf8574_send_stop ();<br />}[/syntax]<br /><br />Funkcje lcd_locate i lcd_str są tu dopisane przeze mnie i służą jako debuger <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Plik main.c :<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 05-04-2013<br /> *      Author: acid3<br /> */<br /><br /><br />#include &lt;avr/io.h&gt;<br /><br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;LCD/lcd44780.h&quot;<br /><br />#include &quot;pcf8574.h&quot;<br /><br /><br />unsigned char bufor;<br /><br />int main(void) {<br /><br /><br />lcd_init();<br /><br /><br />pcf8574_set_outputs(0, 0xFF);<br /><br /><br />while(1) {<br /><br />bufor = pcf8574_get_inputs(0);<br />_delay_ms(100);<br />lcd_locate(1,0);<br />for (int i=0; i&lt;8; i++)<br />{<br />if (bufor &amp; (1&lt;&lt;7-i))<br />lcd_str(&quot;1&quot;);<br />else<br />lcd_str(&quot;0&quot;);<br />}<br /><br />}<br />}[/syntax]<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/944/f64a509afa9a180d3d33194d2e71b785.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/944/f64a509afa9a180d3d33194d2e71b785.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=944">acid3</a> — 7 kwi 2013, o 10:06</p><hr />
]]></content>
</entry>
</feed>