BL12864G kijelző kezelés

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
winnerbt
Chipfüstölő
Hozzászólások: 897
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

HozzászólásSzerző: winnerbt » 2011. szeptember 25. vasárnap, 16:11

Olvasás azért kell, mert amikor bitműveletek végzel, akkor mondjuk egy LINE-nál hülyén néz ki, ha az egész byte-ot (oszlopot vagy sort) kitörli.
Tehát pixel rutinoknál pozicionál-beolvas-bitet billent-visszaír a dolog.
Ez persze nem kell, ha a memóriában le van képezve az egész kijelzés. Manapság sajnos ez a szokás, mivel sok RAM van a uC-kben vagy röptében számolod ki a dolgokat.
FF-ben nagyobb kijelzőket fénymásolókban láttam, de ott is a tapicsos TFT a dívi kb 10 éve.
Ha a megrendelőnek nagyobb grafika kell, akkor szerintem nem fogod megúszni a pl. 320x240-es kijelzőt. Annak már jó a mérete, gondolom, de az új ára...
JAni

Avatar
winnerbt
Chipfüstölő
Hozzászólások: 897
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

HozzászólásSzerző: winnerbt » 2012. február 6. hétfő, 9:51

Sziasztok Nagytudásúak!
Az OLED meghajtogatással eléggé a végén járok, normál basicben sok minden megíródott (csak lassan). Az lenne a kérdésem, hogy ha ráveszem magam normál LIB írására, akkor hogyan lehet lefoglalni a memóriából 1k-t, amit más nem tud használni? Úgy gondoltam, hogy a Config LCD-nél ha a VIRTUAL változó =1, akkor lefoglal 1k-t a RAMból és oda készíti a teljes képet amit majd a RENDER parancs egyszerre kivisz. No, de hogyan lehet megadni, hogy nekem kell 1k valahol? A másik ehhez kapcsolódó kérdésem. Van 8db tömböm ( S(127)=byte) amit jó lenne törölni, de gyorsan. Egymás után vannak a tömbök a memóriában, tehát egy kicsi ASM ciklussal lehetne gyorsan törölni. A VARPTR(S0(1)) jó eredményt ad. Össze tudna nekem valaki vésni egy kétciklusos ASM-et ami feltölt 1k-t az S0(1) címtől 0-val? (AVRstudióm meggágyult valamiért).
JAni

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3348
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

HozzászólásSzerző: kapu48 » 2012. február 6. hétfő, 11:07

Ilyesmire gondolsz?:
http://www.avr-asm-tutorial.net/avr_en/beginner/ ->How to use SRAM?
:?:

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10033
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2012. február 6. hétfő, 12:00

Fixen foglalt memória:
Lekéred a Bacomtól, hogy hol végzi ki a HWStack/SWStack és Frames területet
Mglesed hogy a foglalt változók meddig nőnek. Ha a kettő közt van 1K-d, akkor örülsz. És ha nincs ?:)
A Bascomba hibaüzenetet behegeszteni fogalmam sincs hogy lehet:(

A lib-ben Bascom és ASM utasítás is használható. DE: a regiszterkezeklés eléggé megbonyolíthatja a helyzetet, mert _neked_ kell a memória mozgatásokat megoldani.
Vigyázz még arra, hogy van pár regiszter amit a bascom használ. van pár, amit külső LIB (pl. Single/Double számolások)


Hülye tipp:
Mi van ha nem LIB-t, hanem Include-t csinálsz?
- 1 db a foglalt változóknak, változóneveknek
- 1 db meg a tényleges szubrutinoknak.
Ebben lehet Bascomod és lehet Inline ASM is vegyesen....

Avatar
winnerbt
Chipfüstölő
Hozzászólások: 897
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

HozzászólásSzerző: winnerbt » 2012. február 6. hétfő, 12:02

ldi r30,0
ldi r31,4 '1k
ldi r26, low (varptr(s0(1)))
ldi r27, high(varptr(s0(1)))
clr r24
Tcikl:
st x+,r24
sbiw r30,1
brne Tcikl

Az S0(1) tömb elejétől kellene 1k-t törölni a RAMban. De valahogy nem akaródzik átadódni az S0(1) változó helye az Xregiszternek :(
Mindenáron cimkét akar. Próbáltam, hogy egy word változó=VARPTR(S0(1)), ez be is teszi, de az ASMben nem akarja a LOW-HIGH(változó)-t.
JAni

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10033
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2012. február 6. hétfő, 12:50

ASMben SRAM hívást nem tudsz csinálni. TE programozod azt le (leglábbis én egy hét után feladtam).

A változó memóriahelyene ismert?
Onnan SRAM-> regiszter másolással megszerezhető a H és L helyiérték...
Esetleg Overlay-l meghivatkozod két változóra?

Avatar
winnerbt
Chipfüstölő
Hozzászólások: 897
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

HozzászólásSzerző: winnerbt » 2012. február 6. hétfő, 13:02

Aha. Értem... Persze, ismert (lesz) akkor az az egy VARPTR változó helye és akkor onnan kikalimpálom. Hmmm érdekes ez a dolog, hogy csak úgy nem motoszkálhatok a memóriába.
JAni

Avatar
winnerbt
Chipfüstölő
Hozzászólások: 897
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

HozzászólásSzerző: winnerbt » 2012. február 6. hétfő, 13:14

http://data.hu/get/4700222/oled2.mpg
Ha valakit érdekel, 25M vacak videjó.
Csak BASCOM, basic PLOT és LINE tesztek...
Sajnos nincs benne ASM rutin :(
De majd, csak ráérjek a hólapátolás mellett!!!
JAni

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3348
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

HozzászólásSzerző: kapu48 » 2012. február 6. hétfő, 13:37

Esetleg használd az ADR utasítást! Bascom Help:

Create label address.

Syntax

ADR label
ADR2 label

Avatar
HPMaster
Bitmanipulátor
Hozzászólások: 138
Csatlakozott: 2008. március 10. hétfő, 6:00
Tartózkodási hely: Budapest IX. ker

HozzászólásSzerző: HPMaster » 2012. április 23. hétfő, 16:09

Tiszteletem Urak!

Akadt a minap a kezembe egy 240x128-as kijelző.
BG240128B2BNHHnp típus.

A bascom grafikus fügvényeit használom de az a baj, hogy elég instabil a dolog. Folyton szétesik a kép a kijelzőn.

Műszerfalat próbálok összehozni.
Adatvezetékeim egy M16 proci C portján vannak, vezérlőlábak pedig a B porton.

Kód: Egész kijelölése

Config Graphlcd = 240 * 128 , Dataport = Portc , Controlport = Portb , Ce = 3 , Cd = 0 , Wr = 2 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8


Az áramkör tele van tűzdelve 100n kondikkal...

Vélemények?

Avatar
winnerbt
Chipfüstölő
Hozzászólások: 897
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

HozzászólásSzerző: winnerbt » 2012. április 23. hétfő, 16:27

Talán próbáld meg alacsonyabb órajellel, hát ha nem jól számol késleltetéseket. Nekem tökéletesen megy a 240x128-as minden hókusz-pókusz nélkül. (14.7MHz ver.2.0.7.4)

Avatar
HPMaster
Bitmanipulátor
Hozzászólások: 138
Csatlakozott: 2008. március 10. hétfő, 6:00
Tartózkodási hely: Budapest IX. ker

HozzászólásSzerző: HPMaster » 2012. április 23. hétfő, 17:22

Ugyan belső 8MHz-es órajelről megy a proci, de nem tartom valószínűnek, hogy azzal lenne a gond.

A tápot is ellenőriztem már és stabil 5V

Indulás után kb 1-2 mp-el elmegy a kép és csak egy vízszintes csík marad resetelésenként változó helyen.

Avatar
winnerbt
Chipfüstölő
Hozzászólások: 897
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

HozzászólásSzerző: winnerbt » 2012. április 23. hétfő, 18:25

Jaaa, akkor vagy RESETben van a vezérlő vagy nem kap kvarcot (leáll az órajele).
Ilyen üzemmódot SW-ből nem tudsz elérni. Nem döglődik? Reset lábat nézd meg, nem rece-ficés-e, esetleg felhúzó ellenállat rá.
Ja, meg ugye egy tápról megy a uC meg a kijelző? A nagy kavarodásban jártam úgy, hogy nem voltak összetestelve és mindenféle parazita/lebegő tápról ment a kijelző, csinált is érdekeseket.
JAni

Avatar
HPMaster
Bitmanipulátor
Hozzászólások: 138
Csatlakozott: 2008. március 10. hétfő, 6:00
Tartózkodási hely: Budapest IX. ker

HozzászólásSzerző: HPMaster » 2012. április 23. hétfő, 19:00

A táp közös, reseten van felhúzó ellenállat, és tapasztalat szerint csak akkor csinálja, amikor képet is töltök a kijelzőre.

Kód: Egész kijelölése

Showpic 1 , 25 , Kep
...
Kep:
$bgf "kep.bgf"

Avatar
winnerbt
Chipfüstölő
Hozzászólások: 897
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

HozzászólásSzerző: winnerbt » 2012. április 23. hétfő, 19:16

Hmmm.
Ha elküldöd az egész programod, akkor nekem csak a portot kell átírnom és ki tudom próbálni.
Vagy ha ilyenre átírod és lefordítod, akkor jöhet a BIN-is és kipróbálom.

Kód: Egész kijelölése

Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 4 , Cd = 7 , Wr = 5 , Rd = 6 , Reset = 3 , Fs = 1 , Mode = 6


De ugya a $BGF az END után van a programban?!?
JAni


Vissza: “Bascom-AVR nyelvű programozás (AVR programozásának lehetőségei)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég