Fórum témák
» Több friss téma |
Köszi!
Találtam egy github oldalt, ahol szépen össze van foglalva, hogy miket tud: Bővebben: Link Az SSD-t nem néztem, hogy tudja-e, de nekem a HW scroll nagyon tetszik, ezen a videón látszik, hogy egész szépen működik is. A gyártó honlpaján még sample kódok is vannak, bár én jobban szeretem magam megírni, de kiindulásnak tökéletes. Ahogy a videót elnézem ennél nagyon gyorsabb nekem nem is kell. Így is szép teljesítmény ahoz képest, hogy mennyi adatot küld ki pl egy bmp-nél.
Szia! A HW scrollt nem használtam még, de mintha lenne az SSD-ben is. A videón látható sebességet értem el én is kb. ami már kielégítő. Az a DMA ha jól értettem SPI-n tud Flash-ről beolvasni képet, egész gyors, ami várható is tőle. Szóval nem lesz gondod a sebességgel, ami a kijelzőt illeti.
A hozzászólás módosítva: Jan 13, 2016
Közben rájöttem, hogy miért kell kiválasztani a protokolt a rendelésnél. Van egy átkötés a panelen, amivel ezt be lehet állítani és beállítják előre, de később ezt módosítani lehet, ha szükség lenne rá. (Az átkötés az IC egy lábát állítja be a módnak megfelelő szintre. Mindkét vezérlő IC-nek van ilyen lába... ). Ugyan így van a tápfesszel is, meg még néhány dologgal, ami megtalálható a kijelző adatlapján...
Igen, ezt az átkötést én is láttam de semmi más különbséget nem. Még az adatlap sem említi.
Lassacskán kezdem tervezni a panelom HW-ét, mégiscsak a PIC32MZ2048ECH100-at választottam, mert kevés a 64 láb. A PMP-nél vannak PMAx és PMDx elnevezésű lábak, az egyik az adat a másik pedig a cím. Az LCD-hez csak a PMD lábakat kell bekötni, ugye? A PMA pedig csak akkor kell, ha pl Flash chip-el kommunikálok, ugye? A PIC32MZ starter kit kapcsolási rajzát nézegettem, hogy kell-e valami extra hogy elinduljon, mint pl MX-nél a Vcap, de úgy láttam semmi nem kell csak órajel. Kitérnek benne, hogy kvarcot és digitális kimenetű 4 lábú SMD rezonátort is lehet használni. Én utóbbit még nem használtam, most ki fogom próbálni, bár az ára a 10-szerese, nem tudom miben lehet jobb.
Igen, csak az adat és a vezérlő lábakat kell használni, a címzést nem kell engedélyezni.
Az MZ erratájában és néhány fórumon olvastam, hogy nem tud külső kristályról elindulni, ezért külső oszcival kell meghajtani. Ha USB-t is akarsz használni, akkor 24MHz külső oszci kell.
Borzalmas ahogy a lábakat szétszórták rajta! Tipikusan nem kétoldalas, hanem több rétegű panelokkal lenne az igazi.
Tehát erről el tud indulni, ugye? Szerk: Vannak olyan lábak, amit használ az LCD is PMP-vel és az ethernet is használna. Ezt hogy tudom megoldani? A hozzászólás módosítva: Jan 19, 2016
Annak ellenére, hogy a kínálatban kvarc-ként van megnevezve, jól megvezetve a szemlélődőt, ez egy oszcillátor. Természetesen erről fog működni.
Igen, én is így láttam.
Arra nincs ötleted, hogy az Ethernet-et és a PMP-t hogy tudom egyszerre használni? Például az ETXD0 és a DB11 egy lábon van. Szerk: PMRD és PMWR láb van az íráshoz és olvasáshoz. Az LCD-nél viszont WR van. Illetve EN. Hogyan is kell ezeket pontosan bekötni? A hozzászólás módosítva: Jan 19, 2016
Hirtelen nincs.
Viszont láttam olcsóbb oszcit ami 25ppm-es volt, igaz -20 és +70 között, de ez talán nem probléma... Link...
Valóban! Köszi!
Közben találtam egy példát, ha lehet neki hinni, akkor PMWR az EN-re megy, a PMRD a WR-re, az RS-re pedig vagy egy szabad portlábat kötök, vagy a PMA0-t, nem tudom melyiket lenne érdemes.
Csak így a partszélről: ha az alternatív Ethernet lábakat használod, az nem jó? Pl. ETXD0 helyett AETXD0 és így tovább, minden egyes láb elé tegyél egy A betűt és nézd végig.
Köszönöm, azt nem tudtam, hogy vannak alternatív lábak is.
Amikor majd élesztem fel, gondolom valamelyik regiszterben jeleznem kell, hogy az alternatívakat használom. Lehet vegyesen is, ugye, hogy pl használom az AETXD0-t és az ETXD1-et?
Szerintem nem lehet keverni. FETHIO konfigurációs bitet nézd meg.
A WR-re megy a PMWR.
Az E(RD)-re megy a PMRD láb. A CS az engedélyező láb, azt neked kell vezérelni programból, bármelyik láb lehet. Szintúgy az RS-t, hiszen a PMP nem tudja, hogy adat, vagy parancs megy ki.
Ennek a dokumentumnak a 160-adik oldaláról puskáztam, illetve egy Microchip fórumban láttam ugyan ezt a bekötést, bár mind a kettő HD77480-as kijelző volt.
Akkor neked így tuti jó volt, hogy írod? Elvileg a PMP-nek is van 2 Chip Selec lába. Szerk: Közben találtam itt egy kapcsolást, azt írja valamiért nem megy neki, de ez úgy van bekötve, ahogy mondod. A hozzászólás módosítva: Jan 19, 2016
Hát, működik...
A cs lábbal úgy voltam, nem vesz el időt, ha én vezérlem és akkor nem kötött a láb. Nem néztem, hogy a PMP hogyan kezeli a cs-t, lehet, hogy minden alkalommal kapcsolja, ami nem jó, mert időt pazarol.
Utánaolvasgattam és elvileg két módja van Master-ben:
2. Külön kezeli a write és read lábat 1. Egybe kezeli a write és read lábat, ebben az esetben a PMWR az enable, a PMRD pedig magas vagy alacsony szinten van attól függően, hogy írás vagy olvasás történik. Jól értelmeztem? LCD kezeléshez a Master mode 1-et ajánlja. Idézet: „The PMP module supports two distinct read/write signaling methods. In Master mode 1, read and write strobe are combined into a single control line, PMRD/PMWR; a second control line, PMENB, determines when a read or write action is to be taken. In Master mode 2, read and write strobes (PMRD and PMWR) are supplied on separate pins.” A hozzászólás módosítva: Jan 19, 2016
Az 1. mód felel meg a 8080-nak. Az LCD ismeri a 6800-at is, azaz az ajánlás pongyola, de mindegy is...
Igen.
Annyira nem világos, hogy most akkor 1. módban a PMWR és a PMRD lábakból milyen láb lesz, nagyon fura a Microchip PMP leírása. A PMRD-ből lesz az RD tehát az Enable, a PMWR-ből pedig a Write/Read, ahogy leírtad, vagy fordítva? Az ajánlás PMENB lábat is emleget, viszont ilyen láb nincs rajta.
Szerintem úgy van ahogy írtam és írod. A leírás fura, vagy bennünk van a hiba. . Ez abból következik, hogy az LCD meghajtó IC lábainak működése egyértelmű és a bekötés működik.
A PMENB-nek felel meg a két cs láb, szerintem azért nincs.
Sziasztok!
Megérkezett ez az RA8875 vezérlős 8080 interfészes kijelző és szeretném a PMP-vel feléleszteni. A bekötés a csatolt kapcsolási rajz szerint történt. Az LCD kezelő kód a következő:
Sajnos valamit biztos, hogy benézek. A kijelző úgy indul el, hogy teljesen fekete kb. 1 másodpercig majd szépen kifehéredik, majd színes függőleges csíkok jelennek meg rajta. Én arra tippelnék, hogy a PMP beállításai illetve a küldő függvények hibásak. Az RA8875 inicializálása sem biztos, hogy jó. Gondolom inicializálás után nem csíkoknak kéne a kijelzőn lenni. A hozzászólás módosítva: Feb 23, 2016
Sziasztok!
Az lenne a gond, hogy az RA8875 vezérlőnek adok olyan parancsot, hogy törölje le a kijelzőt, vagy rajzoljon egy kört és ahogy a parancs kiment ő rajzolja, de ha például két ilyen műveletet adok neki egymás után, akkor nem jól hajtja végre, mert az első művelet még nem hajtódott végre. Elvileg a DCR regisztert kiolvasva a 7-es és 6-os bittel lehet poll-ozni. Azonban ezt nem tudtam megcsinálni, a regiszter kiolvasásával van gond. Ilyenkor nem hajtja végre az utasítást:
Így megcsinálja:
Ezekkel a függvényekkel próbálok regisztert kiolvasni, az RA5-ön van a WAIT:
Előzmény
Nos a következő képpen rajzoltattam ki egy 640x480 felbontású képet: Adott egy jpg fájl, ezt lementettem RGB565-ös BMP-be. Egy segédprogrammal előállítottam egy tömbböt, ami 640*480=307200 elemű tömböt tartalmaz 16 bites adatokkal. Minden egyes elem egy pixel. Beállítottam a végtelenciklus előtt a kezdőpontot:
Majd kiadtam a memory write parancsot:
Ezután a ciklusomban ment egy számláló, ahol a tömbből mindig kiírtam a következő pixelnek megfelelő RGB 16 bites színkódot (16 bites PMP-vel). Amikor a ciklusszámláló osztható volt (i%640==0 & y != 0) 640-el, akkor mindig beállítottam kezdőpontnak x=0 és y=y+1, tehát egy sorral lejjebb, majd újra kiadtam a memory write parancsot. Ennél milyen gyorsabb megoldás lenne?
Biztosan ezen a vezérlőn is van olyan parancs, hogy terület kijelölése (az SSD-n van, ezen is kéne, ez alap!). Szóval kijelölök egy területet(x start, x end, y start, y end)), ami lehet az egész képernyő is. Ezután az SSD magától lépteti a címeket és sort is ugrik, csak tolni kell bele az adatokat sorban.
Azt is látom, hogy még mindig 8 biten nyomod? Az kétszeres időt jelent alapból... szerk: Ja nem. látom, hogy csak a parancsot shiftelted, bocsi! A másik kérdés, hogy milyen időzítéseket használsz a PMP-hez? Milyen frekin megy ki az adat? A hozzászólás módosítva: Feb 26, 2016
Igen, csak a regiszterek címe és a beírható adat 8 bites.
Én úgy csináltam hogy az egész képernyőt kijelöltem aktív ablakként. Magától léptette a pixelek címét. Ha akkorát jelölnék ki mint a kép akkor csak a lefelé (y) léptetés maradhatna ki, ugye? PMP-n a legnagyobb sebesség van beállítva a legkisebb órajellel. Az lcd-nek van egy wait lába ami alacsony szinten van ha a kijelző elfoglalt. Ezt pollozim minden adat vagy command kiküldése előtt. Ha alacsony szinten van akkor várok amíg magas szintre nem húzza. Majd kíváncsiságból megmérem hogy összesen a kijelző mennyi ideig tartja alacsony szinten a wait lábát.
Ha így van kijelölve a képernyő terület, akkor az y-t miért nem lépteti? Egyébként igen, csak az y beállítását spórólnád, de ahhoz szükséges egy feltétel vizsgálat, ami egy osztás nagy számmal, ami baromi lassú!
Mit jelent a PMP legkisebb órajele? Belső periféria frekire gondolsz? Próbálhatod emelni esetleg. A polling sok időt vesz el. Hatékonyabb, ha megtalálod azt az időt, amit még elbír (baja nem lehet, max nem jelenik meg a kép). Igyekezni kell a lehető legkevesebb programsorral megoldani a feladatokat, a lehető legkevesebb feltételes elágazásokkal. Minden olyan, ami előre kiszámolható, az ne kirajzolás ciklusában számolódjon. Persze elkerülhetetlen, hogy számításokat is végezzünk (ferde vonal, kör stb.), de azok egész műveletesek legyenek és ha lehet minél kisebb bitszélességgel. A librarykben van jó példa erre is, de a neten is találni hatékony kör rajzolót, ami nem szinusszal, koszinusszal számol. A hozzászólás módosítva: Feb 26, 2016
Bocsánat, PMP-n a legnagyobb sebesség a legnagyobb órajellel van beállítva.
Egyenlőre azért nem léptette, mert a kép amit kiírattam 640*480 volt az aktív rész meg 800x480, illetve legfőképp azért mert nem tudtam, hogy lépteti. Most próbálom ki mindjárt a léptetést a nagy számmal való osztás nélkül. Illetve amiket tanácsoltál azt is. Az tetszik nagyon a kijelző vezérlőben, hogy beleírom a regiszterekbe pl hogy x= 100, y= 100, radius = 50 és egy regiszterbe azt hogy indítsa el a kör rajzolást és ő megoldja magának. Tehát semmilyen geometriai alakzatot nem kell pixelenként rajzolgatnom.
A PMP beállítása a következő:
A polling helyére időzítést raktam, szépen vettem le és körülbelül ugyan annyira tudtam lemenni, ha lejjebb mentem, akkor már gondok voltak, tehát kb. ugyan annyit bír el. A képfájlom:
A kiírást végző függvényem:
Ebben a formában jelenleg 2921ms a megjelenítési idő. Egészen biztos, hogy lehet rajta gyorsítani, ugyanis youtube-on néztem videókat és ott sokkal gyorsabb volt, szerintem néhány 100 ms. Kiszúrtam az adatlapban ilyet, hogy Block Transfer Engine, ezzel esetleg? A hozzászólás módosítva: Feb 26, 2016
|
Bejelentkezés
Hirdetés |