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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-06-24T22:16:30+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=20915&amp;mode</id>
<entry>
<author><name><![CDATA[grzegorz1959]]></name></author>
<updated>2018-06-24T22:16:30+01:00</updated>
<published>2018-06-24T22:16:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20915&amp;p=209290#p209290</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20915&amp;p=209290#p209290"/>
<title type="html"><![CDATA[TFT LCD 3,5' ILI9486 Problem z podświetlaniem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20915&amp;p=209290#p209290"><![CDATA[
Zakupiłem dwa egzemplarze wyświetlaczy 3,5' na ILI9486 w sklepie , z którego usług już korzystałem . No i problem. Przy próbie uruchomienia wyświetlacz dziwnie<br />się zachowuje. Mianowicie w trakcie inicjalizacji po resecie podświetlanie się załącza aż do komendy wyjścia z uśpienia ta właśnie komenda powoduje wyłączenie <br />podświetlania. Kod inicjalizacji:[syntax=c]#define RS_H     PORTB|=(1&lt;&lt;PB3)// stan wysoki na linii RS  dane<br />#define RS_L     PORTB&amp;=~(1&lt;&lt;PB3)// stan niski na linii RS   komendy<br /><br />#define WR_H     PORTB|=(1&lt;&lt;PB2)// stan wysoki na WR - odczyt z LCD<br />#define WR_L     PORTB&amp;=~(1&lt;&lt;PB2)// stan niski na WR - zapis do LCD<br />#define WR_STB      WR_L;WR_H<br /><br />#define SETUP_CS_H     PORTB|=(1&lt;&lt;PB1)// stan wysoki na linii CS  interfrejs aktywny<br />#define SETUP_CS_L     PORTB&amp;=~(1&lt;&lt;PB1)// stan niski na linii CS<br /><br />#define RST_H     PORTB|=(1&lt;&lt;PB0)// stan wysoki na linii RST  interfrejs aktywny<br />#define RST_L   PORTB&amp;=~(1&lt;&lt;PB0)          // stan niski na linii RST<br /><br />uint16_t _width ;<br />uint16_t _height;<br /><br /><br />//================ inicjalizacja transmisji =================================<br /> void data_dir_out(void)<br />{<br />DDRB|=(1&lt;&lt;PB0)|(1&lt;&lt;PB1)|(1&lt;&lt;PB2)|(1&lt;&lt;PB3);<br />PORTB |=(1&lt;&lt;PB0)|(1&lt;&lt;PB1)|(1&lt;&lt;PB2)|(1&lt;&lt;PB3);<br />DDRA=0xFF;<br />PORTA=0xFF;<br />DDRC=0xFF;<br />PORTC=0xFF;<br />}<br /><br /><br /><br />    //----------------------------------------------------------------------------------------<br />    //<br />    // Zapis komendy do wyświetlacza LCD<br />    //<br />    //----------------------------------------------------------------------------------------<br />void LCD_Write_COM(uint8_t c)<br />{<br />uint8_t b;<br />b= c &amp; 0xFF;<br />SETUP_CS_L;<br />RS_L;<br />WR_L;<br />PORTA = b  ;              // 2 parametr SC&#91;7-0&#93;<br />PORTC = 0x00;            // 1 parametr SC&#91;15-8&#93;<br />_delay_us(1);<br />WR_H;<br />_delay_us(1);<br />RS_H;<br />PORTA=0x00;<br />SETUP_CS_H;<br /><br />}<br /><br />//----------------------------------------------------------------------------------------<br />//<br />// Zapis danych do wyświetlacza LCD<br />//<br />//----------------------------------------------------------------------------------------<br />void LCD_Write_DATA(uint8_t c)<br />{<br />uint8_t a;<br />a= c &amp; 0xFF;<br />SETUP_CS_L;<br />RS_H;<br />WR_L;<br />PORTA = a ;<br />PORTC = 0x00;<br />_delay_us(1);<br />WR_H;<br />_delay_us(1);<br />RS_L;<br />PORTA=0x00;<br />SETUP_CS_H;<br /><br />}<br /><br />//===========================================================================================<br /><br />    //----------------------------------------------------------------------------------------<br />    //<br />    // Zapis danych do wyświetlacza LCD<br />    //<br />    //----------------------------------------------------------------------------------------<br />void LCD_Write_DATA16(uint16_t c)<br />{<br /><br />SETUP_CS_L;<br />RS_H;<br />WR_L;<br />PORTA = c  ;<br />PORTC = c&gt;&gt;8 ;<br />WR_H;<br />RS_L;<br />SETUP_CS_H;<br /><br />}<br /><br /> //===========================================================================================<br /> //----------- inicjalizacja ------------------------------------------------------------<br /><br />void ili9486_init (void)<br />{<br /><br />    RST_H;<br />    _delay_ms(1);<br />    RST_L;<br />    _delay_ms(10);<br />    RST_H;<br />     _delay_ms(120);<br /><br /> LCD_Write_COM(0x11);// Sleep OUT<br /> _delay_ms(5);<br /><br /> LCD_Write_COM(0xF2);// ?????<br /> LCD_Write_DATA(0x1C);<br /> LCD_Write_DATA(0xA3);<br /> LCD_Write_DATA(0x32);<br /> LCD_Write_DATA(0x02);<br /> LCD_Write_DATA(0xb2);<br /> LCD_Write_DATA(0x12);<br /> LCD_Write_DATA(0xFF);<br /> LCD_Write_DATA(0x12);<br /> LCD_Write_DATA(0x00);<br /><br /> LCD_Write_COM(0xF1);// ?????<br /> LCD_Write_DATA(0x36);<br /> LCD_Write_DATA(0xA4);<br /><br /> LCD_Write_COM(0xF8);// ?????<br /> LCD_Write_DATA(0x21);<br /> LCD_Write_DATA(0x04);<br /><br /> LCD_Write_COM(0xF9);// ?????<br /> LCD_Write_DATA(0x00);<br /> LCD_Write_DATA(0x08);<br /><br /> LCD_Write_COM(0xC0);// Power Control 1<br /> LCD_Write_DATA(0x0d);<br /> LCD_Write_DATA(0x0d);<br /><br /> LCD_Write_COM(0xC1);// Power Control 2<br /> LCD_Write_DATA(0x43);<br /> LCD_Write_DATA(0x00);<br /><br /> LCD_Write_COM(0xC2);// Power Control 3<br /> LCD_Write_DATA(0x00);<br /><br /> LCD_Write_COM(0xC5);// VCOM Control<br /> LCD_Write_DATA(0x00);<br /> LCD_Write_DATA(0x48);<br /><br /> LCD_Write_COM(0xB6);// Display Function Control<br /> LCD_Write_DATA(0x00);<br /> LCD_Write_DATA(0x22);// 0x42 = Rotate display 180 deg.<br /> LCD_Write_DATA(0x3B);<br /><br />//-------- dodany fragment -----------------------------------------<br /><br /> LCD_Write_COM(0x51);         // jasnośc wyświetlacza<br /> LCD_Write_DATA(0xFF);<br /><br /> LCD_Write_COM(0x53);          // ustawienie CTRL Blok Kontrolny ON, Sterowanie ściemnianiem ON, <br /> LCD_Write_DATA(0x2C);         // kontrola podświetlania ON<br /><br /> LCD_Write_COM(0x55);          // wartośc adaptacyjna 0x02 obraz ciągły<br /> LCD_Write_DATA(0x01);<br /><br /> LCD_Write_COM(0x5E);          // minimalna wartośc jasności CABC<br /> LCD_Write_DATA(0x2F);<br /><br /> LCD_Write_COM(0xC8);           // kontrola CABC orginalna polaryzacja sygnału PWM<br /> LCD_Write_DATA(0x00);<br /><br />//-------------------------------------------------------------------------------<br /><br /> LCD_Write_COM(0xE0);// PGAMCTRL (Positive Gamma Control)<br /> LCD_Write_DATA(0x0f);<br /> LCD_Write_DATA(0x24);<br /> LCD_Write_DATA(0x1c);<br /> LCD_Write_DATA(0x0a);<br /> LCD_Write_DATA(0x0f);<br /> LCD_Write_DATA(0x08);<br /> LCD_Write_DATA(0x43);<br /> LCD_Write_DATA(0x88);<br /> LCD_Write_DATA(0x32);<br /> LCD_Write_DATA(0x0f);<br /> LCD_Write_DATA(0x10);<br /> LCD_Write_DATA(0x06);<br /> LCD_Write_DATA(0x0f);<br /> LCD_Write_DATA(0x07);<br /> LCD_Write_DATA(0x00);<br /><br /> LCD_Write_COM(0xE1);// NGAMCTRL (Negative Gamma Control)<br /> LCD_Write_DATA(0x0F);<br /> LCD_Write_DATA(0x38);<br /> LCD_Write_DATA(0x30);<br /> LCD_Write_DATA(0x09);<br /> LCD_Write_DATA(0x0f);<br /> LCD_Write_DATA(0x0f);<br /> LCD_Write_DATA(0x4e);<br /> LCD_Write_DATA(0x77);<br /> LCD_Write_DATA(0x3c);<br /> LCD_Write_DATA(0x07);<br /> LCD_Write_DATA(0x10);<br /> LCD_Write_DATA(0x05);<br /> LCD_Write_DATA(0x23);<br /> LCD_Write_DATA(0x1b);<br /> LCD_Write_DATA(0x00);<br /><br /> LCD_Write_COM(0x20);// Display Inversion OFF<br /> LCD_Write_DATA(0x00);//C8<br /><br /> LCD_Write_COM(0x36);// Memory Access Control<br /> LCD_Write_DATA(0x0A);<br /><br /> LCD_Write_COM(0x3A);// Interface Pixel Format<br /> LCD_Write_DATA(0x55);<br /><br /> LCD_Write_COM(0x2A);// Column Addess Set<br /> LCD_Write_DATA(0x00);<br /> LCD_Write_DATA(0x00);<br /> LCD_Write_DATA(0x01);<br /> LCD_Write_DATA(0xDF);<br /><br /> LCD_Write_COM(0x2B);// Page Address Set<br /> LCD_Write_DATA(0x00);<br /> LCD_Write_DATA(0x00);<br /> LCD_Write_DATA(0x01);<br /> LCD_Write_DATA(0x3f);<br /> _delay_ms(50);<br /> LCD_Write_COM(0x29);// Display ON<br /> LCD_Write_COM(0x2C);// Memory Write<br /><br /><br />}[/syntax]<br /><br />Przeanalizowałem kartę katalogową sterownika ILI9486 i na jej podstawie próbuję coś wykombinować.<br />Pierwsze cztery komendy po Sleep OUT to komendy odczytu z wyświetlacza dlatego autor biblioteki zaznaczył je znakiem zapytania następne komendy z parametrami są standardowe stosowane przy większości wyświetlaczy. Z karty wynika , że nie wpływają one na podświetlanie. Zaznaczam, że moduł nie ma<br />osobnego pinu zasilania podświetlania. Pomyślałem , iż po komendzie sleep out jest konieczne ustawienie wewnętrznego PWM zasilającego ledy dlatego wstawiłem do inicjalizacji komendy ustawiające moduł CABC odpowiedzialny za jasność podświetlania. I nic. Sądzę , że jeszcze czegoś nie uruchomiłem.<br />Sprawdziłem jakość transmisji. Tak wygląda<br /><a href="https://obrazkiforum.atnel.pl/13546/c873860267ac937cc2eb675dc76809ad.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/13546/c873860267ac937cc2eb675dc76809ad.jpg" alt="Obrazek" /></a><br /><br />Kanały 0-7 Port A kanał 8 WR-zapis, kanał 9 RS-dane,komenda, kanał 10-CS wiadomo co. Przedstawiam tylko osiem bitów ponieważ przy inicjalizacji tylko one pracują. Sygnały 8-15 na Porcie C są ustawione na 0x00. Zamieszczam jeszcze fofto wyświetlacza<br /><a href="https://obrazkiforum.atnel.pl/13546/806fca6ff42a6769edd758985a5fa449.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/13546/806fca6ff42a6769edd758985a5fa449.jpg" alt="Obrazek" /></a><br /><a href="https://obrazkiforum.atnel.pl/13546/64d512fc112c75e0f857bd00b29add0f.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/13546/64d512fc112c75e0f857bd00b29add0f.jpg" alt="Obrazek" /></a><br /><br />Jeszcze jedna informacja. Jak wyłączę komendę sleep out to w trakcie inicjalizacji widać wyraźnie zmiany jasności podświetlania po prosto miga.<br />Być może ktoś z forumowiczów spotkał się już z takim zachowaniem podświetlania.<br />Będę wdzięczny za pomoc.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 23 minutach ]</span></strong><br /><br />Wróciłem na chwilę ponieważ chcę przedstawić mały eksperyment z animacją na TFT LCD 2,8' ILI9341 poniżej link do filmiku.<br /><!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=F3GIYL0I3qY" >https://www.youtube.com/watch?v=F3GIYL0I3qY</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13546">grzegorz1959</a> — 24 cze 2018, o 22:16</p><hr />
]]></content>
</entry>
</feed>