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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2019-03-17T13:15:29+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=55&amp;t=7982&amp;mode</id>
<entry>
<author><name><![CDATA[gordon10]]></name></author>
<updated>2019-03-17T13:15:29+01:00</updated>
<published>2019-03-17T13:15:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=217392#p217392</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=217392#p217392"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=217392#p217392"><![CDATA[
Witam,<br />Próbuję przeportować bibliotekę OLED na Xmega i o ile z interfejsem SPI nie było problemów to z I2C (TWI) na Xmega jeszcze sobie niebyt radzę. Może ktoś już się tym zajmował i podzieli się przeróbką podstawowych funkcji I2C ?<br /><br />Jeśli chodzi o SPI to poniżej umieszczam fragmenty plików z moimi przeróbkami:<br />plik ssd1306.h<br />[syntax=c]#if USE_SPI_OR_I2C == 1<br />// SPI software configuration<br />#define USE_CS1// 1-uzywamy pinu CS, 0-gdy nie uzywamy pinu CS<br />#defineUSE_CS20// 1-uzywamy pinu CS2, 0-gdy nie uzywamy pinu CS2<br />#define USE_RST1<br /><br />// OLED SPI PINS:<br />#define SCK PIN7_bm// &lt;--- SCL(D0)<br />#define MOSIPIN6_bm// &lt;--- SDA(D1)<br />#define RES PIN5_bm// &lt;--- RST<br />#define DC  PIN4_bm// &lt;--- D/C<br /><br />#define CS  PIN3_bm// &lt;--- CS<br />#define CS2PIN2_bm// &lt;--- CS2<br /><br />// OLED SPI PORTS<br />#define SCK_OUTPORTC.OUT<br />#define SCK_OUTSETPORTC.OUTSET<br />#define SCK_OUTCLRPORTC.OUTCLR<br />#define SCK_DIRPORTC.DIR<br />#define SCK_DIRSETPORTC.DIRSET<br />#define SCK_DIRCLRPORTC.DIRCLR<br /><br />#define MOSI_OUTPORTC.OUT<br />#define MOSI_OUTSETPORTC.OUTSET<br />#define MOSI_OUTCLRPORTC.OUTCLR<br />#define MOSI_DIRPORTC.DIR<br />#define MOSI_DIRSETPORTC.DIRSET<br />#define MOSI_DIRCLRPORTC.DIRCLR<br /><br />#define RES_OUTPORTC.OUT<br />#define RES_OUTSETPORTC.OUTSET<br />#define RES_OUTCLRPORTC.OUTCLR<br />#define RES_DIR PORTC.DIR<br />#define RES_DIRSETPORTC.DIRSET<br />#define RES_DIRCLRPORTC.DIRCLR<br /><br />#define DC_OUT PORTC.OUT<br />#define DC_OUTSETPORTC.OUTSET<br />#define DC_OUTCLRPORTC.OUTCLR<br />#define DC_DIR  PORTC.DIR<br />#define DC_DIRSETPORTC.DIRSET<br />#define DC_DIRCLRPORTC.DIRCLR<br /><br />#define CS_OUT PORTC.OUT<br />#define CS_OUTSETPORTC.OUTSET<br />#define CS_OUTCLRPORTC.OUTCLR<br />#define CS_DIR  PORTC.DIR<br />#define CS_DIRSETPORTC.DIRSET<br />#define CS_DIRCLRPORTC.DIRCLR<br /><br />#define CS2_OUTPORTC.OUT<br />#define CS2_OUTSETPORTC.OUTSET<br />#define CS2_OUTCLRPORTC.OUTCLR<br />#define CS2_DIRPORTC.DIR<br />#define CS2_DIRSETPORTC.DIRSET<br />#define CS2_DIRCLRPORTC.DIRCLR<br />#endif<br /><br /><br />// stany<br />//#define RES_LO RES_OUT &amp;= ~RES// po staremu<br />//#define RES_HIRES_OUT |= RES<br />#define RES_LORES_OUTCLR = RES// po nowemu XMEGA<br />#define RES_HIRES_OUTSET = RES<br /><br />//#define CS_LOCS_OUT &amp;= ~CS<br />//#define CS_HICS_OUT |= CS<br />#define CS_LOCS_OUTCLR = CS<br />#define CS_HICS_OUTSET = CS<br /><br />//#define CS2_LOCS2_OUT &amp;= ~CS2<br />//#define CS2_HICS2_OUT |= CS2<br />#define CS2_LOCS2_OUTCLR = CS2<br />#define CS2_HICS2_OUTSET = CS2<br /><br />//#define DC_LODC_OUT &amp;= ~DC<br />//#define DC_HIDC_OUT |= DC<br />#define DC_LODC_OUTCLR = DC<br />#define DC_HIDC_OUTSET = DC<br /><br />//#define SCK_LOSCK_OUT &amp;= ~SCK<br />//#define SCK_HISCK_OUT |= SCK<br />#define SCK_LOSCK_OUTCLR = SCK<br />#define SCK_HISCK_OUTSET = SCK<br /><br />//#define MOSI_LOMOSI_PORT &amp;= ~MOSI<br />//#define MOSI_HIMOSI_OUT |= MOSI<br />#define MOSI_LOMOSI_OUTCLR = MOSI<br />#define MOSI_HIMOSI_OUTSET = MOSI[/syntax]<br /><br />plik ssd1306.c<br />[syntax=c]void ssd1306_InitSpi (void) {<br /><br />//MOSI_DIR |= MOSI;// po staremu<br />MOSI_DIRSET = MOSI;// po nowemu XMEGA<br />//MOSI_OUT |= MOSI;<br />MOSI_OUTSET = MOSI;<br /><br />//SCK_DIR |= SCK;<br />SCK_DIRSET = SCK;<br />//SCK_OUT |= SCK;<br />SCK_OUTSET = SCK;<br /><br />#if USE_RST == 1<br />//RES_DIR |= RES;<br />RES_DIRSET = RES;<br />//RES_OUT |= RES;<br />RES_OUTSET = RES;<br />#endif<br /><br />//DC_DIR |= DC;<br />DC_DIRSET = DC;<br /><br />#if USE_CS == 1<br />//CS_DIR |= CS;<br />CS_DIRSET = CS;<br />//CS_OUT |= CS;<br />CS_OUTSET = CS;<br />#endif<br /><br />#if USE_CS2 == 1<br />//CS2_DDR |= CS2;<br />CS2_DIRSET = CS2;<br />//CS2_PORT |= CS2;<br />CS2_OUTSET = CS2;<br />#endif<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=968">gordon10</a> — 17 mar 2019, o 13:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2018-09-11T08:03:28+01:00</updated>
<published>2018-09-11T08:03:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=211564#p211564</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=211564#p211564"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=211564#p211564"><![CDATA[
Gratulacje, takie dopieszczone fonty wyglądają dużo lepiej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 11 wrz 2018, o 08:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2018-08-29T16:52:14+01:00</updated>
<published>2018-08-29T16:52:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=211110#p211110</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=211110#p211110"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=211110#p211110"><![CDATA[
Gratuluję. Widzę, że kolega używa polskiego laminatu z Izo Erg. Chwali się <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=1546">micky</a> — 29 sie 2018, o 16:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-08-29T15:10:10+01:00</updated>
<published>2018-08-29T15:10:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=211107#p211107</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=211107#p211107"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=211107#p211107"><![CDATA[
No i pięknie panie, ślicznie <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=54">mirekk36</a> — 29 sie 2018, o 15:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[heniug]]></name></author>
<updated>2016-01-10T23:21:00+01:00</updated>
<published>2016-01-10T23:21:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=150219#p150219</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=150219#p150219"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=150219#p150219"><![CDATA[
Przeszedłem przez wszystkie poradniki dotyczące OLED, jednak zabrakło mi wyjaśnienia funkcji &quot;mk_ssd1306_refresh_pages&quot; dla I2C.<br />Rozumiem że musi być zapisana odpowiednia długość, ale wychodzą mi bzdury. <br />Proszę o pomoc w uzupełnieniu tej funkcji.<br /><br />[syntax=c]void mk_ssd1306_refresh_pages(uint8_t page_nr, uint8_t pages_cnt, uint8_t col_start, uint8_t col_end) {<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 />mk_ssd1306_cmd(SSD1306_SETLOWCOLUMN | (col_start &amp; 0x0f));<br />mk_ssd1306_cmd(SSD1306_SETHIGHCOLUMN | col_start&gt;&gt;4);<br />mk_ssd1306_cmd(0xB0 + page_cnt);<br /><br />ram_buf_start = &amp;ssd1306_buf&#91;(page_cnt*128)+col_start&#93;;<br /><br />for (col_cnt=col_start; col_cnt&lt;col_end; col_cnt++){<br /><br />TWI_write_buf( OLED_I2C_ADDRESS, 0x40, col_end - col_start, ram_buf_start );<br /><br /><br /><br />}<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1890">heniug</a> — 10 sty 2016, o 23:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2015-12-18T02:53:53+01:00</updated>
<published>2015-12-18T02:53:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=148367#p148367</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=148367#p148367"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=148367#p148367"><![CDATA[
Static przy zmiennych i przy funkcjach ma trochę inne znaczenie - przy funkcji powoduje że nie jest ona dostępna poza modułem w którym jest ona utworzona.<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 18 gru 2015, o 02:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[iwi]]></name></author>
<updated>2015-12-17T23:12:33+01:00</updated>
<published>2015-12-17T23:12:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=148359#p148359</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=148359#p148359"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=148359#p148359"><![CDATA[
z 30 razy sprawdzałem tą linijkę w funkcji i nie zauważyłem że przy len jest uint16_t zamiast uint8T - ok. Mam już kropkę i linijkę - lecędo trójki <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />[syntax=c]static void TWI_write_buf( uint8_t SLA, uint8_t adr, uint16_t len, uint8_t *buf ) {[/syntax]<br />dzięki<br /><br />ewentualnie takie pytanie - bo ponieważ ten wyświetlacz mam podłączony w większym projekcie to czy jak inkluduję funkcję do I2C to czy tam jest potrzebny identyfikator static? Wg definicji static sprawia, że obiekt w danej funkcji jest umieszczany w tej samej pamięci, co zmienna globalna i nie jest usuwany wraz z zakończeniem funkcji.<br />tylko czy to dla nas ma znaczenie?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1988">iwi</a> — 17 gru 2015, o 23:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2015-12-17T19:14:11+01:00</updated>
<published>2015-12-17T19:14:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=148329#p148329</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=148329#p148329"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=148329#p148329"><![CDATA[
[syntax=c]TWI_write_buf( OLED_I2C_ADDRESS, 0x40, 1024, ssd1306_buf );[/syntax]<br /><br />u mnie jest tak:<br />[syntax=c]TWI_write_buf( OLED_I2C_ADRESS, 0x40, BUF_SIZE, ssd1306_buf );[/syntax]<br /><br />a w pliku h<br />[syntax=c]#define SSD1306_WIDTH128<br /><br />#if defined SSD1306_128_64<br />#defineSSD1306_HEIGHT64<br />#endif<br /><br />#if defined SSD1306_128_32<br />#defineSSD1306_HEIGHT32<br />#endif<br /><br />#define BUF_SIZE ( SSD1306_WIDTH*SSD1306_HEIGHT/8 )[/syntax]<br /><br /><br />co oznacza że bufor to 1024 więc to nie ma znaczenia ale przy mniejszym lub większym oledzie będzie już miało...<br /><br /><br />Pokaż jeszcze swoją inicjalizację dla I2C<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 17 gru 2015, o 19:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[iwi]]></name></author>
<updated>2015-12-17T17:46:27+01:00</updated>
<published>2015-12-17T17:46:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=148324#p148324</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=148324#p148324"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=148324#p148324"><![CDATA[
Super filmik oglądnąłem już 2x 2część o I2C i niestety nie mogę wystartować dalej.<br />Cały czas mam sieczkę na ekranie.<br />Z filmu wynika że po wyłączeniu zasilania w RAMie są przypadkowe dane. Czyli inicjalizacja u mnie przebiega prawidłowo.<br />Potem dopisałęm funkcję mk_ssd1306_display() i powinno skasować tą sieczkę a niestety ta funkcja u mnie nic nie robi<br />Sama funkcja &quot;mk_ssd1306_display&quot; dla I2C ma tylko 4 linijki bo wszystko o SPI zostało wcześniej odfiltrowane przez definicje preprocesora<br />[syntax=c]mk_ssd1306_cmd (SSD1306_SETLOWCOLUMN | 0x0);<br />mk_ssd1306_cmd (SSD1306_SETHIGHCOLUMN | 0x0);<br />mk_ssd1306_cmd (SSD1306_SETSTARTLINE | 0x0);<br />TWI_write_buf( OLED_I2C_ADDRESS, 0x40, 1024, ssd1306_buf );[/syntax]<br />Oled Atnelowski oryginalny I2C<br /><br />Adress jest prawidłowy bo się inicjalizuje. Nie mam niestety oleda SPI żeby sprawdzić czy coś nie skopałem we wcześniejszej bibliotece, ale starałem się jak mogłem.<br />Ale skoro inicjalizacja przebiega prawidłowo to przecież powinno to działać.<br /><br />W main.c mam przed pętlą while<br />[syntax=c]mk_ssd1306_init(SSD1306_SWITCHCAPVCC, REFRESH_MAX);<br />mk_ssd1306_display();[/syntax]<br />i po tym powinien ekran się skasować. bo w buforze nie ma nic.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1988">iwi</a> — 17 gru 2015, o 17:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[heniug]]></name></author>
<updated>2015-12-14T22:48:12+01:00</updated>
<published>2015-12-14T22:48:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=148032#p148032</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=148032#p148032"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=148032#p148032"><![CDATA[
Wielka praca wykonana, Mirku.<br />Odpaliłem też swojego Oleda po I2C, teraz zaczynam poradnik 3, a potem dalsze.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1890">heniug</a> — 14 gru 2015, o 22:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[yozue]]></name></author>
<updated>2015-12-10T20:02:52+01:00</updated>
<published>2015-12-10T20:02:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147608#p147608</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147608#p147608"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147608#p147608"><![CDATA[
Dzięki wreszcie coś ruszyło, wyświetlacz ożył (to znaczy mam śnieg ).<br />Dziś od 15 jeszcze raz analizowałem ale nadal czarna magia dlatego serdecznie dziękuję za pomoc.<br />Wracam do poradnika Mr. Mirka sprawdzę jak po I2C wysyła się bufor, no chyba, że będziesz szybszy z pomocą<br />pozdrawiam i jeszcze raz dziękuję<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3470">yozue</a> — 10 gru 2015, o 20:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2015-12-10T18:45:50+01:00</updated>
<published>2015-12-10T18:45:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147599#p147599</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147599#p147599"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147599#p147599"><![CDATA[
Zobacz czy teraz będzie działać.<br />Z tym, że musisz jeszcze dopisać kawałeczek kodu w funkcji oled_refresh()<br />Tu jest pliczek oled.c<br />[syntax=c]/*<br /> * oled.c<br /> *<br /> *  Created on: 28 lis 2015<br /> *      Author: Marek<br /> *      + drobne poprawki MirkoT<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 />#include &quot;oled.h&quot;<br /><br /><br />uint8_t ssd1306_buf&#91;BUF_SIZE&#93;= {<br /><br />};<br /><br />#if USE_SPI_OR_I2C == 1<br /><br />static void SPIwrite(uint8_t dat){<br /><br />                uint8_t i;<br />                for (i = 0x80; i; i &gt;&gt;= 1){<br />                        SCK_LO;<br />                        if (dat &amp; i) MOSI_HI;<br />                        else MOSI_LO;<br />                        SCK_HI;<br />                }<br />}<br /><br />void ssd1306_InitSpi(void){<br /><br />        MOSI_DDR |= MOSI;<br /><br />        SCK_DDR |=SCK;<br />        SCK_PORT |= SCK;<br /><br />#if USE_RST ==1<br />        RST_DDR|=RST;<br />        RST_PORT|=RST;<br />#endif<br /><br />        DC_DDR |=DC;<br /><br />#if USE_CS ==1<br />        CS_DDR |=CS;<br />        CS_PORT |=CS;<br />#endif<br />}<br /><br /><br />#endif<br /><br />// ****************************   I2C<br />#if USE_SPI_OR_I2C == 0<br /><br />void i2cSetBitrate(uint16_t bitrateKHz) {<br />uint8_t bitrate_div;<br /><br />bitrate_div = ((F_CPU/1000l)/bitrateKHz);<br />if(bitrate_div &gt;= 16)<br />bitrate_div = (bitrate_div-16)/2;<br /><br />TWBR = bitrate_div;<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 />}<br /><br /><br /><br />void TWI_write_buf( uint8_t SLA, uint8_t adr, uint8_t len, uint8_t *buf ) {<br /><br />TWI_start();<br />TWI_write(SLA);<br />TWI_write(adr);<br />while (len--) TWI_write(*buf++);<br />TWI_stop();<br />}<br /><br /><br /><br />void TWI_read_buf(uint8_t SLA, uint8_t adr, uint8_t len, uint8_t *buf) {<br /><br />TWI_start();<br />TWI_write(SLA);<br />TWI_write(adr);<br />TWI_start();<br />TWI_write(SLA + 1);<br />while (len--) *buf++ = TWI_read( len ? ACK : NACK );<br />TWI_stop();<br />}<br /><br />#endif<br /><br /><br />// ***************************   koniec I2C<br /><br /><br />//***************  wysyłanie komendy<br /><br />void mk_ssd1306_cmd(uint8_t cmd) {<br /><br />#if USE_SPI_OR_I2C ==1<br /><br />#if USE_CS == 1<br />        CS_HI;<br />#endif<br /><br />        DC_LO;<br /><br />        SPIwrite (cmd);<br /><br />#if USE_CS == 1<br />        CS_LO;<br />#endif<br /><br />#if USE_CS == 1<br />        CS_HI;<br />#endif<br /><br />#else<br />        uint8_t control = 0x00;<br />        TWI_start();<br />        TWI_write(OLED_I2C_ADDRESS);<br />        TWI_write(control);<br />        TWI_write(cmd);<br />        TWI_stop();<br /><br />#endif<br /><br />}<br /><br />//******************wyślij dane<br /><br />void mk_ssd1306_data(uint8_t dat){<br /><br />#if USE_SPI_OR_I2C ==1<br /><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 />#else<br />        uint8_t control = 0x40;<br />                TWI_start();<br />                TWI_write(OLED_I2C_ADDRESS);<br />                TWI_write(control);<br />                TWI_write(dat);<br />                TWI_stop();<br /><br />#endif<br />}<br /><br />//******************   wysyłanie bufora do sterownika<br />void oled_display(void)<br />{<br />mk_ssd1306_cmd (SSD1306_SETLOWCOLUMN | 0x0);<br />mk_ssd1306_cmd (SSD1306_SETHIGHCOLUMN | 0x0);<br />mk_ssd1306_cmd (SSD1306_SETSTARTLINE | 0x0);<br /><br />#if USE_SPI_OR_I2C == 1<br /><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 />        for (uint16_t i = 0; i &lt; (SSD1306_WIDTH * SSD1306_HEIGHT/8); i++){<br />                 SPIwrite(ssd1306_buf&#91;i&#93;);}<br /><br />#if USE_CS ==1<br />        CS_HI;<br />#endif<br />#if USE_SPI_OR_I2C == 1<br />#else<br />        TWI_write_buf( OLED_I2C_ADDRESS, 0x40, 1024, ssd1306_buf );<br /><br />#endif<br />#endif<br />}<br /><br />void oled_setPixel (int x, int y, uint8_t bw)<br />{<br />        if ((x &lt; 0) || (x &gt;= SSD1306_WIDTH) || (y &lt; 0) || (y &gt;= SSD1306_HEIGHT))<br />                return;<br /><br />        if (bw) ssd1306_buf&#91;x+ (y/8) * SSD1306_WIDTH&#93; |= (1&lt;&lt;(y%8));<br />        else ssd1306_buf&#91; x + (y/8) * SSD1306_WIDTH&#93; &amp;= ~(1&lt;&lt;(y%8));<br />}<br /><br /><br /><br />void oled_cls (void)<br />{<br />        memset (ssd1306_buf, 0x00, (BUF_SIZE));<br />}<br /><br />void mk_ssd1306_init (uint8_t vcc, uint8_t refresh) {<br /><br />#if USE_SPI_OR_I2C ==1<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 />#else<br />        i2cSetBitrate(400);<br />        I2C_DIR |= (1&lt;&lt;SCL) | (1&lt;&lt;SDA);<br />        _delay_ms(50);<br /><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 />        mk_ssd1306_cmd(SSD1306_DISPLAYON);<br /><br />        oled_display();<br />}<br /><br /><br />void oled_refresh(uint8_t page_nr, uint8_t page_ile, uint8_t col_start, uint8_t col_end){<br /><br />uint8_t strona,kolumna;<br />uint8_t *ram_buf_start;<br /><br />for( strona = page_nr; strona &lt; (page_nr + page_ile); strona++) {<br /><br />mk_ssd1306_cmd (SSD1306_SETLOWCOLUMN | (col_start &amp; 0x0f));<br />mk_ssd1306_cmd (SSD1306_SETHIGHCOLUMN | (col_start &gt;&gt;1));<br />mk_ssd1306_cmd( 0xB0 + strona );<br /><br />ram_buf_start = &amp;ssd1306_buf&#91; (strona*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_mr ) CS_LO;<br />else CS2_LO<br />#endif<br />#endif<br /><br /><br />for(kolumna =col_start; kolumna &lt; col_end; kolumna++ ){<br />#if USE_SPI_OR_I2C == 1<br />SPIwrite( *ram_buf_start++);<br />#else<br />//**************************************************************<br />// tu musisz wstawic funkcję wysyłającą ram_buf_start przez I2C<br />//**************************************************************<br />#endif<br />}<br />}<br /><br />}[/syntax]<br /><br />a tutaj oled.h<br />[syntax=c]#ifndef OLED_OLED_H_<br />#define OLED_OLED_H_<br /><br />#define ACK 1<br />#define NACK 0<br /><br />//Rozdzielczosc LCD/OLED<br />#define SSD1306_128_64<br />//      #define SSD1306_128_32<br /><br />//  konfiguracja I2C<br /><br />#define USE_SPI_OR_I2C 0// 1 = SPI, 0 = I2C<br /><br /><br />#if USE_SPI_OR_I2C == 0<br />#define OLED_I2C_ADDRESS 0x78<br />#define I2C_DIRDDRC<br />#define SCLPC5<br />#define SDAPC4<br />#endif<br /><br />#if USE_SPI_OR_I2C == 1<br />// konfiguracja SPI<br />#define USE_CS 0<br />#define USE_RST 1<br /><br />#define SCK (1&lt;&lt;0) //SCL<br />#define MOSI (1&lt;&lt;1) //SDA<br />#define RST (1&lt;&lt;2) // RST<br />#define DC (1&lt;&lt;3) //D/C<br /><br />#define CS (1&lt;&lt;2) // CS<br /><br />#define SCK_PORT         PORTD<br />#define SCK_DDR          DDRD<br /><br />#define MOSI_PORT        PORTD<br />#define MOSI_DDR         DDRD<br /><br />#define RST_PORT         PORTD<br />#define RST_DDR          DDRD<br /><br />#define DC_PORT          PORTD<br />#define DC_DDR           DDRD<br /><br />#define CS_PORT          PORTD<br />#define CS_DDR           DDRD<br />#endif<br /><br />// Dodane, żeby żlikwidowac warning dotyczący DC_PORT oraz DC<br />#define DC_PORT          PORTD<br />#define DC_DDR           DDRD<br /><br />#define DC (1&lt;&lt;3) //D/C<br />// koniec &quot;mojej wstawki&quot;<br />// nie wgłębiałem się czy te deklaracje mają byc i czy to zadziała ;-)<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_WIDTH                   128<br /><br />#if defined SSD1306_128_64<br />        #define SSD1306_HEIGHT          64<br />#endif<br /><br />#if defined SSD1306_128_32<br />        #define SSD1306_HEIGHT          32<br />#endif<br /><br />#define BUF_SIZE (SSD1306_WIDTH*SSD1306_HEIGHT/8)<br /><br />#define REFRESH_MIN 0x80<br />#define REFRESH_MID 0xB0<br />#define REFRESH_MAX 0xF0<br /><br />typedef enum {page0, page1, page2, page3, page4, page5, page6, page7 } TPAGE;<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 />#define swap(a, b) { int16_t t = a; a = b; b = t; }<br /><br />extern const uint8_t font&#91;&#93;;<br /><br />extern int cursor_x, cursor_y;<br /><br /><br />//deklaracje funkcji<br />void i2cSetBitrate(uint16_t bitrateKHz);<br />void TWI_start(void);<br />void TWI_stop(void);<br />void TWI_write(uint8_t bajt);<br />uint8_t TWI_read(uint8_t ack);<br /><br />void TWI_write_buf( uint8_t SLA, uint8_t adr, uint8_t len, uint8_t *buf );<br />void TWI_read_buf(uint8_t SLA, uint8_t adr, uint8_t len, uint8_t *buf);<br /><br /><br /><br /><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 />void oled_refresh(uint8_t page_nr, uint8_t page_ile, uint8_t col_start, uint8_t col_end);<br /><br />void oled_display(void);<br />void oled_setPixel (int x, int y, uint8_t bw);<br />void oled_drawBitmap_P (int x, int y, const uint8_t *bitmap, uint8_t w, uint8_t h, uint8_t color);<br />void oled_drawChar(int x, int y, char c, uint8_t color, uint8_t bg, uint8_t size);<br /><br />void oled_cls (void);<br />void oled_fillRect(int8_t x, int8_t y, int8_t w, int8_t h, uint8_t color);<br />void oled_drawFastVLine(int8_t x, int8_t y,int8_t h, uint8_t color);<br />void oled_drawFastHLine(int8_t x, int8_t y, int8_t w, uint8_t color);<br />void oled_drawLine(int8_t x0, int8_t y0,int8_t x1, int8_t y1, uint8_t color);<br />void oled_drawRect(uint8_t x, uint8_t y,uint8_t w, uint8_t h, uint8_t color);<br /><br />void oled_pstr(int x, int y, char * str, uint8_t txt_size, uint8_t color,uint8_t bg );<br />void oled_pstr_int(int x, int y, int data, uint8_t txt_size, uint8_t color, uint8_t bg );<br />void oled_temp(int x, int y, int data, uint8_t txt_size, uint8_t color, uint8_t bg );<br /><br />void oled_ProgressBarProcent( uint8_t x, uint8_t y, uint8_t h, uint8_t procent, uint8_t x_koniec, uint8_t color);<br />void oled_ProgressBarProcentPion( uint8_t x, uint8_t y, uint8_t h, uint8_t w, uint8_t procent, uint8_t color);<br /><br />#endif /* OLED_OLED_H_ */[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 10 gru 2015, o 18:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[yozue]]></name></author>
<updated>2015-12-10T16:48:09+01:00</updated>
<published>2015-12-10T16:48:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147585#p147585</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147585#p147585"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147585#p147585"><![CDATA[
żeby tak doba miała więcej godzin to na pewno byłbym na bieżąco<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3470">yozue</a> — 10 gru 2015, o 16:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-12-10T16:04:53+01:00</updated>
<published>2015-12-10T16:04:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147577#p147577</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147577#p147577"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147577#p147577"><![CDATA[
<div class="quotetitle">yozue napisał(a):</div><div class="quotecontent"><br />tak, Eclipce Luna wersja dostarczona razem z książką pana Mirka<br /></div><br />Ja jednak polecam częściej zaglądać na mojego bloga - bo czas leci i tam pokazuję jak sobie odświeżać środowisko aby być na bieżąco a nie stać w miejscu<br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2015/07/eclipse-start-plus-pierwszy-program.html" >http://mirekk36.blogspot.com/2015/07/ec ... ogram.html</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 10 gru 2015, o 16:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[yozue]]></name></author>
<updated>2015-12-10T15:57:12+01:00</updated>
<published>2015-12-10T15:57:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147574#p147574</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147574#p147574"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147574#p147574"><![CDATA[
tak, Eclipce Luna wersja dostarczona razem z książką pana Mirka<br /><br />definicja jest reszta też jest coś musiałem pomieszać chyba z #if przy robieniu przełączników I2C / SPI<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3470">yozue</a> — 10 gru 2015, o 15:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2015-12-10T15:11:57+01:00</updated>
<published>2015-12-10T15:11:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147569#p147569</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147569#p147569"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147569#p147569"><![CDATA[
Brakuje Ci zdefiniowanych stałych pewnie w preprocesorze?<br />[syntax=c]#define DC_PORT cośtam[/syntax]<br />i to samo dla<br />DC<br />Brakuje Ci też deklaracji funkcji SPIwrite<br />A to by znaczyło, że ponieważ korzystasz z I2C to <br />zapomniałeś tej funkcji wyłączyć<br />Zaś co do konwersji typów to trzeba by się przyjrzeć bliżej...  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Używasz eclipsa?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 10 gru 2015, o 15:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[yozue]]></name></author>
<updated>2015-12-10T13:18:55+01:00</updated>
<published>2015-12-10T13:18:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147563#p147563</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147563#p147563"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147563#p147563"><![CDATA[
Wyskakuje mi coś takiego :<br /><br />13:17:35 **** Incremental Build of configuration Release for project Oled_mini_Pro_SPI ****<br />make all <br />Building file: ../OLed/oled.c<br />Invoking: AVR Compiler<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega328p -DF_CPU=16000000UL -MMD -MP -MF&quot;OLed/oled.d&quot; -MT&quot;OLed/oled.d&quot; -c -o &quot;OLed/oled.o&quot; &quot;../OLed/oled.c&quot;<br />../OLed/oled.c: In function 'oled_display':<br />../OLed/oled.c:215:9: warning: large integer implicitly truncated to unsigned type [-Woverflow]<br />../OLed/oled.c: In function 'oled_refresh':<br />../OLed/oled.c:331:3: error: 'DC_PORT' undeclared (first use in this function)<br />../OLed/oled.c:331:3: note: each undeclared identifier is reported only once for each function it appears in<br />../OLed/oled.c:331:3: error: 'DC' undeclared (first use in this function)<br />../OLed/oled.c:344:4: warning: implicit declaration of function 'SPIwrite' [-Wimplicit-function-declaration]<br />make: *** [OLed/oled.o] Błąd 1<br /><br />tylko po przełączeniu na I2C,<br />na SPI wszystko działa elegancko.<br />Poprawiałem bibliotekę wg poradnika pana Mirka, mam słabą rozdzielczość filmu coś pewnie przegapiłem ale po 2 razie oglądania zrezygnowałem i zwróciłem się o pomoc.<br />Słabo znam C.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3470">yozue</a> — 10 gru 2015, o 13:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2015-12-10T10:53:17+01:00</updated>
<published>2015-12-10T10:53:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147556#p147556</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147556#p147556"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147556#p147556"><![CDATA[
<div class="quotetitle">yozue napisał(a):</div><div class="quotecontent"><br />Nikt mi nie pomoże ?<br /></div><br />A co jest w opisie błędu?<br />To jest error czy warning?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 10 gru 2015, o 10:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[yozue]]></name></author>
<updated>2015-12-09T21:06:15+01:00</updated>
<published>2015-12-09T21:06:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147511#p147511</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147511#p147511"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147511#p147511"><![CDATA[
Nikt mi nie pomoże ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3470">yozue</a> — 9 gru 2015, o 21:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[yozue]]></name></author>
<updated>2015-12-04T23:00:42+01:00</updated>
<published>2015-12-04T23:00:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147086#p147086</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147086#p147086"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=147086#p147086"><![CDATA[
Witam ponownie<br />Tworząc bibliotekę zabrakło mi pinów na procku i musiałem wyświetlacz zmienić na I2C cofnąłem się w poradniku (nie zrobiłem tego od razu) i zacząłem biblioteki przekształcać tak aby można było przełączać raz na I2C a raz na SPI i nie wiem co znów przegapiłem SPI działa dalej a jak przełączę na I2C wyskakuje błąd <br /><br />wklejam kody może znajdzie się ktoś cierpliwy i pomoże<br /><br />[syntax=c]/*<br /> * oled.c<br /> *<br /> *  Created on: 28 lis 2015<br /> *      Author: Marek<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 />#include &quot;oled.h&quot;<br /><br /><br />uint8_t ssd1306_buf&#91;BUF_SIZE&#93;= {<br /><br />};<br /><br />#if USE_SPI_OR_I2C ==1<br /><br />static void SPIwrite(uint8_t dat){<br /><br />                uint8_t i;<br />                for (i = 0x80; i; i &gt;&gt;= 1){<br />                        SCK_LO;<br />                        if (dat &amp; i) MOSI_HI;<br />                        else MOSI_LO;<br />                        SCK_HI;<br />                }<br />}<br /><br />void ssd1306_InitSpi(void){<br /><br />        MOSI_DDR |= MOSI;<br /><br />        SCK_DDR |=SCK;<br />        SCK_PORT |= SCK;<br /><br />#if USE_RST ==1<br />        RST_DDR|=RST;<br />        RST_PORT|=RST;<br />#endif<br /><br />        DC_DDR |=DC;<br /><br />#if USE_CS ==1<br />        CS_DDR |=CS;<br />        CS_PORT |=CS;<br />#endif<br />}<br /><br /><br />#endif<br /><br />// ****************************   I2C<br />#if USE_SPI_OR_I2C == 0<br /><br />void i2cSetBitrate(uint16_t bitrateKHz) {<br />uint8_t bitrate_div;<br /><br />bitrate_div = ((F_CPU/1000l)/bitrateKHz);<br />if(bitrate_div &gt;= 16)<br />bitrate_div = (bitrate_div-16)/2;<br /><br />TWBR = bitrate_div;<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 />}<br /><br /><br /><br />void TWI_write_buf( uint8_t SLA, uint8_t adr, uint8_t len, uint8_t *buf ) {<br /><br />TWI_start();<br />TWI_write(SLA);<br />TWI_write(adr);<br />while (len--) TWI_write(*buf++);<br />TWI_stop();<br />}<br /><br /><br /><br />void TWI_read_buf(uint8_t SLA, uint8_t adr, uint8_t len, uint8_t *buf) {<br /><br />TWI_start();<br />TWI_write(SLA);<br />TWI_write(adr);<br />TWI_start();<br />TWI_write(SLA + 1);<br />while (len--) *buf++ = TWI_read( len ? ACK : NACK );<br />TWI_stop();<br />}<br /><br />#endif<br /><br /><br />// ***************************   koniec I2C<br /><br /><br />//***************  wysyłanie komendy<br /><br />void mk_ssd1306_cmd(uint8_t cmd) {<br /><br />#if USE_SPI_OR_I2C ==1<br /><br />#if USE_CS == 1<br />        CS_HI;<br />#endif<br /><br />        DC_LO;<br /><br />        SPIwrite (cmd);<br /><br />#if USE_CS == 1<br />        CS_LO;<br />#endif<br /><br />#if USE_CS == 1<br />        CS_HI;<br />#endif<br /><br />#else<br />        uint8_t control = 0x00;<br />        TWI_start();<br />        TWI_write(OLED_I2C_ADDRESS);<br />        TWI_write(control);<br />        TWI_write(cmd);<br />        TWI_stop();<br /><br />#endif<br /><br />}<br /><br />//******************wyślij dane<br /><br />void mk_ssd1306_data(uint8_t dat){<br /><br />#if USE_SPI_OR_I2C ==1<br /><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 />#else<br />        uint8_t control = 0x40;<br />                TWI_start();<br />                TWI_write(OLED_I2C_ADDRESS);<br />                TWI_write(control);<br />                TWI_write(dat);<br />                TWI_stop();<br /><br />#endif<br />}<br /><br />//******************   wysyłanie bufora do sterownika<br />void oled_display(void)<br />{<br />mk_ssd1306_cmd (SSD1306_SETLOWCOLUMN | 0x0);<br />mk_ssd1306_cmd (SSD1306_SETHIGHCOLUMN | 0x0);<br />mk_ssd1306_cmd (SSD1306_SETSTARTLINE | 0x0);<br /><br />#if USE_SPI_OR_I2C ==1<br /><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 />        for (uint16_t i = 0; i &lt; (SSD1306_WIDTH * SSD1306_HEIGHT/8); i++){<br />                 SPIwrite(ssd1306_buf&#91;i&#93;);}<br /><br />#if USE_CS ==1<br />        CS_HI;<br />#endif<br /><br />#else<br />        TWI_write_buf( OLED_I2C_ADDRESS, 0x40, 1024, ssd1306_buf );<br /><br />#endif<br />}<br /><br />void oled_setPixel (int x, int y, uint8_t bw)<br />{<br />        if ((x &lt; 0) || (x &gt;= SSD1306_WIDTH) || (y &lt; 0) || (y &gt;= SSD1306_HEIGHT))<br />                return;<br /><br />        if (bw) ssd1306_buf&#91;x+ (y/8) * SSD1306_WIDTH&#93; |= (1&lt;&lt;(y%8));<br />        else ssd1306_buf&#91; x + (y/8) * SSD1306_WIDTH&#93; &amp;= ~(1&lt;&lt;(y%8));<br />}<br /><br /><br /><br />void oled_cls (void)<br />{<br />        memset (ssd1306_buf, 0x00, (BUF_SIZE));<br />}<br /><br />void mk_ssd1306_init (uint8_t vcc, uint8_t refresh) {<br /><br />#if USE_SPI_OR_I2C ==1<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 />#else<br />        i2cSetBitrate(400);<br />        I2C_DIR |= (1&lt;&lt;SCL) | (1&lt;&lt;SDA);<br />        _delay_ms(50);<br /><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 />        mk_ssd1306_cmd(SSD1306_DISPLAYON);<br /><br />        oled_display();<br />}<br /><br /><br />void oled_refresh(uint8_t page_nr, uint8_t page_ile, uint8_t col_start, uint8_t col_end){<br /><br />uint8_t strona,kolumna;<br />uint8_t *ram_buf_start;<br /><br />for( strona = page_nr; strona &lt; (page_nr + page_ile); strona++) {<br /><br />mk_ssd1306_cmd (SSD1306_SETLOWCOLUMN | (col_start &amp; 0x0f));<br />mk_ssd1306_cmd (SSD1306_SETHIGHCOLUMN | (col_start &gt;&gt;1));<br />mk_ssd1306_cmd( 0xB0 + strona );<br /><br />ram_buf_start = &amp;ssd1306_buf&#91; (strona*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_mr ) CS_LO;<br />else CS2_LO<br />#endif<br />#endif<br /><br /><br />for(kolumna =col_start; kolumna &lt; col_end; kolumna++ ){<br />SPIwrite( *ram_buf_start++);<br />}<br />}<br /><br />}[/syntax]<br />[syntax=c]#ifndef OLED_OLED_H_<br />#define OLED_OLED_H_<br /><br />#define ACK 1<br />#define NACK 0<br /><br />//Rozdzielczosc LCD/OLED<br />#define SSD1306_128_64<br />//      #define SSD1306_128_32<br /><br />//  konfiguracja I2C<br /><br />#define USE_SPI_OR_I2C 1// 1 = SPI, 0 = I2C<br /><br /><br />#if USE_SPI_OR_I2C == 0<br />#define OLED_I2C_ADDRESS 0x78<br />#define I2C_DIRDDRC<br />#define SCLPC5<br />#define SDAPC4<br />#endif<br /><br />#if USE_SPI_OR_I2C == 1<br />// konfiguracja SPI<br />#define USE_CS 0<br />#define USE_RST 1<br /><br />#define SCK (1&lt;&lt;0) //SCL<br />#define MOSI (1&lt;&lt;1) //SDA<br />#define RST (1&lt;&lt;2) // RST<br />#define DC (1&lt;&lt;3) //D/C<br /><br />#define CS (1&lt;&lt;2) // CS<br /><br />#define SCK_PORT         PORTD<br />#define SCK_DDR          DDRD<br /><br />#define MOSI_PORT        PORTD<br />#define MOSI_DDR         DDRD<br /><br />#define RST_PORT         PORTD<br />#define RST_DDR          DDRD<br /><br />#define DC_PORT          PORTD<br />#define DC_DDR           DDRD<br /><br />#define CS_PORT          PORTD<br />#define CS_DDR           DDRD<br />#endif<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_WIDTH                   128<br /><br />#if defined SSD1306_128_64<br />        #define SSD1306_HEIGHT          64<br />#endif<br /><br />#if defined SSD1306_128_32<br />        #define SSD1306_HEIGHT          32<br />#endif<br /><br />#define BUF_SIZE (SSD1306_WIDTH*SSD1306_HEIGHT/8)<br /><br />#define REFRESH_MIN 0x80<br />#define REFRESH_MID 0xB0<br />#define REFRESH_MAX 0xF0<br /><br />typedef enum {page0, page1, page2, page3, page4, page5, page6, page7 } TPAGE;<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 />#define swap(a, b) { int16_t t = a; a = b; b = t; }<br /><br />extern const uint8_t font&#91;&#93;;<br /><br />extern int cursor_x, cursor_y;<br /><br /><br />//deklaracje funkcji<br />void i2cSetBitrate(uint16_t bitrateKHz);<br />void TWI_start(void);<br />void TWI_stop(void);<br />void TWI_write(uint8_t bajt);<br />uint8_t TWI_read(uint8_t ack);<br /><br />void TWI_write_buf( uint8_t SLA, uint8_t adr, uint8_t len, uint8_t *buf );<br />void TWI_read_buf(uint8_t SLA, uint8_t adr, uint8_t len, uint8_t *buf);<br /><br /><br /><br /><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 />void oled_refresh(uint8_t page_nr, uint8_t page_ile, uint8_t col_start, uint8_t col_end);<br /><br />void oled_display(void);<br />void oled_setPixel (int x, int y, uint8_t bw);<br />void oled_drawBitmap_P (int x, int y, const uint8_t *bitmap, uint8_t w, uint8_t h, uint8_t color);<br />void oled_drawChar(int x, int y, char c, uint8_t color, uint8_t bg, uint8_t size);<br /><br />void oled_cls (void);<br />void oled_fillRect(int8_t x, int8_t y, int8_t w, int8_t h, uint8_t color);<br />void oled_drawFastVLine(int8_t x, int8_t y,int8_t h, uint8_t color);<br />void oled_drawFastHLine(int8_t x, int8_t y, int8_t w, uint8_t color);<br />void oled_drawLine(int8_t x0, int8_t y0,int8_t x1, int8_t y1, uint8_t color);<br />void oled_drawRect(uint8_t x, uint8_t y,uint8_t w, uint8_t h, uint8_t color);<br /><br />void oled_pstr(int x, int y, char * str, uint8_t txt_size, uint8_t color,uint8_t bg );<br />void oled_pstr_int(int x, int y, int data, uint8_t txt_size, uint8_t color, uint8_t bg );<br />void oled_temp(int x, int y, int data, uint8_t txt_size, uint8_t color, uint8_t bg );<br /><br />void oled_ProgressBarProcent( uint8_t x, uint8_t y, uint8_t h, uint8_t procent, uint8_t x_koniec, uint8_t color);<br />void oled_ProgressBarProcentPion( uint8_t x, uint8_t y, uint8_t h, uint8_t w, uint8_t procent, uint8_t color);<br /><br />#endif /* OLED_OLED_H_ */[/syntax]<br /><br />[syntax=c]#include &lt;stdio.h&gt;<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;oled/oled.h&quot;<br />#include &quot;ds18b20.h&quot;<br /><br />#define LED_PIN (1&lt;&lt;PC3)// definicja pinu do którego podłączona jest dioda<br />#define LED_ON PORTC &amp;= ~LED_PIN// makrodefinicja – załączenie diody<br />#define LED_OFF PORTC |= LED_PIN<br /><br /><br /><br />int main (void)<br />{<br />double temp, tem=376;<br />unsigned char ds18b20_pad&#91;13&#93;;<br /><br />  DDRC |= LED_PIN;<br />  mk_ssd1306_init(SSD1306_SWITCHCAPVCC, REFRESH_MAX);<br />  LED_OFF;<br /> ds18b20_ConvertT();<br /> _delay_ms(750);<br />        while(1)<br />        {<br /><br />        ds18b20_Read(ds18b20_pad);<br />        temp = (((ds18b20_pad&#91;1&#93; &lt;&lt; 8) + ds18b20_pad&#91;0&#93;)*10) / 16.0 ;<br />        ds18b20_ConvertT();<br /><br /><br />        oled_temp(1, 1, tem, 2, 1, 0 );<br />        oled_temp(1, 30, temp, 3, 1, 0 );<br /><br /><br />        oled_ProgressBarProcent( 1, page7*8, 8, 10, 105, 1);<br />        oled_ProgressBarProcentPion( 119, 1, 50, 8, (((tem*100)/temp)/10), 1);<br /><br />        oled_display();<br />        _delay_ms(100);<br />        }<br /><br />}[/syntax]<br />błąd wyskakuje podkreślając DC_HI;<br />w procedurze [syntax=c]void oled_refresh(uint8_t page_nr, uint8_t page_ile, uint8_t col_start, uint8_t col_end)[/syntax]<br /><br />pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3470">yozue</a> — 4 gru 2015, o 23:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2015-11-29T13:56:17+01:00</updated>
<published>2015-11-29T13:56:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=146655#p146655</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=146655#p146655"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=146655#p146655"><![CDATA[
<div class="quotetitle">yozue napisał(a):</div><div class="quotecontent"><br />I znów stanąłem<br />w 5 poradniku pan Mirek w poradniku użył komendy &quot;page&quot; u mnie podkreśla się i nie wiem skąd ona jest wzięta<br />może ktoś pomoże ?<br />z góry dziękuję<br /></div><br /><br />zdefiniowałeś w pliku h typ wyliczeniowy na potrzeby scrollowania ??<br /><br /><br />[syntax=c]typedef enum {page0, page1, page2, page3, page4, page5, page6, page7} TPAGE;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 29 lis 2015, o 13:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2015-11-29T01:54:59+01:00</updated>
<published>2015-11-29T01:54:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=146643#p146643</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=146643#p146643"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=146643#p146643"><![CDATA[
<div class="quotetitle">yozue napisał(a):</div><div class="quotecontent"><br />w 5 poradniku pan Mirek w poradniku użył komendy &quot;page&quot;<br /></div><br /><br />22 minuta...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 29 lis 2015, o 01:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[yozue]]></name></author>
<updated>2015-11-28T23:58:50+01:00</updated>
<published>2015-11-28T23:58:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=146639#p146639</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=146639#p146639"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=146639#p146639"><![CDATA[
I znów stanąłem<br />w 5 poradniku pan Mirek w poradniku użył komendy &quot;page&quot; u mnie podkreśla się i nie wiem skąd ona jest wzięta<br />może ktoś pomoże ?<br />z góry dziękuję<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3470">yozue</a> — 28 lis 2015, o 23:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2015-11-28T23:15:08+01:00</updated>
<published>2015-11-28T23:15:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=146637#p146637</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=146637#p146637"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=146637#p146637"><![CDATA[
<div class="quotetitle">yozue napisał(a):</div><div class="quotecontent"><br />Działa super napisy wychodzą linie animuje już trochę jeszcze poćwiczę, zrobie orientacyjny interfejs i zabiorę się za sedno programu to znaczy regulator fazowy.<br /></div><br /><br />ok na koniec pochwal się w dziale DIY <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> sam z chęcią oglądnę <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=1628">majster</a> — 28 lis 2015, o 23:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[yozue]]></name></author>
<updated>2015-11-28T22:42:15+01:00</updated>
<published>2015-11-28T22:42:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=146634#p146634</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=146634#p146634"/>
<title type="html"><![CDATA[Re: OLED C Library - START!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7982&amp;p=146634#p146634"><![CDATA[
Działa super napisy wychodzą linie animuje już trochę jeszcze poćwiczę, zrobie orientacyjny interfejs i zabiorę się za sedno programu to znaczy regulator fazowy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3470">yozue</a> — 28 lis 2015, o 22:42</p><hr />
]]></content>
</entry>
</feed>