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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-04-30T17:18:09+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=5747&amp;mode</id>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2014-04-30T17:18:09+01:00</updated>
<published>2014-04-30T17:18:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=79708#p79708</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=79708#p79708"/>
<title type="html"><![CDATA[Re: SSD1289 inicjalizacja szum]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=79708#p79708"><![CDATA[
Z problemem się już uporałem, a mianowicie chodziło o PORTB, którego piny od 4 do 7 są wykorzystywane przez JTAG. Wystarczyło go wyłączyć i wszystko działa bez zarzutu. Za pewne każdy program który wgrywałem był w porządku, tylko nie możliwe było wysterowanie tych pinów.<br /><br />Mimo wszystko bardzo wszystkim dziękuję  <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=1183">atmel</a> — 30 kwi 2014, o 17:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2014-04-28T20:50:53+01:00</updated>
<published>2014-04-28T20:50:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=79547#p79547</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=79547#p79547"/>
<title type="html"><![CDATA[Re: SSD1289 inicjalizacja szum]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=79547#p79547"><![CDATA[
Zdaje się, że jest to jednak sterownik SSD1289, gdyż zakupiłem go na tej aukcji: <!-- m --><a class="postlink" href="http://allegro.pl/promocja-lcd-3-2-ssd1289-tft-ekran-dotyk-i4159867493.html" >http://allegro.pl/promocja-lcd-3-2-ssd1 ... 67493.html</a><!-- m --><br /><br />Jednak do końca sam nie jestem przekonany, czy nie zaszła jakaś pomyłka przy wysyłce i nie otrzymałem ILI9320, który w sumie wygląda identycznie...<br /><br />Jeśli dobrze odczytałem sygnaturę to wynosi ona 0x7989  <img src="https://forum.atnel.pl/images/smilies/icon_eek.gif" alt=":shock:" title="Zaszokowany" />, co to takiego?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 28 kwi 2014, o 20:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mesho]]></name></author>
<updated>2014-04-28T09:04:04+01:00</updated>
<published>2014-04-28T09:04:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=79505#p79505</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=79505#p79505"/>
<title type="html"><![CDATA[Re: SSD1289 inicjalizacja szum]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=79505#p79505"><![CDATA[
<div class="quotetitle">Mscichu napisał(a):</div><div class="quotecontent"><br />Kolega mesho podesłał mi swojego czasu działający projekt, wstawię dla potomności, mam nadzieję, że nie będzie krzyczał <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /><br /></div><br />Nie mam za co się obrażać, już od dawna ten działający projekt jest też na moim blogu.<br /><a href="http://atmegan.blogspot.com/2014/02/obsuga-hy-320-ssd1289.html"  class="postlink">http://atmegan.blogspot.com/2014/02/obsuga-hy-320-ssd1289.html</a> <br />Jest tam parę zaleceń ode mnie, polecam sprawdzić <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />@atmel<br />Sprawdź dokładnie czy to ten sterownik. Jeśli kupiłeś taki sam wyświetlacz jak mój (HY-320), jest on w wersjach ze sterownikiem SSD1289 oraz ILI9320, gdzie te moje biblioteki nie podpasują do tego drugiego. Skoro są te szumy to jak kolega Janadamis napisał, coś musi być z dalszymi funkcjami, z SSD1289 działają więc mniemam że masz inny sterownik.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=381">mesho</a> — 28 kwi 2014, o 09:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mscichu]]></name></author>
<updated>2014-04-28T07:31:27+01:00</updated>
<published>2014-04-28T07:31:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=79497#p79497</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=79497#p79497"/>
<title type="html"><![CDATA[Re: SSD1289 inicjalizacja szum]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=79497#p79497"><![CDATA[
A czy na pewno jest to ten sterownik? Widziałem jeszcze SSD1206 i inne, ewentualnie podłączenie wyświetlacza?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=853">Mscichu</a> — 28 kwi 2014, o 07:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2014-04-27T23:56:16+01:00</updated>
<published>2014-04-27T23:56:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=79488#p79488</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=79488#p79488"/>
<title type="html"><![CDATA[Re: SSD1289 inicjalizacja szum]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=79488#p79488"><![CDATA[
Niestety zamieniając te biblioteki w dalszym ciągu problem pozostaje nierozwiązany...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 27 kwi 2014, o 23:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mscichu]]></name></author>
<updated>2014-04-27T21:43:02+01:00</updated>
<published>2014-04-27T21:43:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=79476#p79476</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=79476#p79476"/>
<title type="html"><![CDATA[Re: SSD1289 inicjalizacja szum]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=79476#p79476"><![CDATA[
Kolega mesho podesłał mi swojego czasu działający projekt, wstawię dla potomności, mam nadzieję, że nie będzie krzyczał <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=853">Mscichu</a> — 27 kwi 2014, o 21:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2014-04-27T19:30:50+01:00</updated>
<published>2014-04-27T19:30:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=79463#p79463</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=79463#p79463"/>
<title type="html"><![CDATA[Re: SSD1289 inicjalizacja szum]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=79463#p79463"><![CDATA[
Chciałbym odświeżyć temat, gdyż mam niestety identyczny problem mimo to iż zaktualizowałem swoje biblioteki zgodnie z tymi umieszczonymi na stronie  <!-- m --><a class="postlink" href="https://github.com/gpittarelli/avr-ssd1289/blob/master/TFT.c" >https://github.com/gpittarelli/avr-ssd1 ... ster/TFT.c</a><!-- m -->.<br /><br />Używam ATxmega128A3U taktowanego w sumie dowolnym zegarem jak to na xmega przystało <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Bardzo proszę o pomoc w tej sprawie bo już od przeszło tygodnia ręce mi opadają  <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />Biblioteka:<br /><br />[syntax=c]#include &quot;TFT.hpp&quot;<br />#include &quot;pins.hpp&quot;<br /><br />void TFT_write_command(uint16_t command)<br />{<br />LCD_STER.OUTCLR = LCD_CS;<br />LCD_STER.OUTCLR = LCD_RS;<br />LCD_DATA_H.OUT = command&gt;&gt;8;<br />LCD_DATA_L.OUT = command;<br />LCD_STER.OUTCLR = LCD_WR;<br />LCD_STER.OUTSET = LCD_WR;<br />LCD_STER.OUTSET = LCD_CS;<br />}<br /><br />void TFT_write_data(uint16_t data)<br />{<br />LCD_STER.OUTCLR = LCD_CS;<br />LCD_STER.OUTSET = LCD_RS;<br />LCD_DATA_H.OUT = data&gt;&gt;8;<br />LCD_DATA_L.OUT = data;<br />LCD_STER.OUTCLR = LCD_WR;<br />LCD_STER.OUTSET = LCD_WR;<br />LCD_STER.OUTSET = LCD_CS;<br />}<br /><br />void TFT_write_command_data(uint16_t command, uint16_t data)<br />{<br />TFT_write_command(command);<br />TFT_write_data(data);<br />}<br /><br />void LCD_Send_SSD1298(uint16_t command, uint16_t data)<br />{<br />TFT_write_command(command);<br />TFT_write_data(data);<br />}<br /><br />void TFT_write_address(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2)<br />{<br />TFT_write_command_data(0x0044, (x2&lt;&lt;8) + x1);<br />TFT_write_command_data(0x0045, y1);<br />TFT_write_command_data(0x0046, y2);<br />TFT_write_command_data(0x004e, x1);<br />TFT_write_command_data(0x004f, y1);<br />TFT_write_command(0x0022);<br />}<br /><br />void TFT_fill(uint16_t color)<br />{<br />TFT_write_address(0, 0, 239, 319);<br />TFT_write_data(color);<br />for(uint32_t i = 0; i &lt;= 0x9600; i++) {<br />LCD_STER.OUTCLR = LCD_CS;<br />LCD_STER.OUTCLR = LCD_WR;<br />LCD_STER.OUTSET = LCD_WR;<br />LCD_STER.OUTCLR = LCD_WR;<br />LCD_STER.OUTSET = LCD_WR;<br />LCD_STER.OUTSET = LCD_CS;<br />}<br />}<br /><br />void TFT_draw_box(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color)<br />{<br />uint16_t dx = x2 - x1 + 2, j;<br />LCD_STER.OUTCLR = LCD_CS;<br />TFT_write_address(x1, y1, x2, y2);<br />TFT_write_data(color);<br />y2 = (y2 - y1) + 2;<br />while (--y2) {<br />j = dx;<br />while (--j) {<br />LCD_STER.OUTCLR = LCD_WR;<br />LCD_STER.OUTSET = LCD_WR;<br />}<br />}<br />LCD_STER.OUTSET = LCD_CS;<br />}<br /><br />void TFT_box_outline(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t width, uint16_t color)<br />{<br />--width;<br />TFT_draw_box(x1, y1, x2, y1 + width, color);<br />TFT_draw_box(x1, y1 + width, x1 + width, y2 - width, color);<br />TFT_draw_box(x2 - width, y1 + width, x2, y2 - width, color);<br />TFT_draw_box(x1, y2 - width, x2, y2, color);<br />}<br /><br />void TFT_dot(uint16_t x, uint16_t y, uint16_t color)<br />{<br />LCD_STER.OUTCLR = LCD_CS;<br />TFT_write_address(x, y, x, y);<br />TFT_write_data(color);<br />LCD_STER.OUTSET = LCD_CS;<br />}<br /><br />uint16_t TFT_init(void)<br />{<br />LCD_DATA_L_DIR = 0xFF;<br />LCD_DATA_H_DIR = 0xFF;<br />LCD_DATA_L.OUT = 0x00;<br />LCD_DATA_H.OUT = 0x00;<br />LCD_STER_DIR |= LCD_CS|LCD_RD|LCD_WR|LCD_RS|LCD_RESET;<br />LCD_STER.OUTSET = LCD_CS|LCD_RD|LCD_WR|LCD_RS|LCD_RESET;<br />//_delay_ms(5);<br />LCD_STER.OUTCLR = LCD_CS;<br />LCD_STER.OUTCLR = LCD_RESET;<br />_delay_ms(20);<br />LCD_STER.OUTSET = LCD_RESET;<br />_delay_ms(20);<br /><br />LCD_Send_SSD1298(0x0000, 0x0001);_delay_ms(15);<br />LCD_Send_SSD1298(0x0003, 0xA8A4);<br />LCD_Send_SSD1298(0x000C, 0x0000);<br />LCD_Send_SSD1298(0x000D, 0x080C);<br />LCD_Send_SSD1298(0x000E, 0x2B00);<br />LCD_Send_SSD1298(0x001E, 0x00B8);_delay_ms(15);//0x00B70x00B0<br />LCD_Send_SSD1298(0x0001, 0x2B3F);<br />LCD_Send_SSD1298(0x0002, 0x0600);<br />LCD_Send_SSD1298(0x0010, 0x0000);_delay_ms(30);<br />LCD_Send_SSD1298(0x0011, 0x4030);_delay_ms(20);//0x6070<br />//LCD_Send_SSD1298(0x0007, 0b0001100100110011);//0x0233<br />LCD_Send_SSD1298(0x0005, 0x0000);<br />LCD_Send_SSD1298(0x0006, 0x0000);<br />LCD_Send_SSD1298(0x0016, 0xEF1C);<br />LCD_Send_SSD1298(0x0017, 0x0003);<br />LCD_Send_SSD1298(0x0007, 0b0001100100110011);//0x0233<br />LCD_Send_SSD1298(0x000B, 0x0000);<br />LCD_Send_SSD1298(0x000F, 0x0000);_delay_ms(20);<br />LCD_Send_SSD1298(0x0041, 0x0000);<br />LCD_Send_SSD1298(0x0042, 0x0000);<br />LCD_Send_SSD1298(0x0048, 0x0000);<br />LCD_Send_SSD1298(0x0049, 0x013F);<br />LCD_Send_SSD1298(0x004B, 0x0000);_delay_ms(30);<br />LCD_Send_SSD1298(0x0044, 0xEF00);<br />LCD_Send_SSD1298(0x0045, 0x0000);<br />LCD_Send_SSD1298(0x0046, 0x013F);<br />LCD_Send_SSD1298(0x0030, 0x0707);<br />LCD_Send_SSD1298(0x0031, 0x0204);<br />LCD_Send_SSD1298(0x0032, 0x0204);<br />LCD_Send_SSD1298(0x0033, 0x0502);<br />LCD_Send_SSD1298(0x0034, 0x0507);<br />LCD_Send_SSD1298(0x0035, 0x0204);<br />LCD_Send_SSD1298(0x0036, 0x0204);<br />LCD_Send_SSD1298(0x0037, 0x0502);<br />LCD_Send_SSD1298(0x003A, 0x0302);<br />LCD_Send_SSD1298(0x003B, 0x0302);<br />LCD_Send_SSD1298(0x0023, 0x0000);<br />LCD_Send_SSD1298(0x0024, 0x0000);<br />LCD_Send_SSD1298(0x0025, 0x8000);<br /><br />LCD_Send_SSD1298(0x004f, 0x0000);<br />LCD_Send_SSD1298(0x004e, 0x0000);<br />TFT_write_command(0x0022);<br /><br />LCD_STER.OUTSET = LCD_CS;<br />}<br /><br />void TFT_char(const uint8_t *font, uint8_t ch, uint16_t x, uint16_t y, uint16_t fg_color, uint16_t bg_color, uint16_t width, uint16_t height)<br />{<br />uint16_t j, k;<br />const uint8_t *bmp_addr = font + ((ch - ' ') * height * (width / 8));<br />uint8_t bmp_byte = 0, pixel_mask = 0x80;<br />uint8_t bit_set = 0;<br />LCD_STER.OUTCLR = LCD_CS;<br />TFT_write_address(x, y, x + width - 1, y + height - 1);<br />k = 0;<br />while (height--)<br />for (j = width; j; --j) {<br />if (!(k % 8)) {<br />bmp_byte = pgm_read_byte(bmp_addr++);<br />pixel_mask = 0x80;<br />}<br />bit_set = bmp_byte &amp; pixel_mask;<br />pixel_mask &gt;&gt;= 1;<br />++k;<br />if (bit_set)<br />TFT_write_data(fg_color);<br />else TFT_write_data(bg_color);<br />}<br />LCD_STER.OUTSET = LCD_CS;<br />}[/syntax]<br />Main:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &quot;Osc.hpp&quot;<br />#include &quot;TFT.hpp&quot;<br /><br />int main(void)<br />{<br />//Osc32MHz();<br />//OscPLL(2);<br /><br />TFT_init();<br />TFT_fill(0x001F);<br />TFT_draw_box(10, 20, 30, 40, 0x001F);<br /><br />while (true);<br />}[/syntax]<br /><br />Dodam jeszcze, że dzieją się dość dziwne rzeczy z samą konfiguracją F_CPU, tzn. gdy domyślnie procesor taktowany jest 2MHz i takie też jest ustawienie F_CPU, wtedy na wyświetlaczu nie ma absolutnie nic, ale tylko kiedy zmienię F_CPU na 32000000 zaczyna migać, później są widoczne szumy jak u Kol. mesho, następnie poziome kolorowe linie, a na samym końcu ponownie losowy kolorowy szum. Dostosowując zegar do ustawień F_CPU w dalszym ciągu nie wyświetla się absolutnie nic...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 27 kwi 2014, o 19:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mesho]]></name></author>
<updated>2014-02-02T12:09:10+01:00</updated>
<published>2014-02-02T12:09:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=68013#p68013</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=68013#p68013"/>
<title type="html"><![CDATA[Re: SSD1289 inicjalizacja szum]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=68013#p68013"><![CDATA[
Przy zakupie trzeba wygrzebać albo wypytać sprzedawcę, na jakim sterowniku jest ten wyświetlacz bo faktycznie HY-320 jest jak dobrze widzę w dwóch wersjach.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=381">mesho</a> — 2 lut 2014, o 12:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krish]]></name></author>
<updated>2014-02-01T22:10:18+01:00</updated>
<published>2014-02-01T22:10:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=67944#p67944</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=67944#p67944"/>
<title type="html"><![CDATA[Re: SSD1289 inicjalizacja szum]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=67944#p67944"><![CDATA[
Czy to jest na pewno kontroler SSD1289, widziałem na stronach sklepów te wyświetlacze (HY-320) z kontrolerem ILI9320.<br />A jeżeli dobrze pamiętam są one podobne ( kontrolery), ale jednak różnią się w wielu szczegółach.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2273">krish</a> — 1 lut 2014, o 22:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mesho]]></name></author>
<updated>2014-02-01T22:04:19+01:00</updated>
<published>2014-02-01T22:04:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=67939#p67939</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=67939#p67939"/>
<title type="html"><![CDATA[Re: SSD1289 inicjalizacja szum]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=67939#p67939"><![CDATA[
Janadamis - i tu był pies pogrzebany! <img src="https://forum.atnel.pl/images/smilies/icon_twisted.gif" alt=":twisted:" title="Szalony" /> Znalazłem poprawne funkcje na stronie <a href="https://github.com/gpittarelli/avr-ssd1289/blob/master/TFT.c"  class="postlink">https://github.com/gpittarelli/avr-ssd1289/blob/master/TFT.c</a>, szkoda że na nich nie zacząłem bazować, ale trudno grunt że udało się problem rozwikłać <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Dziękuję za pomoc! <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=381">mesho</a> — 1 lut 2014, o 22:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Janadamis]]></name></author>
<updated>2014-02-01T21:26:34+01:00</updated>
<published>2014-02-01T21:26:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=67925#p67925</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=67925#p67925"/>
<title type="html"><![CDATA[Re: SSD1289 inicjalizacja szum]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=67925#p67925"><![CDATA[
Szumi bo ma szumieć każdy po inicjalizacji będzie tak szumiał te kolory to przypadkowe wartości w pamięci SRAM sterownika A skoro je widzisz to znaczy że inicjalizacja działa. Pisałeś że jak podasz funkcje testowe to tylko piksele w pierwszej linii się zmieniają? Czyli masz kłopot z tymi funkcjami. A dokłądnie to pewnie o funkcję ustalającą współrzędną.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=288">Janadamis</a> — 1 lut 2014, o 21:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mscichu]]></name></author>
<updated>2014-02-01T20:50:15+01:00</updated>
<published>2014-02-01T20:50:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=67914#p67914</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=67914#p67914"/>
<title type="html"><![CDATA[Re: SSD1289 inicjalizacja szum]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=67914#p67914"><![CDATA[
jak uruchomiłem test to w szumie można było &quot;kwiatek&quot; dostrzec <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=853">Mscichu</a> — 1 lut 2014, o 20:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mesho]]></name></author>
<updated>2014-02-01T19:40:40+01:00</updated>
<published>2014-02-01T19:40:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=67884#p67884</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=67884#p67884"/>
<title type="html"><![CDATA[Re: SSD1289 inicjalizacja szum]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=67884#p67884"><![CDATA[
Problem wciąż w toku rozkminiania, ale dzięki za sprawdzenie, w takim razie opcje wadliwego wyświetlacza czy połączeń będzie można wykluczyć, przynajmniej jest jakaś poszlaka. A jeszcze dziś z uporem maniaka lutowałem krótszy zestaw kabli przyłączeniowych - na darmo  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> <br />Temat jeszcze zapodałem na elektrodzie i avrfreaks, na tym drugim polecili mi sprawdzić połączenia jednak nie tędy droga. Chyba jeszcze raz wezmę notę w łapkę i krok po kroku prześledzę, bo bankowo musi to być coś z tą funkcją uruchamiającą wyświetlacz...  <img src="https://forum.atnel.pl/images/smilies/icon_evil.gif" alt=":evil:" title="Zły" /> <br /><br />Tak dokładnie wygląda efekt zamalowania całego ekranu.<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/381/f2585b1fa1dc7105d5d9461da66e128b.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/381/f2585b1fa1dc7105d5d9461da66e128b.JPG" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=381">mesho</a> — 1 lut 2014, o 19:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mscichu]]></name></author>
<updated>2014-02-01T17:29:22+01:00</updated>
<published>2014-02-01T17:29:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=67815#p67815</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=67815#p67815"/>
<title type="html"><![CDATA[Re: SSD1289 inicjalizacja szum]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=67815#p67815"><![CDATA[
Witaj!<br /><br />Podłączyłem wyświetlacz działa identycznie jak u kolegi, więc odpada wina wyświetlacza;) może już kolega poradził sobie z problemem?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=853">Mscichu</a> — 1 lut 2014, o 17:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mesho]]></name></author>
<updated>2014-01-30T15:29:40+01:00</updated>
<published>2014-01-30T15:29:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=67440#p67440</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=67440#p67440"/>
<title type="html"><![CDATA[SSD1289 inicjalizacja szum]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5747&amp;p=67440#p67440"><![CDATA[
Witam!<br /><br />Wziąłem na tapetę sobie wyświetlacz HY-320 na sterowniku SSD1289. Na podstawie bibliotek ze strony <a href="http://sourceforge.net/projects/lcdtfthx8347a/files/code_release_src/"  class="postlink">http://sourceforge.net/projects/lcdtfthx8347a/files/code_release_src/</a> przygotowałem sobie funkcje najniższego rzędu, bez dodatków karty SD czy touchpanelu, aby dojść do jakiegokolwiek kontaktu z LCD. <br /><br />Otóż gdy puszczam funkcje inicjalizującą, na ekranie wyskakuje szum jak na zdjęciu:<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/381/2eabd958aa4bae6160e1345de7663f09.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/381/2eabd958aa4bae6160e1345de7663f09.JPG" alt="Obrazek" /></a><br /><br />Kiedy puszczam funkcje testowe, zmienia się niecała pierwsza pozioma linia pikseli, reszta dalej bujnie szumi.<br /><br />Popędzam wszystko z ATB, zgodnie z opisem LCD toleruje sygnały 3,3V więc wszystko zasilam 3,3V. Mikrokontroler Atmega32A, próbowałem z częstotliwościami 8MHz oraz 16MHz.<br /><br />[syntax=c]/* lcd definition */<br />#define LCD_STER_DIR DDRD<br />#define LCD_STER PORTD<br />#define LCD_CS (1&lt;&lt;PD7)<br />#define LCD_RD (1&lt;&lt;PD6)<br />#define LCD_WR (1&lt;&lt;PD5)<br />#define LCD_RS (1&lt;&lt;PD4)<br />#define LCD_RESET (1&lt;&lt;PD3)<br /><br /><br /><br />/* 16 bitowa magistrala danych lcd */<br />#define LCD_DATA_L PORTC<br />#define LCD_DATA_H PORTA<br />#define LCD_DATA_L_DIR DDRC // for direction<br />#define LCD_DATA_H_DIR DDRA // for direction[/syntax]<br /><br />Podłączam piny:<br />DB0 do DB7 -&gt; PC0 do PC7<br />DB8 do DB15 -&gt; PA0 do PA7<br />Sterujące jak w nagłówku czyli: <br />CS PD7<br />RD PD6<br />WR PD5<br />RS PD4<br />RESET PD3<br /><br />[syntax=c]/*<br /> *SSD1289.c<br /> *<br /> *  Author: Guillaume Sahuc<br /> <br /> This program is free software: you can redistribute it and/or modify<br /> it under the terms of the GNU General Public License as published by<br /> the Free Software Foundation, either version 3 of the License, or<br /> (at your option) any later version.<br /><br /> This program is distributed in the hope that it will be useful,<br /> but WITHOUT ANY WARRANTY; without even the implied warranty of<br /> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the<br /> GNU General Public License for more details.<br /><br /> You should have received a copy of the GNU General Public License<br /> along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.<br /><br /> */<br /><br />#include &quot;board.h&quot;<br />#include &quot;color16bits.h&quot;<br />#include &quot;fonts.h&quot;<br />#include &quot;SSD1289.h&quot;<br />#include &lt;math.h&gt;<br />#include &lt;stdio.h&gt; /*  pour printf , sprintf ... */ <br />#include &lt;stdlib.h&gt; /* pour abs */<br />#include &quot;main.h&quot;<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;string.h&gt;<br /><br />extern uint8_t buffer_16&#91;6&#93;;<br />//extern uint8_t buffer_32&#91;11&#93;;<br /><br />// échange de valeur entre 2 adresses<br />void swap(uint16_t *a, uint16_t *b) {<br />uint16_t temp = *a;<br />*a = *b;<br />*b = temp;<br />}<br />//--------------------(--HIGHBYTE---,------LOWBYTE-)<br />void Lcd_Write_Com_2x8(uint8_t addr_H, uint8_t addr_L) {<br />LCD_STER &amp;= ~(LCD_CS | LCD_RS);<br />LCD_DATA_H = addr_H;<br />LCD_DATA_L = addr_L;<br />LCD_STER &amp;= ~(LCD_WR);<br />LCD_STER |= (LCD_WR | LCD_RS | LCD_CS);<br />}<br /><br />void Lcd_Write_DATA_2x8(uint8_t data_H, uint8_t data_L) {<br />LCD_STER &amp;= ~(LCD_CS);<br />LCD_STER |= (LCD_RS);<br />LCD_DATA_H = data_H;<br />LCD_DATA_L = data_L;<br />LCD_STER &amp;= ~(LCD_WR);<br />LCD_STER |= (LCD_WR | LCD_CS);<br />}<br /><br />void Lcd_Write_DATA_16(uint16_t data) {<br />LCD_STER &amp;= ~(LCD_CS);<br />LCD_STER |= (LCD_RS);<br />LCD_DATA_H = data &gt;&gt; 8;<br />LCD_DATA_L = data;<br />LCD_STER &amp;= ~(LCD_WR);<br />LCD_STER |= (LCD_WR | LCD_CS);<br />}<br /><br />// envoi d'une donnée LSB sur le bus de données ( 8 bits LCD )<br />void Lcd_Write_DATA_8(uint8_t data) {<br />LCD_STER &amp;= ~(LCD_CS);<br />LCD_STER |= (LCD_RS);<br />LCD_DATA_L = data;<br />LCD_STER &amp;= ~(LCD_WR);<br />LCD_STER |= (LCD_WR | LCD_CS);<br />}<br /><br />void Lcd_W_com_data_4x8(uint8_t address_H, uint8_t address_L, uint8_t data_H,<br />uint8_t data_L) {<br />Lcd_Write_Com_2x8(address_H, address_L); // addresse registre<br />Lcd_Write_DATA_2x8(data_H, data_L); // Donnée ŕ stocker dans le registre<br />}<br /><br />// write command + data<br />void Lcd_W_com_data_8(uint8_t address_H, uint8_t address_L, uint8_t data) {<br />Lcd_Write_Com_2x8(address_H, address_L); // addresse registre<br />Lcd_Write_DATA_8(data); // Donnée ŕ stocker dans le registre<br />}<br /><br />// Lecture d'un registre uniquement le LSB (8bits D7 ŕ D0) <br />uint8_t Lcd_Read_data_8() {<br />uint8_t data;<br />LCD_DATA_L_DIR = 0x00; // wejscie<br />LCD_STER &amp;= ~(LCD_CS);<br />LCD_STER |= (LCD_RS);<br />LCD_STER &amp;= ~(LCD_RD);<br />LCD_STER |= (LCD_RD);<br />data = LCD_DATA_L;  // lecture du registre<br />LCD_STER |= (LCD_CS);<br />LCD_DATA_L_DIR = 0xFF; //z powrotem jako wyjscie<br />return data;<br />}<br /><br />// Read 8 bits LSB register <br />// return 8 bits data from index register<br />uint8_t Lcd_R_com_data_8(uint8_t address_H, uint8_t address_L) {<br />Lcd_Write_Com_2x8(address_H, address_L); // addresse registre<br />return Lcd_Read_data_8();  // read register<br />}<br /><br /><br />void Lcd_Write_Com_Data(unsigned int com,unsigned int dat)<br />{<br />Lcd_Write_Com_2x8(com&gt;&gt;8,com);<br />Lcd_Write_DATA_2x8(dat&gt;&gt;8,dat);<br />}<br /><br />// fonction définition de la zone écran +  position sur l'ecran ( mode vertical ) <br />void Lcd_address_set(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) {<br />uint8_t array&#91;8&#93; = { 0 };<br />memcpy(&amp;array&#91;0&#93;, &amp;x1, sizeof(uint16_t));<br />memcpy(&amp;array&#91;2&#93;, &amp;y1, sizeof(uint16_t));<br />memcpy(&amp;array&#91;4&#93;, &amp;x2, sizeof(uint16_t));<br />memcpy(&amp;array&#91;6&#93;, &amp;y2, sizeof(uint16_t));<br />Lcd_W_com_data_4x8(0x00, 0x44, array&#91;5&#93;, array&#91;1&#93;); // end + start  horizontal<br />Lcd_W_com_data_4x8(0x00, 0x45, array&#91;2&#93; &amp; 0x01, array&#91;3&#93;);//vertical start<br />Lcd_W_com_data_4x8(0x00, 0x46, array&#91;6&#93; &amp; 0x01, array&#91;7&#93;); //vertical end<br />Lcd_W_com_data_4x8(0x00, 0x4e, array&#91;0&#93;, array&#91;1&#93;);//set GDDRAM adress counter<br />Lcd_W_com_data_4x8(0x00, 0x4f, array&#91;2&#93; &amp; 0x01, array&#91;3&#93;);//set GDDRAM adress counter<br />Lcd_Write_Com_2x8(0x00, 0x22);// transform data into 16 bits bus before write to GRAM<br />}<br /><br />// fonction de changement de position sur l'ecran<br />void Lcd_Position_Set(uint16_t x1, uint16_t y1) {<br />uint8_t array&#91;4&#93; = { 0 };<br />memcpy(&amp;array&#91;0&#93;, &amp;x1, sizeof(uint16_t));<br />memcpy(&amp;array&#91;2&#93;, &amp;y1, sizeof(uint16_t));<br />Lcd_W_com_data_4x8(0x00, 0x4e, array&#91;0&#93;, array&#91;1&#93;);//set GDDRAM adress counter<br />Lcd_W_com_data_4x8(0x00, 0x4f, array&#91;2&#93; &amp; 0x01, array&#91;3&#93;);//set GDDRAM adress counter<br />Lcd_Write_Com_2x8(0x00, 0x22);// transform data into 16 bits bus before write to GRAM<br />}<br /><br />// conversion d'une donnée integer en string<br />// string&#91;6&#93;<br />void IntToStr(uint16_t dd, uint8_t* str) {<br />sprintf(str, &quot;%d&quot;, dd);<br />}<br /><br />// conversion d'une donnée long en string<br />// string&#91;11&#93;<br />void LongToStr(uint32_t dd, uint8_t* str) {<br />sprintf(str, &quot;%ld&quot;, dd);<br />}<br /><br />//dcolor = data color <br />//bgcolor = background color<br />//fonction d'affichage d'un caractere avec l'utilisation d'un user font <br />void Lcd_PutChar(uint16_t x, uint16_t y, uint8_t value, uint8_t dcolor_H,<br />uint8_t dcolor_L, uint8_t bgcolor_H, uint8_t bgcolor_L) {<br />uint8_t i, j;<br />//const FONT *FontTemp = fonts&#91;UserFont&#93;;<br />const uint8_t *temp = FontTemp-&gt;data;<br />Lcd_address_set(x, y, x + (FontTemp-&gt;width - 1),<br />y + (FontTemp-&gt;height - 1));<br />temp += value * FontTemp-&gt;height;<br />for (j = 0; j &lt; FontTemp-&gt;height; j++) {<br />for (i = 0; i &lt; FontTemp-&gt;width; i++) {<br />if ((*temp &amp; (1 &lt;&lt; (7 - i))) != 0) {<br />Lcd_Write_DATA_2x8(dcolor_H, dcolor_L);<br />} else {<br />Lcd_Write_DATA_2x8(bgcolor_H, bgcolor_L);<br />}<br />}<br />temp++;<br />}<br />}<br /><br />// fonction d'affichage sur l'écran : position + donnée ŕ afficher + couleur de la donnée + couleur de fond<br />void Lcd_print(uint16_t Column, uint16_t Row, uint8_t* str, uint8_t dcolor_H,<br />uint8_t dcolor_L, uint8_t bgcolor_H, uint8_t bgcolor_L) {<br />uint8_t MaxLineChar;<br />//const FONT *FontTemp = fonts&#91;UserFont&#93;;<br />/*-----------------*/<br />MaxLineChar = (uint8_t) (LCD_WIDTH / (FontTemp-&gt;width));<br />/*-----------------*/<br />while (*str != '\0') {<br />if ((Column &gt;= MaxLineChar * FontTemp-&gt;width) || (*str == 0x0D)<br />|| (*str == 0x0A))//ŕ chaque depassement de l'écran ou caractčre dédié = retour ŕ la ligne<br />{<br />Row += FontTemp-&gt;height;<br />Column = 0;<br />}<br />while ((*str == 0x0D) || (*str == 0x0A)) {<br />str++;<br />} //si plusieur retour ŕ la ligne on les ignores.<br />if (*str == '\0') {<br />break;<br />}<br />Lcd_PutChar(Column, Row, *str, dcolor_H, dcolor_L, bgcolor_H,<br />bgcolor_L);<br />Column += FontTemp-&gt;width;<br />str++;<br />}<br />}<br /><br />void Init_LCD(void) {<br />LCD_DATA_L_DIR = 0xFF;<br />LCD_DATA_H_DIR = 0xFF;<br />LCD_DATA_L = 0xFF;<br />LCD_DATA_H = 0xFF;<br /><br />LCD_STER_DIR = 0xFF;<br />LCD_STER |= LCD_CS | LCD_RD | LCD_WR | LCD_RS | LCD_RESET;<br /><br />LCD_STER |= LCD_RESET;<br />_delay_ms(1);<br />LCD_STER &amp;= ~(LCD_RESET);<br />_delay_ms(15);<br />LCD_STER |= LCD_RESET;<br />_delay_ms(15);<br /><br /><br />/*SSD1289*/<br />Lcd_W_com_data_4x8(0x00, 0x07, 0x00, 0x21);  //display control<br />Lcd_W_com_data_4x8(0x00, 0x00, 0x00, 0x01);  //oscillator start<br />Lcd_W_com_data_4x8(0x00, 0x07, 0x00, 0x23);<br />Lcd_W_com_data_4x8(0x00, 0x03, 0xAE, 0xAC);<br />Lcd_W_com_data_4x8(0x00, 0x0C, 0x00, 0x07);<br />Lcd_W_com_data_4x8(0x00, 0x0D, 0x00, 0x0F);<br />Lcd_W_com_data_4x8(0x00, 0x0E, 0x29, 0x00);<br />Lcd_W_com_data_4x8(0x00, 0x1E, 0x00, 0xB3);<br />_delay_ms(15);<br />Lcd_W_com_data_4x8(0x00, 0x01, 0x2b, 0x3F);<br />Lcd_W_com_data_4x8(0x00, 0x02, 0x06, 0x00);<br />Lcd_W_com_data_4x8(0x00, 0x10, 0x00, 0x00);<br />Lcd_W_com_data_4x8(0x00, 0x11, 0x60, 0xB0); // ID=11  AM=0<br />_delay_ms(15);<br />Lcd_W_com_data_4x8(0x00, 0x05, 0x00, 0x00);<br />Lcd_W_com_data_4x8(0x00, 0x06, 0x00, 0x00);<br />Lcd_W_com_data_4x8(0x00, 0x16, 0xEF, 0x1C);<br />Lcd_W_com_data_4x8(0x00, 0x17, 0x00, 0x03);<br />Lcd_W_com_data_4x8(0x00, 0x07, 0x02, 0x33);<br />Lcd_W_com_data_4x8(0x00, 0x0B, 0x53, 0x12);<br />Lcd_W_com_data_4x8(0x00, 0x0F, 0x00, 0x00);<br />_delay_ms(15);<br />Lcd_W_com_data_4x8(0x00, 0x41, 0x00, 0X00); // scroll screen 1<br />Lcd_W_com_data_4x8(0x00, 0x42, 0x00, 0x00); // scroll screen 2<br />Lcd_W_com_data_4x8(0x00, 0x48, 0x00, 0x00); // first screen start<br />Lcd_W_com_data_4x8(0x00, 0x49, 0x01, 0x3F); // first screen end<br />Lcd_W_com_data_4x8(0x00, 0x44, 0xEF, 0x00);<br />Lcd_W_com_data_4x8(0x00, 0x45, 0x00, 0x00);<br />Lcd_W_com_data_4x8(0x00, 0x46, 0x01, 0x3F);<br />Lcd_W_com_data_4x8(0x00, 0x4A, 0x00, 0x00); // second screen start<br />Lcd_W_com_data_4x8(0x00, 0x4B, 0x00, 0x00); // second screen end<br />_delay_ms(15);<br />Lcd_W_com_data_4x8(0x00, 0x30, 0x07, 0x07);<br />Lcd_W_com_data_4x8(0x00, 0x31, 0x07, 0x04);<br />Lcd_W_com_data_4x8(0x00, 0x32, 0x02, 0x04);<br />Lcd_W_com_data_4x8(0x00, 0x33, 0x02, 0x01);<br />Lcd_W_com_data_4x8(0x00, 0x34, 0x02, 0x03);<br />Lcd_W_com_data_4x8(0x00, 0x35, 0x02, 0x04);<br />Lcd_W_com_data_4x8(0x00, 0x36, 0x02, 0x04);<br />Lcd_W_com_data_4x8(0x00, 0x37, 0x05, 0x02);<br />Lcd_W_com_data_4x8(0x00, 0x3A, 0x03, 0x02);<br />Lcd_W_com_data_4x8(0x00, 0x3B, 0x05, 0x00);<br />Lcd_W_com_data_4x8(0x00, 0x23, 0x00, 0x00);<br />Lcd_W_com_data_4x8(0x00, 0x24, 0x00, 0x00);<br />Lcd_W_com_data_4x8(0x00, 0x25, 0x80, 0x00); //ajout<br />_delay_ms(20);<br />Lcd_Write_Com_2x8(0x00, 0x22);<br /><br /><br />}<br /><br />// activation du mode scroll = rotation axe y de l'écran ( verticale ) <br />void Lcd_Scroll_On(void) {<br />Lcd_W_com_data_4x8(0x00, 0x07, 0x02, 0x33);<br />}<br /><br />void Lcd_Scroll_Off(void) {<br />Lcd_W_com_data_4x8(0x00, 0x07, 0x00, 0x33);<br />}<br /><br />void Lcd_On(void) {<br />// Display ON Setting<br />Lcd_W_com_data_4x8(0x00, 0x07, 0x00, 0x21);  //display control<br />Lcd_W_com_data_4x8(0x00, 0x00, 0x00, 0x01);  //oscillator start<br />Lcd_W_com_data_4x8(0x00, 0x07, 0x00, 0x23);<br />Lcd_W_com_data_4x8(0x00, 0x10, 0x00, 0x00);<br />_delay_ms(30);<br />Lcd_W_com_data_4x8(0x00, 0x07, 0x00, 0x33);<br />Lcd_W_com_data_4x8(0x00, 0x11, 0x60, 0xB0); // ID=11  AM=0<br />Lcd_W_com_data_4x8(0x00, 0x02, 0x06, 0x00);<br />Lcd_Write_Com_2x8(0x00, 0x22);<br />}<br /><br />void Lcd_Off(void) {<br />Lcd_W_com_data_4x8(0x00, 0x07, 0x00, 0x00);<br />Lcd_W_com_data_4x8(0x00, 0x00, 0x00, 0x00);<br />Lcd_W_com_data_4x8(0x00, 0x10, 0x00, 0x01);<br />}<br /><br />void SDD1289_STANDBY_ON(void) {<br />// Display Off<br />Lcd_W_com_data_4x8(0x00, 0x10, 0x00, 0x01);<br /><br />}<br /><br />void SSD1289_STANDBY_OFF(void) {<br />// Start Oscillation<br />Lcd_W_com_data_4x8(0x00, 0x10, 0x00, 0x00);<br />}<br /><br />/*! \configuration de la zone de scrolling.<br /> *<br /> *  @param VL1 1er écran  <br /> *  @param VL2 2eme écran <br /> *<br /> */<br />void Lcd_ScrollAreaSetup(uint16_t VL1, uint16_t VL2) {<br />uint8_t array&#91;4&#93; = { 0 };<br />memcpy(&amp;array&#91;0&#93;, &amp;VL1, sizeof(uint16_t));<br />memcpy(&amp;array&#91;2&#93;, &amp;VL2, sizeof(uint16_t));<br />Lcd_W_com_data_4x8(0x00, 0x41, array&#91;0&#93;, array&#91;1&#93;);<br />Lcd_W_com_data_4x8(0x00, 0x42, array&#91;2&#93;, array&#91;3&#93;);<br />}<br /><br />// allumage d'un pixel + couleur<br />void LCD_setPixel(uint16_t x, uint16_t y, uint8_t color_H, uint8_t color_L) {<br />Lcd_address_set(x, y, x, y); //x_start,y_start,x_end,y_end<br />Lcd_Write_DATA_2x8(color_H, color_L);<br />}<br /><br />//affichage d'une boite pleine<br />void Lcd_Fill_Box(uint16_t x, uint16_t y, uint16_t longueur, uint16_t largeur,<br />uint8_t color_H, uint8_t color_L) {<br />uint16_t i, j;<br />Lcd_address_set(x, y, longueur, largeur); //x_start,y_start,x_end,y_end<br />for (i = 0; i != largeur + 1; i++) {<br />Lcd_Write_DATA_2x8(color_H, color_L);<br />for (j = 0; j != longueur + 1; j++) {<br />LCD_STER &amp;= ~(LCD_CS);<br />LCD_STER &amp;= ~(LCD_WR);<br />LCD_STER |= (LCD_WR);<br />LCD_STER |= (LCD_CS);<br />}<br />Lcd_address_set(x, y + i, 239, 319); //x_start,y_start,x_end,y_end<br /><br />}<br />}<br /><br />// Affichage d'une ligne<br />void Lcd_Line(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1,<br />uint8_t color_H, uint8_t color_L) {<br />uint16_t dy = y1 - y0;<br />uint16_t dx = x1 - x0;<br />float m = 0;<br />uint16_t b = 0;<br /><br />if ((dy == 0) &amp;&amp; (dx == 0)) {<br />LCD_setPixel(x0, y0, color_H, color_L);<br />return;<br />} else if (dy == 0) {<br />Lcd_Fill_Box(x0, y0, x1, 1, color_H, color_L); // horizontal<br />return;<br />} else if (dx == 0) {<br />Lcd_Fill_Box(x0, y0, 0, y1, color_H, color_L); // vertical<br />return;<br />} else // if (dx != 0)<br />{<br />m = ((float) (dy)) / (dx);<br />b = y0 - (int) (m * x0);<br />}<br /><br />Lcd_address_set(0, 0, 239, 319); //x_start,y_start,x_end,y_end<br /><br />if (abs(dx) &gt;= abs(dy)) {<br />if (x0 &gt; x1) {<br />swap(&amp;x0, &amp;x1);<br />swap(&amp;y0, &amp;y1);<br />}<br /><br />while (x0 &lt;= x1) {<br />LCD_setPixel(x0, y0, color_H, color_L);<br />x0++;<br />if (x0 &lt;= x1) {<br />y0 = (int) (m * x0) + b;<br />}<br />}<br />} else {<br />if (y0 &gt; y1) {<br />swap(&amp;x0, &amp;x1);<br />swap(&amp;y0, &amp;y1);<br />}<br />while (y0 &lt;= y1) {<br />LCD_setPixel(x0, y0, color_H, color_L);<br />y0++;<br />if (y0 &lt;= y1) {<br />if (dx != 0) {<br />x0 = (uint16_t) ((float) ((y0 - b) / m));<br />}<br />}<br />}<br />}<br />}<br /><br />// remplissage de l'ecran avec une couleur <br />void Lcd_Fill(uint8_t color_H, uint8_t color_L) // &lt;!&gt; in vertical mode &lt;!&gt;<br />{<br />uint16_t i, j;<br />Lcd_address_set(0, 0, 239, 319); //x_start,y_start,x_end,y_end<br />Lcd_Write_DATA_2x8(color_H, color_L);<br />for (i = 0; i != 320; i++) {<br />for (j = 0; j != 240; j++) {<br />LCD_STER &amp;= ~(LCD_CS);<br />LCD_STER &amp;= ~(LCD_WR);<br />LCD_STER |= (LCD_WR);<br />LCD_STER |= (LCD_CS);<br />}<br />}<br />}<br /><br />// remplissage écran en mode horizontale<br />void Lcd_Fill_H(uint8_t color_H, uint8_t color_L) {<br />uint16_t i, j;<br />Lcd_W_com_data_4x8(0x00, 0x11, 0x60, 0x38); // registre qui permet de modifier l'orientation de l'écran &quot;paysage&quot; ( landscape )<br />Lcd_address_set(0, 0, 239, 319); //x_start,y_start,x_end,y_end<br />Lcd_Write_DATA_2x8(color_H, color_L);<br />for (j = 0; j != 240; j++) {<br />for (i = 0; i != 320; i++) {<br />LCD_STER &amp;= ~(LCD_CS);<br />LCD_STER &amp;= ~(LCD_WR);<br />LCD_STER |= (LCD_WR);<br />LCD_STER |= (LCD_CS);<br />}<br /><br />}<br />//retour vers l'orientation portrait<br />Lcd_W_com_data_4x8(0x00, 0x11, 0x60, 0xB0);<br />; // MY=0, MX=0, MV=0, ML=1, BGR=0=RGB if 1=BGR, TEON=0<br />}<br /><br />// affichage d'une boite non pleine ( position de départ + longueur + largeur + couleur ) <br />void Lcd_Box(uint16_t x, uint16_t y, uint16_t longueur, uint16_t largeur,<br />uint8_t color_H, uint8_t color_L) {<br />/*+----------------------------+<br /> |   |<br /> |   |<br /> +----------------------------+*/<br />Lcd_Line(x, y, longueur, y, color_H, color_L);<br />Lcd_Line(x + longueur, y, x + longueur, largeur, color_H, color_L);<br />Lcd_Line(x, y + largeur, longueur, y + largeur, color_H, color_L);<br />Lcd_Line(x, y, x, largeur, color_H, color_L);<br />}<br /><br />// affichage d'un cercle ( radius = rayon )<br />void LCD_Circle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius, uint8_t color_H,<br />uint8_t color_L) { //algo d'Andres<br />uint16_t D;/* Decision Variable */<br />uint16_t CurX;/* Current X Value */<br />uint16_t CurY;/* Current Y Value */<br /><br />D = Radius - 1;<br />CurX = 0;<br />CurY = Radius;<br />while (CurY &gt;= CurX) {<br />LCD_setPixel(Xpos + CurX, Ypos + CurY, color_H, color_L);<br />LCD_setPixel(Xpos + CurX, Ypos - CurY, color_H, color_L);<br />LCD_setPixel(Xpos - CurX, Ypos + CurY, color_H, color_L);<br />LCD_setPixel(Xpos - CurX, Ypos - CurY, color_H, color_L);<br />LCD_setPixel(Xpos + CurY, Ypos + CurX, color_H, color_L);<br />LCD_setPixel(Xpos + CurY, Ypos - CurX, color_H, color_L);<br />LCD_setPixel(Xpos - CurY, Ypos + CurX, color_H, color_L);<br />LCD_setPixel(Xpos - CurY, Ypos - CurX, color_H, color_L);<br />if (D &gt;= 2 * CurX) {<br />D = D - 2 * CurX - 1;<br />CurX++;<br />} else if (D &lt;= (2 * (Radius - CurY))) {<br />D = D + 2 * CurY - 1;<br />CurY--;<br />} else {<br />D += 2 * (CurY - CurX - 1);<br />CurY--;<br />CurX++;<br />}<br /><br />}<br />}<br /><br />// affichage d'un cercle plein<br />void LCD_Fill_Circle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius,<br />uint8_t color_H, uint8_t color_L) {<br />while (Radius &gt;= 0) {<br />LCD_Circle(Xpos, Ypos, Radius, color_H, color_L);<br />Radius--;<br />}<br />}<br /><br />void Lcd_test(void) {<br />uint16_t i = 0;<br />Lcd_Fill(COLOR_2x8BITS_RED);<br />Lcd_Fill_H(COLOR_2x8BITS_GREEN);<br />Lcd_Fill(COLOR_2x8BITS_BLUE);<br />Lcd_Fill_H(COLOR_2x8BITS_YELLOW);<br />Lcd_Fill(COLOR_2x8BITS_TURQUOISE);<br />Lcd_Fill_H(COLOR_2x8BITS_OLIVE);<br />Lcd_Fill(COLOR_2x8BITS_LIGHTGREEN);<br />Lcd_Fill_H(COLOR_2x8BITS_SILVER);<br />Lcd_Fill(COLOR_2x8BITS_TOMATO);<br />Lcd_Fill_H(COLOR_2x8BITS_BLACK);<br />Lcd_Fill(COLOR_2x8BITS_DARKVIOLET);<br />Lcd_Fill(COLOR_2x8BITS_BLACK);<br />//Lcd_print(82, 5, &quot;HELLO WORLD&quot;, COLOR_2x8BITS_WHITE, COLOR_2x8BITS_BLACK);<br />Lcd_Line(120, 0, 120, 319, COLOR_2x8BITS_RED);<br />Lcd_Line(0, 160, 239, 160, COLOR_2x8BITS_RED);<br />Lcd_Line(0, 0, 239, 319, COLOR_2x8BITS_RED);<br />Lcd_Line(0, 319, 239, 0, COLOR_2x8BITS_RED);<br />Lcd_Box(60, 80, 120, 160, COLOR_2x8BITS_RED);<br />LCD_Circle(120, 160, 60, COLOR_2x8BITS_RED);<br />LCD_Circle(120, 160, 119, COLOR_2x8BITS_RED);<br />LCD_Fill_Circle(60, 40, 10, COLOR_2x8BITS_RED);<br />LCD_Fill_Circle(100, 40, 10, COLOR_2x8BITS_GREEN);<br />LCD_Fill_Circle(140, 40, 10, COLOR_2x8BITS_BLUE);<br />LCD_Fill_Circle(180, 40, 10, COLOR_2x8BITS_WHITE);<br /><br />for (i = 0; i != 321; i++) {<br />Lcd_ScrollAreaSetup(i, 0x0000);<br />_delay_ms(25);<br />}<br />}<br /><br />void Lcd_test2(void) {<br />uint16_t i, j;<br />uint8_t color_H, color_L;<br />while (color_H != 0xFF) {<br />for (j = 10; j &lt; LCD_LENGTH; j = j + 40) {<br />for (i = 10; i &lt; LCD_WIDTH; i = i + 40) {<br />Lcd_Fill_Box(i, j, 20, 20, color_H, color_L);<br />}<br />}<br />color_H += 1;<br />color_L += 5;<br />}<br />}<br /><br />void Lcd_test3(void) {<br />uint8_t color_H = 0, color_L = 0;<br /><br />while (color_H != 0xFF) {<br />Lcd_Fill(color_H, color_L);<br />color_H += 1;<br />color_L += 5;<br />}<br /><br />}<br /><br />void Lcd_test4(void) {<br />//RED += 1;<br />//GREEN += 2; <br />BLUE += 1;<br />Lcd_Fill(COLOR2, COLOR1);<br />IntToStr(_COLOR16BITS.Word, buffer_16);<br />Lcd_print(0, 0, buffer_16, COLOR_2x8BITS_WHITE, COLOR_2x8BITS_BLACK);<br />}<br /><br />void Lcd_test5(void) {<br />RED += 1;<br />GREEN += 2;<br />BLUE += 1;<br />Lcd_print(40, 0, &quot;----HELLO WORLD----&quot;, COLOR_2x8BITS_WHITE,<br />COLOR_2x8BITS_BLACK);<br />Lcd_print(40, 20, &quot;LOADING...&quot;, COLOR2, COLOR1, COLOR_2x8BITS_BLACK);<br />_delay_ms(1);<br />}[/syntax]<br /><br />W czym może być problem?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=381">mesho</a> — 30 sty 2014, o 15:29</p><hr />
]]></content>
</entry>
</feed>