Problem s displayom Siemens S65 - L2F50

Mal som stary mobil - Siemens S65, z ktoreho som si nechal akurat display typu L2F50, ktory som chcel neskor rozbehnut. Bolo to pred par rokmi. Teraz, ked pisem diplomovku, som sa rozhodol ho pouzit. Ale mam problem => display nemozem rozbehnut. Potrebuje pomerne dlhu inicializaciu, ktoru som starostlivo odkrokoval a odsimuloval. Podla toho, co vidim na obrazovke je vsetko v poriadku. Ale displayu sa nechce. Jedina vec, co sa mi podarila, je zobrazenie na displayi nahodne pixely (aj to uplne omylom).

Takze, vychadzal som z tohto webu: superkranz.de/christian/S65_Display/DisplayIndex.html

Kody na odoslanie instrukcie a dat:

[code]void lcdSend(unsigned int data) {
int mask;
LCD_CS_OFF;
LCD_RS_ON;
for (mask = 0x8000; mask != 0; mask = (mask >> 1) & 0x7FFF) {
LCD_CLK_OFF;
if (mask & data) {
LCD_DATA_ON;
} else {
LCD_DATA_OFF;
}
LCD_CLK_ON;
}
LCD_CLK_OFF;
LCD_CS_ON;
}

void lcdSendData(unsigned int data) {
int mask;
LCD_CS_OFF;
LCD_RS_OFF;
for (mask = 0x8000; mask != 0; mask = (mask >> 1) & 0x7FFF) {
LCD_CLK_OFF;
if (mask & data) {
LCD_DATA_ON;
} else {
LCD_DATA_OFF;
}
LCD_CLK_ON;
}
LCD_CLK_OFF;
LCD_CS_ON;
}[/code]

Dodrziavam casovanie (odstopovane stopwatchom) a aj instrukcie (su popisane v dokumentoch na tej stranke). Co sa ale stane? S displayom ani nehne. Zistil som ale, ze ak sa odoslu data (nie command) 0x**AF, tak display zobrazi nahodne pixely. Pritom nieje rozhodujuce, ci bola predtym vykonana inicializacia, alebo nie. Ak tieto data neodoslem, vysledkom je nabielo vysvieteny display bez znamok akehokolvek zobrazenia. Vie mi niekto pomoct prosim? Skusal som uz hocico.

Mimochodom, pouzivam procesor PIC18F2550, ktory mimochodom ma SPI komunikaciu hardverovu (nefunguje to ani s nou), ale takto mam piny viac “pod kontrolou”. Na vyvoj pouzivam MPLABX a kompiler XC8. Procesor bezi na 20 MHz krystale. Kontroloval som komunikaciu “Logic Analyzer”-om priamo vo vyvojovom prostredi.

Cau, pokud displej vypada jako rozsipanej caj tak je inicializovanej ale neni nastavena pamet pro zobrazeni (nahodny pixely) , pokud sviti bile je inicializovanej a je nastavena zobrazovaci pamet, takze v tomhle bych problem nevidel, skus tam poslat par 0x0000 jako data co se stane ,
nevim jak vypada zbytek kodu … co pak posilas po inicializaci

stimhle konkretne skusenosti nemam ale vesmes je to vsechno stejny az na inicializacni prikazy …, odesilani vypada vporadku

Samozrejme som sa pokusal odoslat rozne data. Teda commandy na urcenie polohy kurzora na displayi a nejake data (biele pixely, cierne pixely a podobne). Ale k nicomu to nikdy neviedlo (stale som ho videl rovnako). A mimochodom, nechce sa mi verit, ze po odoslani commandu 0x**AF sa komplet cely display zinicializoval a netreba mu uz nic viac :smiley: Naco je tam potom tych 40 commandov, ktore maju predchadzat akymkolvek datam? :slight_smile:

skusit treba jinek kod…? porovnat s jinym
obcas se stane ze zustane inicializovany i po chvilkovym vypadku napajeni pokud ovsem nenasleduje inicializace s resetem

Reset mam vsade na zaciatku, lebo po prezerani inych kodov to tak inicializovali, tak to tak robim. Vsade sa nachadzaju kody pre typ LS020. Aj co sa inicializacie tyka, aj ostatnych veci. Asi to nebude kompatibilne, budem musiet hladat dalej. Asi tu vela ludi s tymto displayom nema skusenosti (prehladaval som to tu).

jeste jedna vec , odesilaj se 8 a 16 bit data , 8b = 0xdata +0x0 (8+8b), 16b = 0xdata + 0xdata (8+8b),

www.mikrocontroller.net/attachment/145190/simple.zip

:arrow_right: administrator: přiloženy externí soubory
simple.zip (4.65 KB)

Tato zmena nepriniesla ziadne ovocie. Dokument, ktory som mal udaval 16 bitove instrukcie a data, ktore mali byt jednotlivo odoslane. Tieto dokumenty, na ktore si tu dal link som mal uz skor, ale zameriaval som sa na ine. V zufalstve som siahol po tomto (uz asi 4.) programe, ktory som prerobil na XC8 kompiler. Display zrazu nabehol a viem s nim normalne pracovat :slight_smile: Co ma ale “dostalo”, tak ziadna z povodnych instrukcii, ktore som tam povodne pchal roznymi metodami (podla predchadzajucich programoch) tam proste nieje. Su to uplne ine instrukcie, ako su popisovane v inych materialoch, ale tieto funguju. Dakujem ti.

Pretaktoval som PIC18F2550 na 48MHz a konecne to ma aj vyhovujucu rychlost. Samozrejme som vymenil softverove SPI za hardverove a cely display je prepisany za 104,4ms (zapisujem to vo for cykle - 23 232 pixelov), teda celkom v pohode. Este raz diky :slight_smile:

to sem rad ze se zadarilo :slight_smile: , promin, trochu sem te nepochopil , pomohl ti ten kod co sem linknul nebo jiny ? kdyztak ho sem hot i pro ostatni…

dneska sem byl s odpadem a vytahnul sem si funkcni N2600 :laughing: , tak sem zvedavej jestly ho rozchodim az bude cas

V podstate mi ten tvoj kod pripomenul, ze mam taky isty kod u seba na disku a este som ho nepreklapal. Tak som to urobil a ono to funguje :slight_smile: Pre zvysenie rychlosti som si to este trosku upravil. Len nikdy som nepracoval s takymito displaymi (graficke), budem musiet nejako vymysliet, ako zakodovat znaky, urobit funkcie na vykreslovanie utvarov, vyplnanie plochy, kodovanie farieb…

EDIT.: Ak sa venujes farebnym grafickym displayom, nevies pomoct s nejakou rychlou spravou pamete, kde by som mal aktualny “pohlad” na display? Chcem tam mat ovladacie prvky, nejaku grafiku a podobne…vypocty budu trvat celu vecnost a nemozem display updatovat niekolko sekund :smiley: Len vygenerovanie blbeho tlacidla na nejakej pozicii mi zaberie vecnost a vykreslit to na display…??? :open_mouth:

Takze som sa s tymto displayom vyhral a dal mu PIC24HJ128GP, ktory podporuje ovela vecsie frekvencie. Pri najvyssej frekvencii je mozne dosiahnut rychlost SPI 20MHz (CPU clock max 80 / 2 / 2 = 20 MHz). Pise sa, ze tento display podporuje maximalne 16MHz, ale aj na tejto vyssej frekvencii dokaze bezproblemovo fungovat. Rychlost vykreslenia celej plochy trva iba nejakych 30ms, teda je mozne dosiahnut 33 fps, co je podla mna dost vela. Pre tento procesor mam napisanu kniznicu, ktora sa nachadza nizsie. Ak by sa s tym chcel niekto pohrat.
display.h (1.62 KB)
display.c (18.7 KB)