Fórum témák
- • FET vezérlése
- • SMD forrasztás profin
- • Toroid transzformátor
- • LCD TV probléma
- • Kazettás magnó (deck) javítása
- • Kutya macska (vad) riasztó
- • Szobatermosztát bekötése
- • Hibrid erősítő
- • Borhűtő vezérlő panel
- • CNC építése házi alkatrészekből az alapoktól
- • Karácsonyi fényfüzérek
- • Fejhallgató erősítő
- • Felajánlás, azaz ingyen elvihető
- • Mosogatógép hiba
- • PC táp átalakítás
- • LED-es világítás
- • Kombikazán működési hiba
- • Áramlökés határoló lágyindító
- • Rádió adó építése
- • Akkus lámpa javítás
- • Elektromos távirányítós kapunyitó
- • Hűtőgép probléma
- • Villanyszerelés
- • Elektromos tolókapu
- • Villanypásztor
- • Li-Po - Li-ion akkumulátor és töltője
- • Gondolkodó ház avagy házautomatizálás
- • Transzformátor készítés, méretezés
- • Mikrohullámú sütő javítás, magnetron csere, stb.
- • Kapcsolási rajzot keresek
- • Klíma beszerelése, fűtés-hűtés házilag
- • Műhelyünk felszerelése, szerszámai
- • Rádióamatőrök topikja
- • Sárga Kazettás Piaci Nintendo (8bit)
- • Erősítő mindig és mindig
- • Villanymotor mi a hiba?
- • Napelem alkalmazása a lakás energia ellátásában
- • Eredményjelző
- • Számítógép tápegység
- • Porszívó javítás
- • Videomagnó problémák
- • ARM CPU assembler programozás
- • Autórádió (fejegység) problémák, kérdések, válaszok
- • Számítógép hiba, de mi a probléma?
- • 433 MHz adóvevő modul tapasztalatok
- • Labortápegység készítése
- • Zajos transzformátor
- • Klíma szervizelés, javítás
- • Arduino
- • Audiofil, High End Audio
- • Opto kapu és triak
- • Villanymotor bekötése
- • Mosógép vezérlők és általános problémáik
- • Boombox javítás
- • Oszcillátor építése rajzok
» Több friss téma
|
Ha engedélyezve hagyod az adat vonalakat, akkor ez történik.
Ezt reggeli után megnézem. 
Tehát a CSX láb alacsony szinten marad, akkor történhet ez.
Érdekes ha PWM-el leveszem (8 bites) 100-ra a háttérvilágítást 254-ről, akkor semmi gond. De mindjárt átbogarászom.
Szerk.: Nem néztem át, de nyugalmi állapotban megmértem és magas szinten van. A hozzászólás módosítva: Dec 27, 2015
Ha az engedélyezés mellett az adat lábak lebegnek, akkor bármi beszűrődhet. Minél nagyobb a fogyasztás, annál nagyobb lehet a zavarjel is. Nekem akkor szokott ilyen elmászás történni, amikor a kirakott kép után újabb programot töltök rá, vagy resetbe teszem a PIC-et és minden láb lebeg, de akkor se mindig, mert függ a huzalozástól és a zavaroktól...
A CSX labat csak akkor kell bekotni, ha hasznalod a shutdown modot.
A CSX láb mellé az adatlap a 18 bitet írja. 18 biten adod be az adatokat?
16 biten küldöm az adatokat. Akkor a CSX lábat nem is kell használnom?
Én adat küldés előtt alacsony szintbe rakom, utána pedig magasra.
Ez az adatlap egy agyrém. Úgy tűnik jól használod, engem tévesztett meg az 1. rajz. Minden más helyen használva van a CSX láb a folyamat ábrákon és van egy shutdown eljárás is, ahol egyedi időzítéseket kell használni.
Az IM lábakat beállítottad?
Igen, az IM lábak az LCD-n 16 bites kommunikációra vannak állítva.
A gond az, hogy 3,3V-ról abszolút fakó a kép, olyan mint amikor szétesik. És most hogy nézegettem most jutott eszembe, hogy már úgy voltam vele hogy mindegy mi lesz vele, ráraktam 5V-ra és a videó is 5V-os tápról készült. Persze 3,3V kell neki, nincs rajta stabilizátor, mert megmértem és a touch IC is 5V-ot kapott 3,3 helyett. Tudom, hogy ezzel adtam neki egy pofont, de szerintem gyári hibás a kijelző.
A touch eleve leesett róla, elengedte a ragasztás és a touch és a kijelző között nedvesség miatt foltok voltak, kiszárítás után jó lett, majd a gyári ragasztót letakarítottam és visszaragasztottam a touch-t.
A kínai akitől van persze azt mondja hogy ez 100% tested, de amikor kibontottam már láttam rajta, hogy lesz még vele bajom. Vissza sem veszi a kínai, nem válaszol.
Nem a touch miatt aggódnék, bár nem tudom milyen van rajta az XPT2046 6V-ig elvileg nem megy tönkre, de az LCD meghajtó IC 3,3V-os. Nem lehet, hogy még is van rajta regulátor? Nekem négyféle TFT-m van, mindegyiken van, igaz átkötéssel be kell állítani, hogy 3.3, vagy 5V-ról akarjuk használni. Mindenesetre itt már történtek olyan dolgok, amik miatt elég nehéz érdemben segíteni...
Igen, történtek. 
Ezen csak a helye van rajta, meg a jumper. Biztos hogy nincs rajta, mert a touch ic lábainál mértem feszültséget és ott is 5V van.
3,3V-ról most nem esik szét, csak akkor, ha a háttérvilágítást feljebb veszem, mondjuk maxra.
Nekem alapból rossz volt ez szerintem.
Droot kérdésére a válaszom:
Szia!
Igen innen lett rendelve.
A kapacitív touch-ot szerintem felszerelik, kompletten, de nem rendeltem még ilyen verziót.
A panelen ki van alakítva minden csatlakozás hagyományos tüskesorosra és fóliásra is. Ha fóliást kérsz, akkor adnak hozzá fóliakábelt és csatit a másik oldalra. A panelen be lesz forrasztva a választott csatlakozó.
Mindkét protokol mindkét féle csatlakozóval elérhető. Nem tudom mi a különbség, én nem látok semmit hardveresen. A vezérlő vonalak eltérően működnek a módokban, de ezt a kontroller IC-n belül kell beállítani az inicializálás során és utána természetesen annak megfelelően kell vezérelni a lábakat. Én is az Intel 8080 master interface protokolt használom, ahogy a legtöbb esetben ezt szokták a példákban. A hozzászólás módosítva: Dec 28, 2015
Csak rezisztívvel rendeltél?
Ha igen, akkor mindig jól működött?
Igen, csak rezisztívet rendeltem.
Igaz nem itt, hanem a PIC Miértek hogyanokban írtam a touch-ról:
Bővebben: Link
Valójában ide való a téma, de ott merült fel kérdésként. Azóta a régi 5"-ost is kipróbáltam és az is jól működik.
Sziasztok! Van egy 2,2"-os TFT kijelző modulom, ILI9341 vezérlővel. Egy 24H-s PIC-kel próbálok legalább egy pixelt átszinezni de hiába. Az inicializálás megy, inverzre tudom állítani a kijelzőt, de nem tudok kitenni semmit a kijelzőre. Az aadatlap alapján próbáltam memóriába írni pár bájtot, színbeállító regbe is írtam adatot, de eddig semmi. Esetleg valaki dolgozott már itt ilyen kijelzővel? A kérdésem hogy init után, hogyan szinezzek át egy pixelt? Ha ez megvan utánna biztosan menne a többi.
Nézz meg egy kész library-t és az alapján csináld. Én is először kész library-vel kipróbáltam az LCD-t, majd újraírtam egy kész library-t a saját ízlésem szerint.
Assemblyben programozom csak :/ Az initet Arduino projektekből szedtem össze.
Mutasd a progit, en eppen ilyet keszulok irni, ugyanugy 24-es procira, pont ugyanezzel a kijelozvel. Mondjuk nekem 18-assal mar van tapasztalatom.
Te rogton 24-el kezdtel?
A 9341-nel elotte ki kell adni, hogy hova es mekkorat akarsz irni, es csak utana lehet a 2c paranccsal a byteokat inditani.
Szia 16F-el kezdtem fél év után 18F re váltottam, ezt 2 évig progiztam, fél éve fejlesztek 24H-ra, A prgramozásával nincs gond. Csak asm et használok. ;=={PROCESSOR + CONFIG}=========================================================
.include "p24HJ128GP502.inc"
config __FBS, RBS_NO_BOOT_RAM & BSS_NO_BOOT_CODE
config __FSS, RSS_NO_SEC_RAM & SSS_NO_SEC_CODE
config __FGS, GSS_OFF & GWRP_OFF
config __FOSCSEL, IESO_OFF & FNOSC_FRC
config __FOSC, FCKSM_CSDCMD & IOL1WAY_ON & OSCIOFNC_ON & POSCMD_NONE
config __FWDT, FWDTEN_OFF
config __FPOR, ALTI2C_OFF & FPWRT_PWR128
config __FICD, JTAGEN_OFF & ICS_PGD1
;=={I/O PORTS}==================================================================
;***LCD MODUL***
;PIN23 RB12 CLK
;PIN24 RB13 SDI
;PIN26 RB15 /CE
;PIN16 RB7 D/C
;PIN18 RB9 RES
;***ANALIG CHANNEL***
;PIN2 RA0 AN0
;PIN3 RA1 AN1
;PIN6 RB0 AN2
;PIN7 RB1 AN3
;***BUTTONS***
;PIN6 RB2 SW1
;PIN7 RB3 SW2
;PIN9 RA2 SW3
;PIN10 RA3 SW4
;PIN11 RB4 SW5
;PIN1 MCLR RESET
;==(ASM30 DIRECTIVES)===========================================================
.bss
var2: .space 2
TG_DATA: .space 2
POINTER: .space 2
XCIM: .space 2
YCIM: .space 2
AREG: .space 2
;------------------------
NRF_STATUS: .space 2
NRF_FIFO_STATUS:.space 2
NRF_CONFIG: .space 2
NRF_OBSERV: .space 2
NRF_CD: .space 2
NRF_IRQ: .space 2
.global __reset
.text
;==(ASM30 macros)===========================================================
;==(INTERRUPT VECTORS)==========================================================
;==(PROGRAM START)==============================================================
;SZOFTVERES VEREM KONFIGURÁLÁSA
__reset: mov #__SP_init,w15 ;veremmutató inicializálása
mov #__SPLIM_init,w0 ;veremmutató felső határa
mov w0,SPLIM
;-----------------------------------
;I/O KONFIGURÁLÁSA
mov #0X091F,w0
mov W0,TRISB
nop
mov #0x000C,w0
mov W0,TRISA
nop
clr LATB
setm AD1PCFGL ;minden láb digitális
;-----------------------------------
;PERIFÉRIA ÁTHELYEZÉS ENGEDÉLYEZÉSE
mov #OSCCON,w1
mov #0x46,w2
mov #0x57,w3
mov.b w2,[w1]
mov.b w3,[w1]
bclr OSCCON,#IOLOCK
;--PERIPHERIA KONFIGURÁLÁSA
;SPI1 KOMMUNIKÁCIÓ LCD-VEL
mov #0x0708,w0 ;SDO1->RP13, SCK1->RP12
mov w0,RPOR6
mov.b #0x0e,w0 ;SDI1->RP14
mov.b wreg,RPINR20
;SPI2 KOMMUNIKÁCIÓ NRF-MODULLAL
mov #0x0008,w0
mov w0,RPINR22 ;SDI2->RP8
mov #0x0A00,w0
mov w0,RPOR2 ;SDO2->RP5
mov #0x000B,w0
mov w0,RPOR5 ;SCK2->RP10
;--PERIPHERIA LEZÁRÁSA
mov #OSCCON,w1
mov #0x46,w2
mov #0x57,w3
mov.b w2,[w1]
mov.b w3,[w1]
bset OSCCON,#IOLOCK
;-----------------------------------
SPI1_init: bclr SPI1STAT,#SPIEN
mov #0x013e,w0 ;Master, 8 bit, CKE=1, CKP=0
mov w0,SPI1CON1 ;921,6kHz (7,3728MHz/2 /4)
clr SPI1CON2 ;standard mód
mov #0x8000,w0 ;SPI1 eng.
mov w0,SPI1STAT
START:
;-----------TFT_DISPLAY_reset-----------
;HW
BSET LATB,#9
CALL IDO
BCLR LATB,#9
CALL IDO
BSET LATB,#9
BSET LATB,#15 ;CS->1
;SW
BCLR LATB,#15 ;CS->0
MOV.B #0X01,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
BSET LATB,#15 ;CS->1
CALL IDO
;-----------TFT_DISPLAY_INIT-------------
;//Power control A
BCLR LATB,#15 ;CS->0
MOV.B #0XCB,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X39,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X2C,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X00,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X34,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X02,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;-------------
;//Power control B
BCLR LATB,#15 ;CS->0
MOV.B #0XCF,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X00,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0XC1,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X30,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;-------------
;//Driver timing control A
BCLR LATB,#15 ;CS->0
MOV.B #0XE8,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X85,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X00,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X78,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;-------------
;//Driver timing control B
BCLR LATB,#15 ;CS->0
MOV.B #0XEA,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X00,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X00,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;-------------
;//Power on sequence control
BCLR LATB,#15 ;CS->0
MOV.B #0XED,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X64,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X03,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X12,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
;-
MOV.B #0X81,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;-------------
;//Pump ratio control
BCLR LATB,#15 ;CS->0
MOV.B #0XF7,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X20,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;-------------
;//Power Control 1
BCLR LATB,#15 ;CS->0
MOV.B #0XC0,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X23,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;-------------
;//Power Control 2
BCLR LATB,#15 ;CS->0
MOV.B #0XC1,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X10,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;-------------
;//VCOM Control 1
BCLR LATB,#15 ;CS->0
MOV.B #0XC5,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X2B,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X2B,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;-------------
;//Memory Access Control
BCLR LATB,#15 ;CS->0
MOV.B #0X36,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X48,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;-------------
;//Frame Rate Control (In Normal Mode/Full Colors)
BCLR LATB,#15 ;CS->0
MOV.B #0XB1,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X00,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X1B,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;-------------
;//Display Function Control
BCLR LATB,#15 ;CS->0
MOV.B #0XB6,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X0A,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X02,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;-------------
;//Enable 3G
BCLR LATB,#15 ;CS->0
MOV.B #0XF2,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X02,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;-------------
;//COLMOD: Pixel Format Set
BCLR LATB,#15 ;CS->0
MOV.B #0X3A,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X05,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;-------------
;//Gamma Set
BCLR LATB,#15 ;CS->0
MOV.B #0X26,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X01,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;-------------
;//Positive Gamma Correction
BCLR LATB,#15 ;CS->0
MOV.B #0XE0,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X0F,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X31,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X2B,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X0C,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X0E,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X08,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X4E,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0XF1,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X37,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X07,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X10,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X03,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X0E,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X09,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X00,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;------------
;//Negative Gamma Correction
BCLR LATB,#15 ;CS->0
MOV.B #0XE1,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X00,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X0E,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X14,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X03,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X11,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X07,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X31,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0XC1,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X48,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X08,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X0F,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X0C,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X31,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X36,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X0F,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;-------------
;// Sleep Out
BCLR LATB,#15 ;CS->0
MOV.B #0X11,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
BSET LATB,#15 ;CS->1
CALL IDO
;CASET_ADRESS
BCLR LATB,#15 ;CS->0
MOV.B #0X2A,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X85,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X85,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X05,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X05,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;PASET_ADRESS
BCLR LATB,#15 ;CS->0
MOV.B #0X2B,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X84,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X84,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X08,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X84,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;RAMWR
BCLR LATB,#15 ;CS->0
MOV.B #0X2C,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X87,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X87,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X87,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X87,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;RGB_SET
BCLR LATB,#15 ;CS->0
MOV.B #0X2D,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X87,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X87,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X87,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X87,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;VERTICAL SCROLLING DEF
;
BCLR LATB,#15 ;CS->0
MOV.B #0X30,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X87,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X87,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X87,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X87,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;VERTICAL SCROLLING DEF
;
BCLR LATB,#15 ;CS->0
MOV.B #0X30,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
;-
MOV.B #0X87,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X87,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X87,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
;-
MOV.B #0X7,W0
MOV.B WREG,TG_DATA
CALL KULD_ADAT
BSET LATB,#15 ;CS->1
;//Display NORMAL MODE ON
BCLR LATB,#15 ;CS->0
MOV.B #0X13,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
BSET LATB,#15 ;CS->1
;//Display On
BCLR LATB,#15 ;CS->0
MOV.B #0X29,W0
MOV.B WREG,TG_DATA
CALL KULD_PARANCS
BSET LATB,#15 ;CS->1
TZ: GOTO TZ
KULD_PARANCS:
MOV.B TG_DATA,WREG
MOV.B WREG,SPI1BUF
BCLR LATB,#7 ;DC->0
P3: BTST SPI1STAT,#SPIRBF
BRA Z,P3
BSET LATB,#7 ;DC->1
MOV SPI1BUF,WREG
RETURN
KULD_ADAT:
MOV.B TG_DATA,WREG
MOV.B WREG,SPI1BUF
P31: BTST SPI1STAT,#SPIRBF
BRA Z,P31
MOV SPI1BUF,WREG
RETURN
;=={Várakozó kezelő rutinok}================================================================
IDO:
mov #500,w1
egy:
mov #500,w1
mov w1,var2
ketto:
nop
dec var2
bra nz,ketto
bra nz,egy
return
IDO2:
mov #500,w1
egy1:
mov #1000,w1
mov w1,var2
ketto1:
nop
dec var2
bra nz,ketto1
bra nz,egy1
return
;=={Számok bitképei}================================================================
;=={END Program}================================================================
.end
Azt szabad megkerdezni, hogy miert SPI modban hajtod?
A masik, hogy en nem latom ezen a pontok beirasanak probalkozasat sem. Csak egy inicializalasi rutint.
Szia! Nem értem mi a baj a SPI-vel, illetve mire gondolsz? Elvileg még I2C vel lehetne, de a SPI-t jobban szeretem, egyszerübb és gyorsabb kommunikáció. A pontok beírását a 2C-parancsal próbáltam bevinni, ami a kódban is látható. Most eljutottam addig hogy tudok szineket és vonalat húzni, úgyhogy gyakorlatilag megvan amit szerettem volna. A megoldásomat végülis a 3C parancs os bevitel adta, amit utánna adatként kiküldök az megjelent a kijelzőn (FF fekete) (3F piros)  Esetleg arról tudsz valamit mondani, hogy mi a különbség a 2C és a 3C parancs között?
nem tudom, te honnan vetted, de nalam parhuzamos es igy szerintem joval gyorsabb. Azert ez mar elegge nagy felbontasu kepernyo, sok adatot kell kikuldeni.
egyebkent gratulalok, hogy sikerult!
Ahogy latom, a 2c mindig ugyanonnan kezdi az irast, a 3c pedig az utolso irt poziciotol.
tehat ezzel folytatni tudod az irast.
Nekem a képen látható fajta van, ezen lehetetlen a párhuzamos megoldás, a 2C vel még semmit sem sikerült kitennem, a 3C valóban folytatólagos, továbbá a 3C parancs után 2 paraméter (16bit) megadja a színt is. Amiket fent írtam színkódokra az inverz módban igaz, azóta már normálra állítottam. most a címzésekkel szórakozok, valamiért 4-5 pixellel beljebb kezdni akkor is ha nullára állítom a pozició értékeket, lehet hogy valamit elnézek.
A 3C-s parancs a képformátumhoz való ezért folyamatos, viszont rájöttem, hogy ha az ember nem képet akar, hanem valami adatot megjeleníteni, akkor ez nem járható. Jelenleg a másik módot próbálom megtalálni amikor rugalmasan címezhető a ramterület.
De mondom, hogy a 2C-t meg kell elozze a sor es oszlop beallitasa.
Itt egy pelda 18F-ben:
A writeregister macro igazabol a parancs es meg ket byte beirasa. A kijelzo adatlapjan megtalalod a ket addset erteket (0x2a,0x2b)
ILI9341_ClearDisplay:
writeRegister2x16 ILI9341_COLADDRSET, D'0',D'319' ;x koord start,stop
writeRegister2x16 ILI9341_PAGEADDRSET,D'0',D'239' ;y koord start, stop
Lcd_Write_Com ILI9341_MEMORYWRITE
bsf comdat
movff hatterszinlo,LATD
mov TEMP3,2
mov TEMP2,2c
mov TEMP1,0
jmp clcik1
clrf TEMP3
clcik3:
clrf TEMP2
clcik2:
clrf TEMP1
clcik1:
WR_STROBE
WR_STROBE
decfsz TEMP1
jmp clcik1
decfsz TEMP2
jmp clcik2
decfsz TEMP3
jmp clcik3
ret
A hozzászólás módosítva: Jan 8, 2016
Nem értetlenkedésből, de amit felmásoltam kódrészletet, ott megelőzi a 0x2A és 0x2B parancs beállítás a 0x2C parancsot. Egyébkét a 0x3c folytonost is meg kell előzze e 0x2a 0x2b címbeállítás. Na de ami most engem foglalkoztat az az hogy magát az írandó pixel címét hogyan adom meg? Mert az 0xa2 és 0xb2-kkel csak a kezdeti és végpontokat tudom meghatározni, de azon belül nem értem hogyan tudok lépkedni.. 3310 es nokia kijelcőjét használtam ezelött, abban vígan megcsináltam amit akartam, nem lehet ezt is valahogy hasonló üzemmódban használni? Sorokra felosztani pl..
Meg van a color set (0x2D) parancsot péltául milyen módban kell használni? Mert ha a 0x3C folyamatos memóriaíró paranccsal írok akkor az azt követő adatok értéke adja meg a színt.
Tanulmányozom az adatlapot egész nap, de már kivagyok tőle.
Igen, mar megtalaltam. Oszinten szolva egyaltalan nem vagyok meggyozodve rola, hogy a regisztereket jo sorrendben irod (ugy ertem, az inicialast kulon kellene es a rajzolast csak utana, miutan bekapcsoltad a kepernyot).
Probald ki ugy, hogy az inicializalast megcsinalod ezek nelkul es utana allitod a 2a,2b es irsz a 2c paranccsal. Csak azert gondolom ezt, mert ez nekem igy mukodik szepen.
A 2a es 2b egyszerre allitja a kezdo es a vegcimeket. Lathatod az adatlapban. S es E azaz Start es End word-oket kell megadni utanuk. Tehat nem egy pontot, hanem egy teglalapot definialsz veluk.
Értem tehát téglalap. Eddig rendben, viszont azt most nem értem, hogy a két kordináta kezdőpontja nulla akkor miért van ez a kijelzőn? beállítom rendesen a 2 16 bites címregisztert aztán a 3C vel kiküldök 0xFFF db pontot. Na mindegy ez sok mára.. A hozzászólás módosítva: Jan 8, 2016
Ez 2x 2db 16 bites cimregiszter...
Kerlek, probald ki a 2a,2b beallitast. Mondjuk legyen 0,10 es 0,50
Utana meg 2c, majd 500db piros (word).
Egyebkent nalad van kepernyotorles, miutan inicialtad?
Mert pl. nalam alapesetben digitalis szemet van a kepernyon. A hozzászólás módosítva: Jan 8, 2016
Elírtam 2x 2db 16bitre gondoltam. Próbálkozom még, viszont a képernyő törlés alatt mit értesz? init elött csinálok hardveres és szoftveres resetet is, és init után az a képernyő fogad amit a fenti képen látsz csak a fekete rész nélkül, tehát tiszta. Szeméttel nem is találkoztam még. Anno 3310 es kijelzőnél csináltam azt a szemét eltüntetésére, hogy végigírtam a kijelzőt kezdésnek üres bájtokkal.
|
|