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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-10-29T11:20:31+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=12&amp;t=9009&amp;mode</id>
<entry>
<author><name><![CDATA[pawelkiwi]]></name></author>
<updated>2014-10-29T11:20:31+01:00</updated>
<published>2014-10-29T11:20:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9009&amp;p=101387#p101387</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9009&amp;p=101387#p101387"/>
<title type="html"><![CDATA[Re: OLED 0,96&quot; I2C - wyświetla od połowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9009&amp;p=101387#p101387"><![CDATA[
Problem nie dotyczy kodu w Bascomie.<br />Wysyłam po kolei inicjalizację wyświetlacza po I2C wzorując się na inicjalizacji Pana Mirka w C (ponieważ jestem poza domem nie mam dostępu do kodu w Bacomie bo bym załączył).<br />Post napisałem ponieważ czytając forum odnośnie uruchamiania OLED-a parę postów było właśnie o podobnym efekcie czyli rysowanie w pamięci nie było w lewym górnym rogu 0,0 tylko w połowie czyli 0,32.<br />Myślałem że ktoś mi podpowie mi co w inicjalizacji decyduje o takim sposobie początku rysowania.<br /><br />----<br />Problem rozwiązany.<br />1. Dorobienie resetu do LCD wg. opisu Pana Mirka pomaga w momencie dziwnych &quot;zwisów&quot; programowych wyświetlacza.<br />Objawiało się to tym że mimo już 100% dobrego programu wyświetlacz nie potrafił się zainicjalizować. Teraz inicjalizacja w 100% pewna. Tak więc nie tylko SPI ale i I2C ma te same bolączki. Do wylutowania elementy D1, R4, C7 i we wspólny punkt łączący te elementy na dole dolutować pin RST. Oczywiście w programie przy inicjalizacji na początku HI, LO, HI.<br />2. Resystory PullUp - wymagane wg. noty SSD1306 - u mnie okazały się być potrzebne przy jednym egzemplarzu, przy drugim nie ( obydwa OLED-y od Pana Mirka).<br />3.  Najważniejsze. Poprawna inicjalizacja. Nie będę pisał tylko załączę prawidłowy kod. Może się komuś przyda.<br /><br />[syntax=basic4gl]Sub Ini_display                                             'OLED INI<br />Res_oled Alias Portl.4                                      'RESET hardware oled na plytce<br />Config Res_oled = Output<br />Waitms 25<br />Reset Res_oled<br />Waitms 25<br />Set Res_oled<br />Waitms 25<br /><br /> I2cstart<br /> I2cwbyte Oled_address<br /> I2cwbyte &amp;HAE                                              'DISPLAY OFF<br /><br /> I2cwbyte &amp;HD5                                              'SETDISPLAYCLOCKDIV<br /> I2cwbyte &amp;HD0                                              'DISPLAY RATIO '80<br /><br /> I2cwbyte &amp;HD3                                              'DISPLAY 1/32 DUTY<br /><br /> I2cwbyte &amp;H20                                              'MEMORY MODE HORIZONTAL MODE 20<br /> I2cwbyte &amp;H00                                              'SET DISPLAY STARTLINE<br /><br /> I2cwbyte &amp;H40                                              'DISPLAY START AT 0<br /> I2cwbyte &amp;HA1                                              'REMAP 0-127<br /><br /> 'i2cwbyte &amp;HA2 'Display up/Down A0 o Down A8<br /><br /> I2cwbyte &amp;HC8                                              'SCAN DIRECTION C8 or C0<br /> I2cwbyte &amp;HDA                                              'COM PINS<br /><br /> I2cwbyte &amp;H10                                              'COM PINS 10<br /><br /> I2cwbyte &amp;HD9                                              'SETPRECHARGE set precharge period D9<br /> I2cwbyte &amp;HF1                                              '$22 - External, $F1 - Internal<br /><br /> I2cwbyte &amp;HDB                                              'vcomh deselect level<br /> I2cwbyte &amp;H40                                              'rtfm 20 o 40<br /><br /> I2cwbyte &amp;H8D                                              'enable charge pump<br /> I2cwbyte &amp;H14<br /> I2cwbyte &amp;H20                                              'at 14h = 20d<br /> I2cwbyte &amp;H00<br /><br /> I2cwbyte &amp;HA4                                              ' DISPLAY ON<br /> I2cwbyte &amp;HA6                                              '$A6=NORMAL MODE;$A7=INVERSE MODE<br /><br /> I2cwbyte &amp;HAF                                              ' DISPLAY ON<br /> Waitms 50<br /> I2cstop<br /> I2cstop<br />End Sub[/syntax]<br /><br />Pozdrawiam wszystkich.<br />Panie Mirku podgląd inicjalizacji u Pana przydał się + troszkę dodałem <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=1885">pawelkiwi</a> — 29 paź 2014, o 11:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-10-29T10:40:44+01:00</updated>
<published>2014-10-29T10:40:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9009&amp;p=101375#p101375</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9009&amp;p=101375#p101375"/>
<title type="html"><![CDATA[Re: OLED 0,96&quot; I2C - wyświetla od połowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9009&amp;p=101375#p101375"><![CDATA[
<div class="quotetitle">pawelkiwi napisał(a):</div><div class="quotecontent"><br />dział jest dobry<br /></div><br />ok przepraszam - spojrzałem tylko na kod ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 29 paź 2014, o 10:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[skalarro]]></name></author>
<updated>2014-10-29T10:23:38+01:00</updated>
<published>2014-10-29T10:23:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9009&amp;p=101369#p101369</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9009&amp;p=101369#p101369"/>
<title type="html"><![CDATA[Re: OLED 0,96&quot; I2C - wyświetla od połowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9009&amp;p=101369#p101369"><![CDATA[
Wrzucasz wycinek kodu Mirkowego w C i liczysz ze ktoś znajdzie błąd u Ciebie w Bascomie? Ja nie potrafię tak.  <br />Ale szukał bym raczej w okolicach set start line<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4850">skalarro</a> — 29 paź 2014, o 10:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pawelkiwi]]></name></author>
<updated>2014-10-29T09:49:20+01:00</updated>
<published>2014-10-29T09:49:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9009&amp;p=101360#p101360</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9009&amp;p=101360#p101360"/>
<title type="html"><![CDATA[OLED 0,96&quot; I2C - wyświetla od połowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9009&amp;p=101360#p101360"><![CDATA[
Witam !<br /><br />Proszę o pomoc.<br />Postanowiłem do mojego projektu dołożyć wyświetlacz OLED 0,96&quot; sterowany po I2C.<br />Ponieważ program napisany w bascomie przepisałem procedurę inicjalizacji wg. kodu z C<br /><br /><span style="color: #FF0000">[ panie kolego a zapoznałeś się najpierw z tym: <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7402.html" >topic7402.html</a><!-- l --> ??? ... czyli jak prawidłowo umieszczać kod na forum? .... druga sprawa, czy tak na chybił trafił wybierasz dział w którym piszesz post ? <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> ... bo co ma ten wątek wspólnego z działem &quot;Bascom AVR&quot; ? - ok popraw najpierw kod wg tej instrukcji z linku - mirekk36 ]</span><br /><br />[syntax=c]mk_ssd1306_cmd(SSD1306_DISPLAYOFF);             //0xAE<br />        mk_ssd1306_cmd(SSD1306_SETDISPLAYCLOCKDIV);     // 0xD5<br />        //mk_ssd1306_cmd(0x80);                                         // the suggested ratio 0x80 dolozone<br />        mk_ssd1306_cmd(refresh);<br /> <br />        mk_ssd1306_cmd(SSD1306_SETMULTIPLEX);           // 0xA8 dolozone<br />        mk_ssd1306_cmd(0x3F);                                           //dolozone<br /> <br />        mk_ssd1306_cmd(SSD1306_SETDISPLAYOFFSET);       // 0xD3<br />        mk_ssd1306_cmd(0x0);                                            // no offset<br />        mk_ssd1306_cmd(SSD1306_SETSTARTLINE | 0x0);     // line #0<br />        mk_ssd1306_cmd(SSD1306_CHARGEPUMP);             // 0x8D<br /> <br />        if (vcc== SSD1306_EXTERNALVCC)  mk_ssd1306_cmd(0x10);<br />        else    mk_ssd1306_cmd(0x14);<br /> <br />        mk_ssd1306_cmd(SSD1306_MEMORYMODE);             // 0x20<br />        mk_ssd1306_cmd(0x00);                                           // 0x0 act like ks0108<br />        mk_ssd1306_cmd(SSD1306_SEGREMAP | 0x1);<br />        mk_ssd1306_cmd(SSD1306_COMSCANDEC);<br /> <br />        mk_ssd1306_cmd(SSD1306_SETCOMPINS);             // 0xDA BRAKOWALO<br />        mk_ssd1306_cmd(0x12);                                           //BRAKOWALO<br />        mk_ssd1306_cmd(SSD1306_SETCONTRAST);            //0x81<br /> <br />        if (vcc== SSD1306_EXTERNALVCC)  mk_ssd1306_cmd(0x9F);<br />        else    mk_ssd1306_cmd(0xCF);<br /> <br />        mk_ssd1306_cmd(SSD1306_SETPRECHARGE);           // 0xd9<br /> <br />        if (vcc == SSD1306_EXTERNALVCC)<br />              { mk_ssd1306_cmd(0x22); }                         //BRAKUJE<br />        else<br />              { mk_ssd1306_cmd(0xF1); }                         //BRAKUJE[/syntax]<br /><br /><strong>Mój problem polega na tym że wyświetlacz zaczyna rysować od połowy w dół a potem od góry dalej w dół.</strong><br />Wiem że wg datasheet SSD1306 odpowiedzialny jest Set COM Pins Hardware Configuration (DAh) - tak mi się przynajmniej wydaje.<br />Próbowałem różnych ustawień może chaotycznie i nie potrafię tego ogarnąć.<br />Wszystko inne czyli samo wyświetlanie, regulacja kontrastu, inwersja, odświeżanie itd.<br />Problem tylko z ustawieniem adresu początku wyświetlania.<br /><br />pozdrawiam<br />Paweł<br /><br />ps. <br />wklejanie kodu poprawiłem<br />dział jest dobry<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1885">pawelkiwi</a> — 29 paź 2014, o 09:49</p><hr />
]]></content>
</entry>
</feed>