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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-11-03T16:03:58+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=9073&amp;mode</id>
<entry>
<author><name><![CDATA[MikieMan]]></name></author>
<updated>2014-11-03T16:03:58+01:00</updated>
<published>2014-11-03T16:03:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9073&amp;p=102163#p102163</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9073&amp;p=102163#p102163"/>
<title type="html"><![CDATA[Re: OLED po SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9073&amp;p=102163#p102163"><![CDATA[
W pliku mk_ssd1306.c w funkcji <strong>ssd1306_InitSpi</strong> w linii 76 powinno być: SCK_<strong>PORT</strong> |= SCK<br />To na pewno, będę szukał dalej.<br /><br />--------<br />EDIT:<br />Ach, spróbuj wykorzystać pin RST i podpiąć pod kolejny pin mikrokontrolera. Bez tego u mnie też nic się nie dzieje.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 35 minutach ]</span></strong><br /><br />Kolejny błąd w pliku mk_ssd1306.c.<br />Linie 128-131 powtarzają się w kolejnych liniach 133-136, ale to raczej nie ma znaczenia, po prostu dwa razy przesyłasz do kontrolera tę samą komendę.<br />Szukam dalej... o ile Córeczka mi pozwoli <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /><br />--------<br />EDIT:<br />Kolejny błąd w pliku biblioteki .h:<br />- linia 10: brak na końcu podkreślenia<br />- linie: 47, 50, 53, 56, 59 używasz znaku &quot;-&quot; minus zamiast tyldy &quot;~&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /><br />--------<br />EDIT:<br />Gwoździem do trumny był błąd w podstawowej funkcji SPIwrite.<br />W linijce 25 powinno być:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">for (i = 0x80; i; i &gt;&gt;= 1)</div> a Ty w warunku i &gt;&gt;= masz &quot;i&quot; zamiast &quot;1&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /><br />Mam nadzieję, że powyższe uwagi rozwiązują sprawę  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3503">MikieMan</a> — 3 lis 2014, o 16:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Harahido]]></name></author>
<updated>2014-11-03T15:30:51+01:00</updated>
<published>2014-11-03T15:30:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9073&amp;p=102156#p102156</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9073&amp;p=102156#p102156"/>
<title type="html"><![CDATA[Re: OLED po SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9073&amp;p=102156#p102156"><![CDATA[
Już poprawiłem. Wszystko z roztargnienia :/ <br /><br />@MirkoT<br />Odpowiedzi na te pytania są w pliku nagłówkowym <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=3452">Harahido</a> — 3 lis 2014, o 15:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MikieMan]]></name></author>
<updated>2014-11-03T15:03:47+01:00</updated>
<published>2014-11-03T15:03:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9073&amp;p=102152#p102152</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9073&amp;p=102152#p102152"/>
<title type="html"><![CDATA[Re: OLED po SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9073&amp;p=102152#p102152"><![CDATA[
Kolega dwa razy załączył nam plik biblioteki &quot;.c&quot; a brakuje poprawnej zawartości pliku nagłówkowego.<br />Czekamy zatem na prawidłowy plik .h <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=3503">MikieMan</a> — 3 lis 2014, o 15:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2014-11-03T09:51:21+01:00</updated>
<published>2014-11-03T09:51:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9073&amp;p=102135#p102135</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9073&amp;p=102135#p102135"/>
<title type="html"><![CDATA[Re: OLED po SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9073&amp;p=102135#p102135"><![CDATA[
Wiesz troszeczkę Ci się pomieszało co ma być w plikach .c a co w .h<br />Czy aby na pewno ten projekt kompiluje Ci się bez błędów? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><br />Gdzie masz definicje używanych pinów i używanych makr? <br />Zapomniałeś o nich czy zapomniałeś dołączyć jakiś pliczek? <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=189">MirkoT</a> — 3 lis 2014, o 09:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Harahido]]></name></author>
<updated>2014-11-03T15:29:34+01:00</updated>
<published>2014-11-02T22:35:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9073&amp;p=102094#p102094</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9073&amp;p=102094#p102094"/>
<title type="html"><![CDATA[OLED po SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9073&amp;p=102094#p102094"><![CDATA[
Witam,<br />Kupiłem wyświetlacz z sklepu atnelowskiego i zaczynam się nim bawić. Wybrałem ten zmodyfikowany - SPI. Biblioteki zacząłem pisać zgodnie z poradnikami na yt. Wszystko szło gładko, bez errorów i warningów. Zatrzymałem się na etapie, w którym widać pierwsze kropki na wyświetlaczu (śmieci z pamięci RAM). Otóż u mnie tego nie widać  <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" />  Gdzie popełniłem błąd? Nie chcę brnąć dalej dopóki tego nie naprawię. <br />mkAVRcalculatro wykrywa atmege16. Taktowania się zgadzają (te same z fusebitów i te same ustawione na eclipsie). <br />Podłączyłem (tak jak w poradniku):<br />sck- C7<br />MOSI-C6<br />CS-C5<br />D/C-C4<br />RST- C5<br /><br />Nie ma nigdzie wrzuconego kodu w postaci pliku .txt? Bardzo łatwo o błąd jak się tak przepisuje. Może to jednak wada wyświetlacza? Może ktoś przekompilować na swoim sprzęcie? <br /><br />Tutaj wstawiam kod:<br />plik main.c<br />[syntax=c]&#91;code&#93;/*<br /> * main.c<br /> *<br /> *  Created on: 22-10-2014<br /> *      Author: Piotr<br /> */<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br />#include &quot;MK_OLED/mk_ssd1306.h&quot;<br /><br />int main(void){<br /><br /><br />mk_ssd1306_init(SSD1306_SWITCHCAPVCC,REFRESH_MIN);<br />while(1) {<br /><br />}<br />}<br />&#91;/code&#93;[/syntax]<br /><br />mk_ssd1306.c<br />[syntax=c]&#91;code&#93;/*<br /> * mk_ssd1306.c<br /> *<br /> *  Created on: 22-10-2014<br /> *      Author: Piotr<br /> */<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br />#include &quot;mk_ssd1306.h&quot;<br /><br />uint8_t ssd1306_buf&#91;1024&#93;= {<br /><br /><br />};<br /><br />static void SPIwrite(uint8_t dat){<br /><br />uint8_t i;<br />for (i=0x80; i; i&gt;&gt;=i){<br />SCK_LO;<br />if (dat &amp; i) MOSI_HI;<br />else MOSI_LO;<br />SCK_HI;<br />}<br />}<br /><br /><br /><br />void mk_ssd1306_cmd(uint8_t cmd) {<br />#if USE_CS == 1<br />CS_HI;<br />#endif<br /><br />DC_LO;<br /><br />#if USE_CS ==1<br />CS_LO;<br />#endif<br /><br />SPIwrite (cmd);<br /><br />#if USE_CS == 1<br />CS_HI;<br />#endif<br /><br />}<br /><br />void mk_ssd1306_data(uint8_t dat){<br />#if USE_CS == 1<br />CS_HI;<br />#endif<br /><br />DC_HI;<br /><br />#if USE_CS ==1<br />CS_LO;<br />#endif<br /><br />SPIwrite( dat );<br /><br />#if USE_CS == 1<br />CS_HI;<br />#endif<br />}<br /><br />void ssd1306_InitSpi(void){<br />MOSI_DDR |=MOSI;<br /><br />SCK_DDR|=SCK;<br />SCK_DDR |=SCK;<br /><br />#if USE_RST ==1<br />RST_DDR|=RST;<br />RST_PORT|=RST;<br />#endif<br /><br />DC_DDR |=DC;<br />#if USE_CS ==1<br />CS_DDR |=CS;<br />CS_PORT |=CS;<br />#endif<br />}<br /><br />void mk_ssd1306_init (uint8_t vcc, uint8_t refresh) {<br /><br />ssd1306_InitSpi();<br /><br />#if USE_RST == 1<br />RST_HI;<br />_delay_ms(25);<br />RST_LO;<br />_delay_ms(25);<br />RST_HI;<br />#else<br />CS_HI;<br />_delay_ms(25);<br />CS_LO;<br />_delay_ms(25);<br />CS_HI;<br />#endif<br /><br /><br />mk_ssd1306_cmd( SSD1306_DISPLAYOFF);<br />mk_ssd1306_cmd( SSD1306_SETDISPLAYCLOCKDIV);<br />mk_ssd1306_cmd( refresh);<br /><br />mk_ssd1306_cmd( SSD1306_SETDISPLAYOFFSET);<br />mk_ssd1306_cmd( 0x0);<br />mk_ssd1306_cmd( SSD1306_SETSTARTLINE | 0x0);<br />mk_ssd1306_cmd( SSD1306_CHARGEPUMP);<br /><br />if(vcc == SSD1306_EXTERNALVCC) mk_ssd1306_cmd(0x10);<br />else mk_ssd1306_cmd(0x14);<br /><br />mk_ssd1306_cmd(SSD1306_MEMORYMODE);<br />mk_ssd1306_cmd(0x00);<br />mk_ssd1306_cmd(SSD1306_SEGREMAP | 0x1);<br />mk_ssd1306_cmd(SSD1306_COMSCANDEC);<br /><br />mk_ssd1306_cmd(SSD1306_SETCONTRAST);<br /><br />if(vcc==SSD1306_EXTERNALVCC) mk_ssd1306_cmd(0x9F);<br />else mk_ssd1306_cmd(0xCF);<br /><br />mk_ssd1306_cmd(SSD1306_SETPRECHARGE );<br /><br />if (vcc==SSD1306_EXTERNALVCC) mk_ssd1306_cmd(0x9F);<br />else mk_ssd1306_cmd(0xCF);<br /><br />mk_ssd1306_cmd(SSD1306_SETPRECHARGE);<br /><br />//ssd1306 - 128x32<br />#if defined SSD1306_128_32<br />mk_ssd1306_cmd(SSD1306_SETMULTIPLEX);<br />mk_ssd1306_cmd(0x1F);<br /><br />mk_ssd1306_cmd(SSD1306_SETCOMPINS);<br />mk_ssd1306_cmd(0x02);<br />#endif<br /><br />//ssd1306 - 128x64<br />#if defined SSD1306_128_64<br />mk_ssd1306_cmd(SSD1306_SETMULTIPLEX);<br />mk_ssd1306_cmd(0x3F);<br /><br />mk_ssd1306_cmd(SSD1306_SETCOMPINS);<br />mk_ssd1306_cmd(0x12);<br />#endif<br /><br />mk_ssd1306_cmd(SSD1306_DISPLAYALLON_RESUME);<br />mk_ssd1306_cmd(SSD1306_NORMALDISPLAY);<br /><br />mk_ssd1306_cmd(SSD1306_DISPLAYON);<br />}<br /><br /><br /><br /><br />&#91;/code&#93;[/syntax]<br /><br />mk_ssd1306.h<br />[syntax=c]&#91;code&#93;/*<br /> /*<br /> * mk_ssd1306.h<br /> *<br /> *  Created on: 22-10-2014<br /> *      Author: Piotr<br /> */<br /><br />#ifndef MK_SSD1306_H_<br />#define MK_SSD1306_H<br /><br />#define USE_CS 1<br />#define USE_RST 0<br /><br />//Rozdzielczosc LCD/OLED<br />#define SSD1306_128_64<br />//#define SSD1306_128_32<br /><br />//podlaczone do portów C<br /><br />#define SCK (1&lt;&lt;7) //SCL<br />#define MOSI (1&lt;&lt;6) //SDA<br />#define RST (1&lt;&lt;5) // RST<br />#define DC (1&lt;&lt;4) //D/C<br /><br />#define CS (1&lt;&lt;5) // CS<br /><br /><br /><br />#define SCK_PORT PORTC<br />#define SCK_DDR DDRC<br /><br />#define MOSI_PORT PORTC<br />#define MOSI_DDR DDRC<br /><br />#define RST_PORT PORTC<br />#define RST_DDR DDRC<br /><br />#define CS_PORT PORTC<br />#define CS_DDR  DDRC<br /><br />#define DC_PORT PORTC<br />#define DC_DDR  DDRC<br /><br /><br /><br />#define RST_LO RST_PORT &amp;= -RST<br />#define RST_HI RST_PORT |= RST<br /><br />#define CS_LO CS_PORT &amp;= -CS<br />#define CS_HI CS_PORT |= CS<br /><br />#define DC_LO DC_PORT &amp;= -DC<br />#define DC_HI DC_PORT |= DC<br /><br />#define SCK_LO SCK_PORT &amp;= -SCK<br />#define SCK_HI SCK_PORT |= SCK<br /><br />#define MOSI_LO MOSI_PORT &amp;= -MOSI<br />#define MOSI_HI MOSI_PORT |= MOSI<br /><br /><br />#define SSD1306_WIDTH128<br /><br />#if defined SSD1306_128_64<br />#define SSD1306_HEIGHT64<br />#endif<br />#if defined SSD1306_128_32<br />#define SSD1306_HEIGHT32<br />#endif<br /><br />#define REFRESH_MIN 0x80<br />#define REFRESH_MID 0xB0<br />#define REFRESH_MAX 0xF0<br /><br />#define SSD1306_SETCONTRAST 0x81<br />#define SSD1306_DISPLAYALLON_RESUME 0xA4<br />#define SSD1306_DISPLAYALLON 0xA5<br />#define SSD1306_NORMALDISPLAY 0xA6<br />#define SSD1306_INVERTDISPLAY 0xA7<br />#define SSD1306_DISPLAYOFF 0xAE<br />#define SSD1306_DISPLAYON 0xAF<br /><br />#define SSD1306_SETDISPLAYOFFSET 0xD3<br />#define SSD1306_SETCOMPINS 0xDA<br /><br />#define SSD1306_SETVCOMDETECT 0xDB<br /><br />#define SSD1306_SETDISPLAYCLOCKDIV 0xD5<br />#define SSD1306_SETPRECHARGE 0xD9<br /><br />#define SSD1306_SETMULTIPLEX 0xA8<br /><br />#define SSD1306_SETLOWCOLUMN 0x00<br />#define SSD1306_SETHIGHCOLUMN 0x10<br /><br />#define SSD1306_SETSTARTLINE 0x40<br /><br />#define SSD1306_MEMORYMODE 0x20<br />#define SSD1306_COLUMNADDR 0x21<br />#define SSD1306_PAGEADDR   0x22<br /><br />#define SSD1306_COMSCANINC 0xC0<br />#define SSD1306_COMSCANDEC 0xC8<br /><br />#define SSD1306_SEGREMAP 0xA0<br /><br />#define SSD1306_CHARGEPUMP 0x8D<br /><br />#define SSD1306_EXTERNALVCC 0x1<br />#define SSD1306_SWITCHCAPVCC 0x2<br /><br />// Scrolling #defines<br />#define SSD1306_ACTIVATE_SCROLL 0x2F<br />#define SSD1306_DEACTIVATE_SCROLL 0x2E<br />#define SSD1306_SET_VERTICAL_SCROLL_AREA 0xA3<br />#define SSD1306_RIGHT_HORIZONTAL_SCROLL 0x26<br />#define SSD1306_LEFT_HORIZONTAL_SCROLL 0x27<br />#define SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL 0x29<br />#define SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL 0x2A<br /><br />//deklaracje funkcji<br />void mk_ssd1306_init (uint8_t vcc, uint8_t refresh);<br />void mk_ssd1306_cmd(uint8_t cmd);<br />void mk_ssd1306_data(uint8_t dat);<br /><br />#endif /* MK_SSD1306_H_ */<br /><br />&#91;/code&#93;[/syntax]<br /><br /><br />EDYCJA:<br />Wstawienie poprawnego pliku<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3452">Harahido</a> — 2 lis 2014, o 22:35</p><hr />
]]></content>
</entry>
</feed>