|
Svet elektronike Revija za prave elektronike
|
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
protoncek Profesionalec
Pridružen/-a: Sob Maj 2007 9:25 Prispevkov: 303 Kraj: Mengeš
|
Objavljeno: Pet Apr 13, 2012 8:11 pm Naslov sporočila: GLCD z ST9720 kontrolerjem |
|
|
V roke mi je prišel grafični LCD128x64 z omenjenim kontrolerjem ( kitajski). Ker v bascomu ne najdem knjižnice zanj sklepam da ga nativno ne podpira, kaj? Sicer sem na mcs forumu našel en testni program, kjer pa uporablja direktno komunikacijo. Načeloma je kontroler zanimiv zato,ker ima tudi serijsko komunikacijo in bi ga tako lahko uporabil na avr-ju z manj pini. Je kdo že kaj delal s tem? Drugače bo treba v roke pljunit in naštudirat... _________________ http://www.protoncek.com |
|
Nazaj na vrh |
|
|
Silvo Profesionalec
Pridružen/-a: Tor Jan 2004 19:06 Prispevkov: 234
|
Objavljeno: Pet Apr 13, 2012 9:17 pm Naslov sporočila: |
|
|
Zanimiv kontroler. Si gledal tale datashet? V tekst modu je sorazmerno lahko zagnati. Malo bolj komplicirano bo kracanje v grafičnem načinu. |
|
Nazaj na vrh |
|
|
protoncek Profesionalec
Pridružen/-a: Sob Maj 2007 9:25 Prispevkov: 303 Kraj: Mengeš
|
Objavljeno: Sob Apr 14, 2012 8:26 am Naslov sporočila: |
|
|
Ja, sem gledal in imaš prav. Tisti demo program iz MCS foruma napiše gor en tekst ter nariše par krogov, tako da osnovo imam. Sicer me pa skoraj bolj zanima serijski način, ampak ker tukaj nisem preveč doma sploh ne vem, kaj je to za en protokol. Bom prvo poskusil npr. Z I2C, ki ima isto data line in clk line. Zanimivo bi bilo namreč poganjati grafični zaslon npr. Z kakšnim tiny-em...
Načeloma se mi itak (zaenkrat) ne gre toliko za kracanje. Njem, ampak bolj to da bi pisal gor z različnimi fonti, kar bo pa, če prav razumem treba v grafičnem načinu. On ima namreč font 16x8 vgrajen, ter kitajske zanke in to je to. Razen če ga porabim kot 6x 16 (ali nekaj takega) znakovni LCD. _________________ http://www.protoncek.com |
|
Nazaj na vrh |
|
|
Silvo Profesionalec
Pridružen/-a: Tor Jan 2004 19:06 Prispevkov: 234
|
Objavljeno: Sob Apr 14, 2012 1:12 pm Naslov sporočila: |
|
|
Koliko gledam datashet je serijska komunikacija čisto preprosta. Ni pa I2c. Bolj je podobna SPI. Komunikacija je le v smeri CPU->LCD. Displej ne vrača nič, tako da kaka namenska I2c rutina ne bo delala. Nisem se poglabljal v podrobnosti - tako na hitro bi rekel, da bi morda celo delal hardverski SPI. V tekst načinu boš lahko uporabil le vgrajeno kodno tabelo. Vse ostalo bo potrebno delati v grafičnem načinu. Tukaj pa bo šlo precej po programskem pomniliku mirkokontrolerja tako, da v navezi z kakim malčkom lahko pozabiš na grafični način. |
|
Nazaj na vrh |
|
|
protoncek Profesionalec
Pridružen/-a: Sob Maj 2007 9:25 Prispevkov: 303 Kraj: Mengeš
|
Objavljeno: Sob Apr 14, 2012 3:34 pm Naslov sporočila: |
|
|
Ja, nekaj sem se že ukvarjal s serijsko komunikacijo, pa zaenkrat neuspešno...nisem nikjer sploh zasledil kakšna je lahko največja hitrost, če je sploh pomembno. Delal sem pa kar direktno ukaze (v bascomu) po sistemu set port.x -- reset port.x. Na osciloskopu sem lepo dobil zaporedje uro in ukaze, samo LCD zaenkrat ne =be žive sile. No, serijska komunikacija je itak bolj izziv kot uporabnost, ker, kot imaš prav, itak rabim večji kontroler zaradi spomina, če nič drugega.
Zdaj sem v paralelnem načinu prišel do tega da lahko pišem gor z vgrajenim fontom ter narišem kakšno črto in krog torej za silo ga lahko porabim kot 4x16 LCD.
Zgrešen nakup pač, vidim...kitajci nič ne pišejo, kateri kontroler je. Saj me je izučilo. Zdaj bom vedno gledal, da piše KS107/108. Mi je bolj všeč. _________________ http://www.protoncek.com |
|
Nazaj na vrh |
|
|
Silvo Profesionalec
Pridružen/-a: Tor Jan 2004 19:06 Prispevkov: 234
|
Objavljeno: Sob Apr 14, 2012 4:49 pm Naslov sporočila: |
|
|
Na 44-ti strani imaš timing diagrame. Gre kar visoko TSLW =300nS TSHW=300ns (zgornja meja ni limitirana) max 1.6Mhz |
|
Nazaj na vrh |
|
|
protoncek Profesionalec
Pridružen/-a: Sob Maj 2007 9:25 Prispevkov: 303 Kraj: Mengeš
|
Objavljeno: Sob Apr 14, 2012 5:06 pm Naslov sporočila: |
|
|
Aha...no, jaz sem imel gotovo nižjo frekvenco. Sicer imam kristal 10MHz, ampak sem vmes dajal pavze - poskušal sem od 1 do 10 mikrosekund, pa še bascom itak ni tako hiter, torej je bilo krivo kaj drugega. Očitno sem pri inicializaciji pozabil kakšen string. Se bom še malo pozabaval z njim. _________________ http://www.protoncek.com |
|
Nazaj na vrh |
|
|
Silvo Profesionalec
Pridružen/-a: Tor Jan 2004 19:06 Prispevkov: 234
|
Objavljeno: Sob Apr 14, 2012 6:12 pm Naslov sporočila: |
|
|
Ne izgleda komplicirano.
Najprej ga moraš hrdware dati v serijsko komunikacijo.
To storiš tako, da potegneš pin PSB na dol.
Sledi izbira vodila CS na gor. Data linijo (SID) postaviš željeno stanje nato "togglaš" CLK. Tako pošlješ vseh 24 bitov. Začneš z sinhorniziaciskimi biti (5x togglaš CLK z visokem SID-om) in tako naprej... Na koncu spustiš CS. (glej diagram na stani 26.) Najprej probaj vkljuciti kursor ter ga vključit, da utripa. Tako boš videl, če tvoja procedura dela. |
|
Nazaj na vrh |
|
|
protoncek Profesionalec
Pridružen/-a: Sob Maj 2007 9:25 Prispevkov: 303 Kraj: Mengeš
|
Objavljeno: Sob Apr 14, 2012 9:15 pm Naslov sporočila: |
|
|
Ne dela nič...jutri naprej...
V glavnem, poskušam prižgati kursor in vključiti utripanje.
Zdaj npr. sploh nisem več prepričan, ali moram tisti start byte poslati VEDNO pred vsakim ukazom ali samo prvič...nikjer ni točno zapisano..
Mislim: ali start byte - 1 ukaz, startbyte, 2. ukaz.....
ali takole:
startbyte, 1.ukaz, 2.ukaz....
v glavnem ne dela ne na prvi ne na drugi način.
Vedno bolj se mi zdi da bo treba ta GLCD prodati naprej (imam dva kosa) nekomu, ki se bolj spozna na serijsko komunikacijo...ali pa uporabiti paralelno.
Kakorkoli že, hvala zaenkrat za vso pomoč do sedaj! _________________ http://www.protoncek.com |
|
Nazaj na vrh |
|
|
Silvo Profesionalec
Pridružen/-a: Tor Jan 2004 19:06 Prispevkov: 234
|
Objavljeno: Sob Apr 14, 2012 11:04 pm Naslov sporočila: |
|
|
Vsak paket je dolžine 24 bitov. Vedno pošlješ sinhro bite. Ko je paket zaključen spustiš CS na nizko. Žal ti z bascomom ne znam pomagat. Lahko pa ti spišem tole v assemblerju. Povek kateri mikrokotroler imaš zraven ter s katerimi pini imaš zvezan displej. |
|
Nazaj na vrh |
|
|
protoncek Profesionalec
Pridružen/-a: Sob Maj 2007 9:25 Prispevkov: 303 Kraj: Mengeš
|
Objavljeno: Ned Apr 15, 2012 8:19 am Naslov sporočila: |
|
|
No, če ti ni pretežko, bi si s tem seveda pomagal, ker asemblerja ne znam ravno...poleg tega je v bascom možno vstavljati tudi dele strojne kode. Nenazadnje bo v primeru delovanja mogoče primerjati timing strojne kode in po tem prirediti bascom. Trenutno delam z mego 644P, ker sem jo ravno imel v razvojni plošči, lahko pa tudi za mego32, jo imam tudi doma. Vezava niti ni pomembna, trenutno imam data na b.0, clock na b.1 in cs na b.2 , lahko pa vežem kamorkoli, tako da ni panike.
Obstaja pa seveda možnost da so kitajci kaj "pozabili" zvezati in serijska komunikacija sploh ne dela...
EDIT:ja, še to : kristal imam trenutno 10MHz, če je to kaj važno. Lahko pa dam kaj drugega notri... _________________ http://www.protoncek.com |
|
Nazaj na vrh |
|
|
Silvo Profesionalec
Pridružen/-a: Tor Jan 2004 19:06 Prispevkov: 234
|
Objavljeno: Ned Apr 15, 2012 10:45 am Naslov sporočila: |
|
|
Ne pozabi na pin PSB! V kodi sem ga definiral kot PB3. Načeloma clock ne bi smel imeti kakega vpliva. Proceduro sem spisal v makro, ki prejme tri parametre 1,2 ter 3 byte. Tisto pavzo vmes sem dal za vsak slučaj. Če bo delalo jo lahko probaš vreči ven. V glavi sem definiral pine. Lahko jih menjaš poljubno. Seveda je potem potrebno kodo prevesti.
Koda: | ;test displej ST9720 kontroler txt mode
#include "M32def.inc"
.def tmp=r16
.def stevec=r17
;------------------------------
;tole prilagodi za tvoj priklop
.equ PinPsb=3
.equ PinCs=2
.equ PinClk=1
.equ PinSid=0
#define Port portb
#define Izhodi ddrB
;------------------------------
#define PSB Port,PinPsb
#define CS Port,PinCs
#define CLK Port,PinClk
#define SID Port,PinSid
.macro SetIzhod
sbi Izhodi,PinPsb
sbi Izhodi,PinCs
sbi Izhodi,PinClk
sbi Izhodi,PinSid
.endm
.macro NaLcd
ldi stevec,8
sbi CS ;vkop vodila
ldi tmp,@0
rcall Poslji
ldi tmp,@1
rcall Poslji
ldi tmp,@2
rcall Poslji
cbi CS
.endm
.org 0x0
rjmp GlProg
.org 0x030
Poslji:
ldi stevec,8
NiKonec:
lsl tmp
cbi SID
brcc NaClk
sbi SID
NaClk:
cbi CLK
nop
nop
sbi CLK
dec stevec
brne NiKonec
ret
GlProg:
ldi tmp,low(ramend)
out SPL,tmp
ldi tmp,high(ramend)
out SPH,tmp ;sklad
SetIzhod ;definiranje potrebnih pinov kot izhod
cbi PSB ;vklop serijske komunikacije
sbi CLK
NaLcd 0b11111000,0b00110000,0b00000000 ;8 bitni interface, txt mode, basic instruction set
rcall Pavza50uS
NaLcd 0b11111000,0b00000000,0b11110000 ;displej on cursor on bliknk on
rcall Pavza50uS
NaLcd 0b11111000,0b00000000,0b00010000 ;clr displej
sbi PSB
nop
rjmp pc-1
;-----------------------------------------------------------
;Pavza 50uS Oscilator 8Mhz
;-----------------------------------------------------------
Pavza50uS:
push r20
ldi r20,129
P_zanka:
dec r20
brne P_zanka
pop r20
nop
nop
ret
|
|
|
Nazaj na vrh |
|
|
protoncek Profesionalec
Pridružen/-a: Sob Maj 2007 9:25 Prispevkov: 303 Kraj: Mengeš
|
Objavljeno: Ned Apr 15, 2012 12:08 pm Naslov sporočila: |
|
|
JUHU!!! dela!
Sicer sem se malce "zlagal"...nimam na voljo mege32, (je šla v nek projekt ) ampak 16-ko, pa sem popravil v AVR studiu in kursor veselo utripa!!
Zdaj pa naprej. Mogoče se še malo poglobim v kodo, saj ni tako komplicirano, kot vidim. Včasih, ko sem še Z80 malce programiral mi je bolj kot razumevanje kode delalo težave projektiranje samega programa - mislim - "pogruntati" je treba mariskaj, npr. kako množiti, deliti, pogojne stavke...
Zaenkrat najlepša hvala! Bom poročal, če bo kaj spremembe. _________________ http://www.protoncek.com |
|
Nazaj na vrh |
|
|
Silvo Profesionalec
Pridružen/-a: Tor Jan 2004 19:06 Prispevkov: 234
|
Objavljeno: Ned Apr 15, 2012 1:00 pm Naslov sporočila: |
|
|
Sedaj dalje sploh ni problem. Kodo načeloma lahko na enak način spišeš tudi v tvojem jeziku. V zanki pošlješ tiste tri byte ter toglaš CLK. Šlo bo le nekoliko bolj po programskem pomnilniku.
Sedaj poskusi spravit karakter iz kodne tabela na ekran.
Lahko koristiš kar obstoječi makro.
RS=1 RW=0 Karatker "A" se nahaja v kodni tabeli 4high 1low
dopišeš obstoječi kodi:
Koda: |
NaLcd 0b11111010,0b01000000,0b00000001 |
pa bi mogel zleteti "A" na displej. |
|
Nazaj na vrh |
|
|
protoncek Profesionalec
Pridružen/-a: Sob Maj 2007 9:25 Prispevkov: 303 Kraj: Mengeš
|
Objavljeno: Ned Apr 15, 2012 1:47 pm Naslov sporočila: |
|
|
Ja, res je. Čisto lepo piše tekst.
Kot sem do sedaj uspel ugotoviti je res očitno vse v timingu. Namreč, v bascomu sem zadevo napisal točno po tvoji predlogi in zadeva deluje, a samo če imam pod kontrolo tudi PSB bit. Če ga vežem fiksno na maso (vklop serijske komunikacije), je LCD mrtev, medtem ko strojna koda deluje tudi če je PSB stalno na masi in tudi če je CS stalno na plusu. Poleg tega mi v bascomu zaenkrat deluje le vklop utripanja kurzorja, tekst pa še ne. Ampak zaenkrat se še raje igram s strojno kodo Tisti timing bom že pogruntal, drugače bom pa na en način to strojno kodo vgradil v bascom.
ja, timing je hudič... _________________ http://www.protoncek.com |
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu You cannot attach files in this forum You cannot download files in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|