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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-05-21T19:19:07+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=15424&amp;mode</id>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2016-05-21T19:19:07+01:00</updated>
<published>2016-05-21T19:19:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15424&amp;p=160979#p160979</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15424&amp;p=160979#p160979"/>
<title type="html"><![CDATA[Re: SSD1306 OLED I2C Jak odczytać bajt]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15424&amp;p=160979#p160979"><![CDATA[
Wydaje mi się, że powinno się dać odczytać bajt z wyświetlaczy OLED. <br />Kwestia jest tylko taka jak to zapisać aby działało.<br /><br />Odnośnie Twojej sugestii, to odczyt po i2c powinien odbywać się zgodnie z poniższym rysunkiem:<br /><a href="https://obrazkiforum.atnel.pl/766/c11ed3bcc1eb0eef5b548224bd999be2.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/766/c11ed3bcc1eb0eef5b548224bd999be2.png" alt="Obrazek" /></a><br /><br />co po przełożeniu na c powinno wyglądać tak:<br />[syntax=c]uint8_t Read_data(uint8_t lcd_adr)<br />{<br />        uint8_t tem;<br /> <br />        TWI_start(); //wyślij start<br />        TWI_write(lcd_adr); //adres slave<br /> <br />//Prawdopodobnie tu jest gdzieś błąd<br />        TWI_write(0x00); //komenda<br />        TWI_write(0xb0); //ustaw pierwszą stronę <br /> <br />        TWI_start(); // ponownie start<br />        TWI_write(lcd_adr + 1); //komenda odczyt (adres +1)<br />        tem = TWI_read( NACK ); //potwierdzenie odebrania<br />        TWI_stop();<br />        return tem;<br />}[/syntax]<br /><br />Wydaje się, że jest dobrze ale mimo wszystko gdzieś jest błąd <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":-(" title="Smutny" /><br /><br /><span style="color: #40BF00">--&gt;&gt; SunRiver nie mam pojęcia jak to się stało, że post założył się w nieodpowiednim miejscu. <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> Dzięki za przeniesienie. </span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 21 maja 2016, o 19:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[eMCe2]]></name></author>
<updated>2016-05-21T10:42:13+01:00</updated>
<published>2016-05-21T10:42:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15424&amp;p=160961#p160961</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15424&amp;p=160961#p160961"/>
<title type="html"><![CDATA[Re: SSD1306 OLED I2C Jak odczytać bajt]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15424&amp;p=160961#p160961"><![CDATA[
A moze się nie da? W manualu jest takie stwierdzenie...<br /><br />&quot;...<br />To read data from the GDDRAM, select HIGH for both the R/W# (WR#) pin and the D/C# pin for 6800-<br />series parallel mode and select LOW for the E (RD#) pin and HIGH for the D/C# pin for 8080-series parallel<br />mode. <strong>No data read is provided in serial mode operation.</strong><br />...&quot;<br />Aczkolwiek na I2C jest niby bit R/W... moze to się tylko SPI dotyczy...<br /><br />A samo tak nie zadziala?<br />[syntax=c]uint8_t Read_data(uint8_t lcd_adr)<br />{<br />        uint8_t tem;<br /> <br />        TWI_start(); //wyślij start<br />        TWI_write(lcd_adr +1); //adres slave<br />        TWI_write(0x00); // rejestr do odczytu<br />        tem = TWI_read( NACK ); //potwierdzenie<br />        TWI_stop();<br />        return tem;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1363">eMCe2</a> — 21 maja 2016, o 10:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2016-05-20T22:27:40+01:00</updated>
<published>2016-05-20T22:27:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15424&amp;p=160954#p160954</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15424&amp;p=160954#p160954"/>
<title type="html"><![CDATA[SSD1306 OLED I2C Jak odczytać bajt]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15424&amp;p=160954#p160954"><![CDATA[
Witam,<br />Generalnie jak w temacie. Jak odczytać bajt z danej strony (page) z pozycji 'x' ?<br /><br />Komunikacja zrealizowana jest za pomocą magistrali sprzętowej TWI. Wszystko działa poprawnie. Mogę wysyłać znaki wyrazy pod wskazany adres.<br />Natomiast nie wiem jak zrealizować odczyt. <br />Np. mam wysłany bajt 0xFF(pałka) pod współrzędne 0,0 (lewy górny róg) teraz chciałbym go odczytać z wyświetlacza i wyświetlić w innym położeniu. <br />Będę wdzięczny za sugestie/podpowiedzi. <br /><br />Używane funkcje:<br />[syntax=c]void Send_command(uint8_t cmd)<br />{<br />TWI_start();<br />TWI_write(lcd_adr);<br />TWI_write(0x00);<br />TWI_write(cmd);<br />TWI_stop();<br />}<br />void Send_data(uint8_t dat)<br />{<br />TWI_start();<br />TWI_write(lcd_adr);<br />TWI_write(0x40);<br />TWI_write(dat);<br />TWI_stop();<br />}<br /><br />uint8_t Read_data(uint8_t lcd_adr)<br />{<br />uint8_t tem;<br /><br />TWI_start(); //wyślij start<br />TWI_write(lcd_adr); //adres slave<br /><br />TWI_write(0x00); //komenda<br />TWI_write(0xb0); //ustaw pierwszą stronę <br /><br />TWI_start(); // ponownie start <br />TWI_write(lcd_adr + 1); //komenda odczyt <br />tem = TWI_read( NACK ); //potwierdzenie<br />TWI_stop();<br />return tem;<br />}<br /><br />void locate_lcd(uint8_t x, uint8_t y)<br />{<br />TWI_start();<br />TWI_write(lcd_adr);<br />TWI_write(0x00);<br /><br />if(y&gt;=0 &amp;&amp; y&lt;=8)   TWI_write(0xb0);<br />if(y&gt;=9 &amp;&amp; y&lt;=16)  TWI_write(0xb1);<br />if(y&gt;=17 &amp;&amp; y&lt;=24) TWI_write(0xb2);<br />if(y&gt;=25 &amp;&amp; y&lt;=32) TWI_write(0xb3);<br />if(y&gt;=33 &amp;&amp; y&lt;=40) TWI_write(0xb4);<br />if(y&gt;=41 &amp;&amp; y&lt;=48) TWI_write(0xb5);<br />if(y&gt;=49 &amp;&amp; y&lt;=56) TWI_write(0xb6);<br />if(y&gt;=58 &amp;&amp; y&lt;=64) TWI_write(0xb7);<br /><br />TWI_write(((x &amp; 0xf0) &gt;&gt; 4) | 0x10);<br />TWI_write((x &amp; 0x0f));<br />TWI_stop();<br />}<br /><br />void TWI_start(void) {<br />TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN)|(1&lt;&lt;TWSTA);<br />while (!(TWCR&amp;(1&lt;&lt;TWINT)));<br />}<br /><br />void TWI_stop(void) {<br />TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN)|(1&lt;&lt;TWSTO);<br />while ( (TWCR&amp;(1&lt;&lt;TWSTO)));<br />}<br /><br />void TWI_write(uint8_t bajt) {<br />TWDR = bajt;<br />TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN);<br />while ( !(TWCR&amp;(1&lt;&lt;TWINT)));<br />}<br /><br />uint8_t TWI_read(uint8_t ack) {<br />TWCR = (1&lt;&lt;TWINT)|(ack&lt;&lt;TWEA)|(1&lt;&lt;TWEN);<br />while ( !(TWCR &amp; (1&lt;&lt;TWINT)));<br />return TWDR;<br />}[/syntax]<br /><br /><br /><span style="color: #FF0000"><strong>[b]Czy to naprawdę takie trudne by ze zrozumieniem czytać nawy działów chociaż , jak się już nie chce czytać zasad na forum ??  Jaki to jest poradnik panie kolego ??  następnym razem za umieszczenie postu w niewłaściwym dziale będzie<br />nagroda w postaci ostrzeżenia  --- <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic14999.html" >topic14999.html</a><!-- l -->   -- SunRiver</strong>[/b]</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 20 maja 2016, o 22:27</p><hr />
]]></content>
</entry>
</feed>