Fórum témák

» Több friss téma
Fórum » Színes LCD + PIC
 
Témaindító: pici, idő: Feb 19, 2008
Témakörök:
Lapozás: OK   40 / 46
(#) Wezuv válasza Droot hozzászólására (») Feb 26, 2016 /
 
Próbáld meg, hogy csak egy színt rajzoltatsz ki kép helyett(az img(i) helyére írj egy fix számot). Akkor kiderül, hogy milyen lassú, ha program területről olvasol be adatot. Ha ekkor is lassú, akkor valami más lesz a baj, mert nem lehet ilyen lassú, legalább is nagyon meglepődnék, ha igen!

A Block Transfer Engine nem ismerős, de jól cseng.
(#) pixels válasza Droot hozzászólására (») Feb 26, 2016 /
 
Szia!

Az xres*yres előre kiszámoltatnám, és azzal hasonlítanám, a többször elérendő adatokat pedig regiszterbe tenném.

A ciklust szétszedném a kód méret rovására.

  1. register unsigned long int i = 0;
  2.     register unsigned long int countH = xres*yres;
  3.     register unsigned long int countL = countH & 0b111;
  4.     countH = countH >> 3;
  5.  
  6.  
  7.     for(i = 0; i<=countH; i++)
  8.     {
  9.         tft_write_data(img[i]);
  10.         tft_write_data(img[i]);
  11.         tft_write_data(img[i]);
  12.         tft_write_data(img[i]);
  13.         tft_write_data(img[i]);
  14.         tft_write_data(img[i]);
  15.         tft_write_data(img[i]);
  16.         tft_write_data(img[i]);
  17.     }
  18.     for(i = 0; i<=countL; i++)
  19.     {
  20.         tft_write_data(img[i]);
  21.     }


A tft_write_data ha lehet legyen makró, vagy inline függvény.
A hozzászólás módosítva: Feb 26, 2016
(#) Droot válasza Wezuv hozzászólására (») Feb 26, 2016 /
 
Úgy is lassú! 2668ms.

Pixels mindjárt kipróbálom úgy is ahogy tanácsoltad. Most találtam még egy megoldást azt már elkezdtem.
Mi az az inline függvény?
(#) pixels válasza Droot hozzászólására (») Feb 26, 2016 /
 
Az inline függvény nem call - return utasításokká fordul, hanem a függvény kódja a függvényhívás helyére bemásolásra kerül. Így a paraméter átadás, a függvény hívás, meg a visszatérés ideje megspórolható, cserébe nagyobb lesz a hex mérete.
A hozzászólás módosítva: Feb 26, 2016
(#) Droot válasza pixels hozzászólására (») Feb 26, 2016 /
 
Kipróbáltam azt, hogy az eredeti void xydatawrite(uint16..... függvénynél a void elé írtam, hogy inline, de a sebesség nem változott. Hogyan kell deklarálni?

Viszont makró használatával lement 2668ms-ról 2371ms-ra. Gondolom inline-al is ennyi lenne. Az azért mégiscsak elegánsabb, mint egy makró.
(#) pixels válasza Droot hozzászólására (») Feb 26, 2016 /
 
Igen, csak inline kell előtte legyen. Meg lehet próbálni a static kulcsszóval együtt is. És a cél valóban az, hogy makró szerű legyen.
(#) Droot válasza pixels hozzászólására (») Feb 26, 2016 /
 
Rendben!
Esetleg van valami ötleted, hogy miért lehet ilyen lassú?
(#) Droot hozzászólása Feb 27, 2016 /
 
Volt egy kis malőr a PIC-emmel. 200MHz helyett 8MHz-s back-up oszcillátorról járt.
Így 153ms alatt rajzol ki egy képet. Szerintem ez már elfogadható!
A PMP a leggyorsabbra van véve. Néhány időzítés kellett a PMP inicializálás elé, után és az LCD inicializálás után is.
Esetleg ha van még valamilyen ötletetek a gyorsításra, akkor szívesen fogadom.
(#) Wezuv válasza Droot hozzászólására (») Márc 5, 2016 /
 
Végre sikerült utolérnelek, 800x480 háttérkép fölé rajzolt számtasztatúra beviteli mező működik. Igaz a kép 768kByte-ot elfogyazt a 2000-ből, de elég gyors, mondhatni hibátlan. Most az SQI flasht fogom kipróbálni, ha lesz időm rá. 4MByte-os, ráfér két-három háttérkép meg egy halom kicsi ikon, stb. Kíváncsi vagyok a sebességére, elvileg 25MByte/sec. Arra is kíváncsi vagyok, hogy MPLAB X-ből lehet-e feltölteni direktben.
(#) Droot válasza Wezuv hozzászólására (») Márc 5, 2016 /
 
Na örülök, hogy jó lett.
Az SQI-val majd egyszer én is foglalkoznék. De most egyenlőre azt akarom megcsinálni, hogy a fényerőt automatikusan állitsa. Gombbal meg akarom csinálni, hogy manuálisan is lehessen.

Szerk.: Az RA8875 tud is kezelni flasht, dma-n, egyből tud rajzolni. Viszont csak olvasni tudja, írni sajna nem...
A hozzászólás módosítva: Márc 5, 2016
(#) diablo hozzászólása Ápr 6, 2016 /
 
Sziasztok!

Egy ilyen kijelzőt hogy lehetne életre kelteni pl. PIC-kel és Visual TFT-vel használni?
A kijelző SPFD5408 típusú kontrollerrel van szerelve, de csak a kontrollerhez találok adatlapot, magához a kijelzőhöz nem. Így fogalmam sincs hogy lehetne pl. inicializálni. Arduino-hoz persze találni könyvtárakat, de azzal sokra nem megyek...
(#) icserny válasza diablo hozzászólására (») Ápr 6, 2016 /
 
Egy járható út: Veszel hozzá egy Arduino kártyát (hogy ki tudd próbálni, melyik könyvtárral működik), majd átírod az Arduino programot PIC-re (ha mindenáron ragaszkodsz a PIC-hez).
(#) diablo válasza icserny hozzászólására (») Ápr 6, 2016 /
 
Ez az út nem valami kedvcsináló.
Aki megírta a könyvtárat hozzá Arudino-ra, az mégis mi alapján tudta megírni?

És nincs valami ajánlott gyors válaszidejű kijelző típus amit Visual TFT-vel tudnék programozni és külföldről betudnék olcsón szerezni?
(#) pixels válasza diablo hozzászólására (») Ápr 6, 2016 /
 
Vezérlő chip ismeretében a chip adatlapjából fel lehet építeni a kommunikációs protokollt, így születnek a libek

A linkelt kijelző esetében: Spfd5408 a vezérlő
Library hozzá meg itt: https://github.com/JoaoLopesF/SPFD5408
Instructables: http://www.instructables.com/id/How-to-use-24-inch-TFT-LCD-SPFD5408...ino-U/

Csak beírtam a google-ba a chip típusát, és máris jött a találat

Át kell írni PIC-re és kész, minden találat azt mutatja, hogy működőképes a library
A hozzászólás módosítva: Ápr 6, 2016
(#) bbalazs_ válasza diablo hozzászólására (») Ápr 6, 2016 /
 
En ugyan rohadtul nem tudom, hogy mi az az SPFD, de vettem a Banggoodon szep lassan ebbol vagy huszat es a fele ILI9341-es chippel, a masik fele ILI9325-os chippel volt felszerelve, veletlenszeruen. En leszedem a kijelzot es ugy hasznalom PIC-el assemblyben. Persze mindent nekem kell megirni benne, plusz a labkiosztast vissza kell fejteni, mert ugyan a shield kiosztasa standard, azonban maga a leforrasztott foliakabel mas es mas bekotesu.
Ha megnezed a linkelt oldalon a questions es comments reszt, ott vannak arduinohoz a driverek,az alapjan meg lehet irni PIC-re.
A visual tft-t nem ismerem, de assembly peldat tudok kuldeni az inicializalasra. Nem library.
(#) diablo válasza pixels hozzászólására (») Ápr 6, 2016 /
 
Én olyan adatlapra vágytam volna mint amilyet a 1602-es kijelzőkhöz is találni: rövid, lényegre törő, a kijelző élesztését írja le és nem a vezérlő chip működését. Vagy ilyeneket kár is keresni TFT kijelzőkhöz?

Átírogatni azért nem szeretném, mert azzal még nem biztos, hogy megértem a kijelző vezérlését.

Egyébként nincs valami rövid magyar nyelvű cikk a vezérlésükről valahol az interneten megbújva? Karakteres kijelzőhöz van, GLCD-hez van, TFT-hez nincs.
A vezérlő chip adatlapja meg egyes típusoknál meg már vetekszik egy PIC adatlapjával...
Nem lesz könnyű eljutni önerőből az első sikerélményig az biztos.

bbalazs: Ott utólag én is olvasgattam. De nekem gombos verzió jutott (még tavaly), azt hogy derítem ki milyen chippel szerelt? Nekem nem assembly kellene, hanem egy egyszerű folyamatábra, mint a karakteres kijelzők adatlapján van, mondjuk az első piros pont kiírásáig.
A hozzászólás módosítva: Ápr 6, 2016
(#) bbalazs_ válasza diablo hozzászólására (») Ápr 6, 2016 /
 
Ezeknek van sajat memoriajuk, tehat oda irsz, a tobbit o lerendezi.
Van egy inicializalasi resz, utana beallithatsz egy teglalapot, ahova irni akarsz es utana kuldod a teljes adathalmazt. Aztan ezt tetszolegesen ismetled. Nem valami jo a sebessege, mozgokep megjelenitesere teljesen alkalmatlan.
Szetszedve elvileg lehet hajtani 16 biten is, de nekem eddig csak 8-al sikerult.
(#) Pali79 válasza bbalazs_ hozzászólására (») Ápr 6, 2016 /
 
Engem érdekelne az ILI9341 assembly init, főleg ha valami kisebb PIC-re van írva.
(#) bbalazs_ válasza Pali79 hozzászólására (») Ápr 6, 2016 /
 
Van 8 bitesre is es 16 bitesre is. Kuldom a sajat cimedre.
(#) Pali79 válasza bbalazs_ hozzászólására (») Ápr 6, 2016 /
 
A 8 bites nagyon jó lesz, köszönöm!
(#) bbalazs_ válasza diablo hozzászólására (») Ápr 6, 2016 /
 
Nekem is gombos. Kideriteni sehogyan sem lehet, hanem az arduinoba beledugva probalgatod a librarykat, nagyjabol 4 fele van ehhez. Valamelyik bejon. Azz inicializalas a lenyeg.
ez pedig semmi mas, mint egy reseteles megfelelo ideig, a vezerlovonalakat beallitod, aztan a vezerloregiszterekbe ezek segitsegevel adatokat irsz es a vegen bekapcsolod a kijelzot.
Innentol kezdve mukodik a blokkos iras, torlod a kepernyot (kijelolod blokknak az egeszet es irsz bele 320*240 db 0x0000 wordot), aztan mehetnek a rendes szinnel valo irasok.
A display alapszine feher, ha nincs be sem kapcsolva. Inicializalas utan sotetebb lesz kicsit.
A shield 5V-rol megy, de minden vonal 3.3-as. Belul a 3.3 kivezetes nincs is bekotve, azonnal egy 1117-essel indit az 5V-bol.
(#) pixels válasza bbalazs_ hozzászólására (») Ápr 6, 2016 /
 
@diblonak akart menni

Ha meg szeretnéd érteni a működését is, akkor valóban érdemesebb megírni magadnak.

http://www.micro4you.com/files/lcd/SPFD5408A.pdf

Az adatlap nem lesz lényegretörő, már csak azért sem, mert a vezérlő több kommunikációs módot is tud, te választod meg, hogy melyiket akarod használni. De az ilyen boardokon általában előre be van huzalozva a panelon valamelyik üzemmód. Esetben, a shield panel lábkiosztása alapján intel 8080 rendszerű, 8 bites mód van kiválasztva.

Szóval ilyen buszra kell megírni a kommunikációt. Regiszter és adat írása olvasása.

Ha már lehet regisztereket írni, és olvasni, jöhetnek a parancsok: Reset, rajzolási ablak meghatáározása, képpont címzés, forgatás, tükrözési módok. Talán a legnehezebb az inicializálási folyamat, azok között is a gamma beállítás. De ehhez az adatokat valami libraryből lehet nyersen szerezni. Ezt a megoldást ajánlom, mert így működő librarből szedve tuti jól látható lesz a kijelző képe.
A hozzászólás módosítva: Ápr 6, 2016
(#) diablo válasza pixels hozzászólására (») Ápr 7, 2016 /
 
Ez azt jelenti, hogy a kijelzőn az SPI interfész csak dísznek van?

Amúgy a rajta lévő gomb mire való?
Még valami, hogy szoktatok képet varázsolni a kijelzőre ha nem Visual TFT-t használtok - aminek a használatát mellesleg szerintem érdemes lenne elsajátítani?

Utolsó kérdés: van valami ajánlott nem túl drága gyors kijelző amivel pl. szkópot is lehetne építeni vagy kis tv-t?
(#) Kovidivi válasza diablo hozzászólására (») Ápr 7, 2016 /
 
A kijelzők általában gyorsak. A mikrovezérlő nem elég gyors, hogy az adatokat megfelelő sebességgel át tudja küldeni. Ide már nem elég a 16-20MHz órajel. 16-32biten vezérelhető kijelzővel már elég nagy sebességet lehet elérni.
A hozzászólás módosítva: Ápr 7, 2016
(#) bbalazs_ válasza diablo hozzászólására (») Ápr 7, 2016 /
 
Nem, hanem vannak olyan szalagkabellel szerelt kijelzok, amik igy vannak huzalozva. Elvileg semmibe sem kerult volna kihozni a vezerlobiteket (altalaban 3db van), de valamiert megsem tettek. Gondolom, igy rendeltek. De van pont ugyanez a kijelzo SPI kimenettel is.

A gomb az Arduino reset kiterjesztese, mert ilyenkor a board fole kerul a kijelzo, eltakarva az eredeti resetet.

Ugy szoktuk, hogy elolvassuk a vezerlochip adatlapjat es az alapjan a vezerlovonalakkal megvezereljuk. Nekem a sebesseg tobbet er, mert nem ez a szakmam, nem kell idore termeket produkalni, ezert en assemblyben nyomom, mostanaban PIC24-esekkel, ott a labszam elegge magas.

Ha nem muszaj, en nem tanulnek masik nyelvet, mert libraryert sirni nem az en formam. Inkabb megirom magamnak. Persze tanulni mindig lehet es kell is egy-egy uj peldany melle adott - alatalaban valmilyen C nyelvu - leirasbol.
(#) diablo válasza bbalazs_ hozzászólására (») Ápr 7, 2016 /
 
Én azért kérdeztem, mert az enyémen van SPI kimenet is. De most mindegy, mert úgysem azzal kell kezdeni.

Kipróbáltam egy TFTLCD nevű könyvtárral a kijelzőt ami soros portra kiírta, hogy ILI9341-gyel szerelt. Mondjuk a 2,4" helyett 2,8-at írt 240x400-as felbontással. Akkor lehet jobban járok ha az ILI9341 adatlapját kezdem el olvasni.
Bár egy BG Staff szerint meg S6D04H0X vezérlője van a gombos verziónak.
De mindegy, köszi a segítséget, így talán már eltudok indulni.

Egyébként a gombra nem reset-eli az AVR-t
(#) bbalazs_ válasza diablo hozzászólására (») Ápr 7, 2016 /
 
Ha pont ezt vetted, amit elkuldtel mintapeldakent, akkor nincs rajta SPI, de a lapja is irja.
A BG staff azt a szoveget jo egy eve irta. Masfelol ezeknek leginkabb fogalmuk sincs rola, mit arulnak.
De az is elkepzelheto, hogy az ILI9342 vagy a 9325-os regiszterszinten kompatibilis azzal, de nem hinnem.
Vegulis nagyon egyszeruen eldontheto: egyik lib be, proba, masik lib be, proba.
Az egyikkel mukodik, a masikkal nem.
Az ILI9341-essel nem is lehetne meghajtani ilyen meretu kijelzot. A 2.4 lehet, hogy 2.2, attol fugg, hogyan szamoljuk.
(#) diablo válasza bbalazs_ hozzászólására (») Ápr 7, 2016 /
 
Van rajta SDI, SDO láb, de hogy be van-e kötve azt nem tudom. Az is lehet, hogy a memóriakártya foglalathoz csatlakozik.
Amit a BG staff írt könyvtárat azzal működik (S6D04H0X), de lehet hogy a másikkal is (ILI9341) menne, még nem néztem.
(#) bbalazs_ válasza diablo hozzászólására (») Ápr 7, 2016 /
 
Akkor nem olyan kijelzod van, amit linkeltel.
Annak a hatan a fenykep szerint nincs mas, csak a parhuzamos es az SD kivezetesek.
(#) pixels válasza diablo hozzászólására (») Ápr 7, 2016 /
 
Az SPI természetesen nem dísznek van.

Ezt a kijelzőt lehet RGB üzemmódban is hajtani. Ilyenkor a színadatok folyamatosan az adatporton kerülnek a kijelzőre. Hasonló mint a VGA, csak nem analóg vonal van egy-egy színnek, hanem digitális busz.

RGB üzemmódban az adatvonalon csak színadatok közlekednek, HSYNC, VSYNC, DOTCLK az adat szinkronizációjára kell, és az SPI vonalon lehet a kijelző regisztereit feltölteni, konfigurálni, és státuszt lekérni.
Következő: »»   40 / 46
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem