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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-08-18T21:05:05+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=19011&amp;mode</id>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2017-08-18T21:05:05+01:00</updated>
<published>2017-08-18T21:05:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19011&amp;p=193591#p193591</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19011&amp;p=193591#p193591"/>
<title type="html"><![CDATA[Re: Problem z OLED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19011&amp;p=193591#p193591"><![CDATA[
Odpowiedź naniosłem w komentarzu w kodzie.<br /><br /><div class="quotetitle">jez2000 napisał(a):</div><div class="quotecontent"><br />[syntax=c]void mk_ssd1306_refresh_page(uint8_t page_nr, uint8_t pages_cnt, uint8_t col_start, uint8_t col_end){<br /><br /><br />uint8_t page_cnt, col_cnt;<br />uint8_t *ram_buf_start;<br /><br />for(page_cnt = page_nr; page_cnt &lt; (page_nr + pages_cnt); page_cnt++){<br /><br />ssd1306_cmd( SSD1306_SETLOWCOLUMN | (col_start &amp; 0x0F));<br />ssd1306_cmd( SSD1306_SETHIGHCOLUMN | col_start &gt;&gt; 4);<br /><br />//====================== TU MASZ BŁĄD=========================================================<br />ssd1306_cmd( 0xB0 + pages_cnt);// powinno być &quot;page_cnt&quot; a nie &quot;pages_cnt&quot; !!!!<br />//=============== SUBTELNA RÓŻNICA A WIELE ZMIENIA============================================<br /><br />ram_buf_start = &amp;ssd1306_buf&#91;(page_cnt*128) + col_start&#93;;<br /><br />DC_HI;<br /><br />#if USE_CS == 1<br />#if USE_CS2 == 0<br />CS_LO;<br />#else<br />if(!display_nr) CS_LO;<br />else CS2_LO<br />#endif<br />#endif<br /><br /><br />for(col_cnt = col_start; col_cnt &lt; col_end; col_cnt++ ){<br />ssd1306_data(*ram_buf_start++);<br />}<br />}<br /><br />}[/syntax]<br /></div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 18 sie 2017, o 21:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jez2000]]></name></author>
<updated>2017-08-17T22:03:25+01:00</updated>
<published>2017-08-17T22:03:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19011&amp;p=193541#p193541</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19011&amp;p=193541#p193541"/>
<title type="html"><![CDATA[Problem z OLED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19011&amp;p=193541#p193541"><![CDATA[
Cześć.<br /><br />Oglądam poradniki p. Mirka o wyświetlaczach OLED i przepisuję kod próbując go zrozumieć. Napotkałem problem przy funkcji <strong>mk_ssd1306_refresh_page</strong>. otóż: gdy mam taki kod w funkcji while(1):<br /><br />[syntax=c]for(i = 130, k = -180; i&gt;-300; i--, k++){<br /><br />        mk_ssd1306_puts(i,page5*8,&quot;ATNEL Miroslaw Kardas&quot;,1,1,0);<br />        mk_ssd1306_drawFastVLine(k-1, page6*8, 16,0);<br />        mk_ssd1306_puts(k,page6*8,&quot;www.forum.atnel.pl&quot;,1,1,0);<br /><br />        ssd1306_display();<br />        }[/syntax]<br /><br />działa prawidłowo i wyświetla w odpowiednich liniach, <strong>5 oraz 6</strong> Natomiast jeżeli zrobię odświeżanie poszczególnej linii w ten sposób:<br /><br />[syntax=c]for(i = 130, k = -180; i&gt;-300; i--, k++){<br /><br />        mk_ssd1306_puts(i,page5*8,&quot;ATNEL Miroslaw Kardas&quot;,1,1,0);<br />        mk_ssd1306_drawFastVLine(k-1, page6*8, 16,0);<br />        mk_ssd1306_puts(k,page6*8,&quot;www.forum.atnel.pl&quot;,1,1,0);<br /><br />//        ssd1306_display();<br />        mk_ssd1306_refresh_page(page5, 1, 0, 127);<br />        }[/syntax]<br /><br />Wtedy napis &quot;ATNEL Miroslaw Kardaś&quot; <strong>wyświetla w linii 1</strong>, na żółtym tle.<br /><br />Przeglądnąłem funkcję  mk_ssd1306_refresh_page ale nie znalazłem błędu, nie wiem czy po prostu nie znalazłem a gdzieś jest i go nie widzę czy problem leży gdzie indziej<br /><br />[syntax=c]void mk_ssd1306_refresh_page(uint8_t page_nr, uint8_t pages_cnt, uint8_t col_start, uint8_t col_end){<br /><br /><br />uint8_t page_cnt, col_cnt;<br />uint8_t *ram_buf_start;<br /><br />for(page_cnt = page_nr; page_cnt &lt; (page_nr + pages_cnt); page_cnt++){<br /><br />ssd1306_cmd( SSD1306_SETLOWCOLUMN | (col_start &amp; 0x0F));<br />ssd1306_cmd( SSD1306_SETHIGHCOLUMN | col_start &gt;&gt; 4);<br />ssd1306_cmd( 0xB0 + pages_cnt);<br /><br />ram_buf_start = &amp;ssd1306_buf&#91;(page_cnt*128) + col_start&#93;;<br /><br />DC_HI;<br /><br />#if USE_CS == 1<br />#if USE_CS2 == 0<br />CS_LO;<br />#else<br />if(!display_nr) CS_LO;<br />else CS2_LO<br />#endif<br />#endif<br /><br /><br />for(col_cnt = col_start; col_cnt &lt; col_end; col_cnt++ ){<br />ssd1306_data(*ram_buf_start++);<br />}<br />}<br /><br />}[/syntax]<br /><br />W poradniku P. Mirek opisuje wyświetlacz na SPI, mam tylko na I2C. Funkcję TWIwrite() mam zastąpioną funkcją ssd1306_data() - być może to jest błąd. Wiecei może??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11828">jez2000</a> — 17 sie 2017, o 22:03</p><hr />
]]></content>
</entry>
</feed>