[ korak @ 30.04.2021. 14:40 ] @
Verovatno je bilo diskusije oko OLED-a, ali nisam pratio, i evo sada se prvi put srćem sa nekim, kao na slici.

[att_img]

drajver je SH1106. Napisao sam sve potrebne funkcije za I2C i proučio pomenuti drajver. Kako vidim potrebno je uključivanje i isključivanje napona displeja, ali se pitam da li je to pitrebno sobzirom da na modulu sa OLED-om postoji stabilizator 3.3V i masa otpornika i kondezatora što verovatno služi za naponsku pumpu.

Ako se neko bavio sličnim modulom bio bih zahvalan da mi svojim savetom razjasni ovu nedoumicu i da mi skrati posao, mada ne žurim mnogo.

Poydrav svima.
[ veselinovic @ 30.04.2021. 15:05 ] @
Privedes mu 5V i uzivas u bojama na displeju.
[ korak @ 30.04.2021. 15:12 ] @
Nažalost crno beli je, samo 128x64.

Dakle, preskačem sekvencu uključivanja i isključivanja napona displeja i teram samo komande i podatke?
[ bogdan.kecman @ 30.04.2021. 15:16 ] @
nisam koristio "bas ovaj sa slike" ali koristim oled-e vec 15tak godina, do duse uglavnom SPI i paralel, i2c sam koristio samo neke malecne 96x16 ..

- moras da vidis tacno datasheet za modul, i2c/spi moduli "obicno" imaju Vcc, sdo/sdi/sck ili sca/scl i gnd i u tom slucaju u 80% na Vcc zahtevaju 3V ali u 20% zahtevaju 5V ili 13V .. istrejsuj modul ako Vdd ide preko 3V regulatora onda obicno mora 5V da bi 3V doslo na oled, ako vdd ide direkt na pin1 onda ne smes tu preko 3.3 .. fora je sto je napajanje prilicno siroko, pin2 koji je napajanje za chargepump prima do 4.5V valjda a pin1 koji napaja cip do 3.3 ali radi od 1.2 ili tako nesto pa kada dovedes 3.3 V na vdd a on ga vodi preko 3v3 regulatora iako sad imas drop na regulatoru sve "kao" i dalje radi.. ali oce zeza
- ako ga napajas sa 3V obrati paznju na charge pump, sam cip na flat kablu pravi tih 9-14V, e nekad je tu napon los i ako je tako najcesce menjanje kondova pomaze ali vrlo cesto mora dovedes svojih externih 13V da bi oled radio kako treba inace brljavi (kinezi jb..)

ovo na slici mi deluje da je pravljeno da moze da radi i na 5V i na 3.3V kolu .. ali izgubi 20min istrejsuj semu modula, ako ces ih koristiti , trebace ti ta sema svejedno :)


i obrati paznju, ghostuju ludilo, posle par nedelja 24/7 rada vec krenu da gore pikseli da se pojavljuju duhovi, znaci obavezno neki screensaver
[ bogdan.kecman @ 30.04.2021. 15:37 ] @
ne preskaces sw sekvencu, ne znam za 1106 ali ovaj 1306 sto ja uglavnom
trosim ti mozes taj chargepump da palis/gasis tako da ako ne upalis u
sw-u chargepump nes imat sliku :) .. ne verujem da je na 1106 drugacije :D

0xAE posaljes da ugasis display

0x8D, 0x14 da upalis charge pump

0xD9, 0x22 da setujes prechage


...

neki "init string" koji uglavnom radi na 1306 (a mislimd a je 1106
kompatibilan)

0x00 0xAE 0xD5 0x80 0xA8 63, 0xD3 0x00 0x40 0x8D 0x14 0x20 0x00 0xA1
0xC8 0xDA 0x12 0x81 0x80 0xD9 0x22 0xDB 0x20 0xA4 0xA6 0x2E

samo pre ovoga treba posaljes adresu display-a sa write flegom ako je
i2c u pitanju

imas za i2c odlican lib za arduino, ja sam ga koristio da napravim za
stm32 sebi ..

https://github.com/durydevelop/arduino-lib-oled
[ korak @ 30.04.2021. 15:50 ] @
Hvala na detaljnom savetu, uvek na tvom nivou.

Napajanje modula je sa 5V, adresa 0x78 i u uputstvu za SH1106 su date sekvence za uključivanje i isključivanje napajanja displeja, doduše u simboličnom obliku.

Pogledaću biblioteku sa linka.

Pozdrav.
[ goran_68 @ 30.04.2021. 18:31 ] @
Baci pogled i na ovo obavezno:

https://github.com/olikraus/u8g2
[ korak @ 30.04.2021. 18:34 ] @
Zaboravih, ne koristim arduino, od kada sam nabavio jedan sa ARM korteks M4 sa izvedenih 20-tak pinova, pa tako dobih igračku od MCU-a, uprkos tome što ima 1MB flash-a i 256kB RASM-a, 6 SCI-a, 3 SPI-a, USB, eternet, ADC, DA konvertor i svšta još.

Moram pogoniti OLED C iskazima, onako sirovo.
[ bogdan.kecman @ 30.04.2021. 18:48 ] @
ono sto je zgodno kod arduina, zbog popularnosti, ima puno biblioteka za
razne korisne periferije i te biblioteke su open source tako da ih je
lako prepevati na bilo koji drugi kontroler :) ... u8g2 je extra lib,
malo "povelika" ali odlicna, ja ti namerno poslah onu malenu jer je
ultra lako da je prepevas u ono sto ti treba pa nadgradis na to sta god..

rekao si da si presao u nekom trenunutku na m4, ne znam koji cpu tacno
nije ni bitno ... imas stm32f311 za ispod 5$ sa free postarinom

https://www.aliexpress.com/item/1005001701355958.html

ovde ima bolji izbor (ali je shipping prevelik, treba pogledati dalje)
ali ovde vidis i 401 i 411 verzije .. 401 je isto odlican a jeftiniji

https://www.aliexpress.com/item/4001025262808.html?

takodje pogledaj i jedan i drugi imaju sa mikrousb i sa usb3.1 (usbc)
stekerom

mozda ti bude iskusno ... u kombinaciji sa stm32cubeIDE razvoj je pesma :)
[ goran_68 @ 01.05.2021. 10:02 ] @
Cenim da je korak ostao na proverenoj kombinaciji:

Motorola -> Freescale -> NXP :)
[ korak @ 01.05.2021. 12:46 ] @
U pravu si. I ARM MCU je iz iste "manifakture".

Sve je u svetu MCU-a približno isto. Pa se zato držim onoga što u "dušu" poznajem. Mnogo koristim interrupt-e a ponekad i neke "trikove" kada prko spoljnih pinova povežem interne module da rade atipično. To je vrlo zanimljivo i interesantno za rad.

Nisam u fazonu da moram da radim za "koru hleba", sada imam druge prihode, i samo po nešto interesantno uradim kao dopunu prihoda.

Zato me arduino sputava, ali oni koji žive od toga on znatno olakšava život. Nema dva dobra u jednom.

Pozdrav.
[ mikikg @ 01.05.2021. 13:34 ] @
Citat:
korak:
Zaboravih, ne koristim arduino, od kada sam nabavio jedan sa ARM korteks M4 sa izvedenih 20-tak pinova, pa tako dobih igračku od MCU-a, uprkos tome što ima 1MB flash-a i 256kB RASM-a, 6 SCI-a, 3 SPI-a, USB, eternet, ADC, DA konvertor i svšta još.

Moram pogoniti OLED C iskazima, onako sirovo.


Na drugom forumu upravo sad nesto pravimo sa STM32F103 (BluePill) + OLED + Encoder.

https://github.com/mikikg/ryattn

U folderu Src/ imas 4 fajla vezana za OLED displey, ssd1306*.*
Te skripte su pisana na CMSIS nivou, ne koristi druge (CubeMX) biblioteke, to ti je "low-level" i sto bi ti rekao "sirovo" ...

Inace se projekat prevodi preko Cmake/make, dakle radi prevodjenje iz konzolne linije, ne treba specifican IDE (treba samo Cmake i arm-none-eabi-gcc), mada naravno pozeljan je, ja to editujem u CLion IDE + OpenOCD za programiranje i debug-ing.
[ korak @ 01.05.2021. 14:57 ] @
Super, sviđa mi se kada se tako radi.
[ bogdan.kecman @ 01.05.2021. 16:17 ] @
Citat:
korak:
Sve je u svetu MCU-a približno isto.


na zalost, i nije. NXP ima toliko puno gresaka da je strasno, a ERRATA za neke NXP armove se pojavi tek 5-6 godina posto je cip izasao tako da ja od svih ARM proizvodjaca jedino NXP izbegavam... iako sam radio na ogromnom projektu sa LPC1769 i znam ga u dusu NXP ne preporucujem nikome...

Ralno sto se samog silikona tice SAM je ubedljivo, po meni, najbolji... ali problem sa SAM-om je uvek bio kao i sa svime od atmela to sto ne mozes da planiras nista jer ako se cip primi super, ali ako se taj koji si odabrao "ne primi" ovi ga vise nikad nece praviti, bez ikakve najave :( ... A ako pogledamo podrsku i okruzenje, STM je nepre..biv. I SW i HW je podrzan vrhunski, forumi, alati, community, datasheet, jaaaaaaako malo gresaka.. ne znam kako se SAM sada ponasa kada ih je mikrocip kupio, ako su se uozbiljili sa proizvodnjom i availability-em moguce da mogu da iskoce da top

Citat:
korak:
Pa se zato držim onoga što u "dušu" poznajem.


SVAKI mcu naucis u dusu posle par projekata, ono sto je kod arm-a dobro je da mozes da naucis arm jezgro u dusu i proizvodjaca u dusu i kada uklopis ta dva imas ogromnu lepezu razlicitih alata... oces hw enkoder, oces lcd drajver, oces pwm da vozis 3 faze..

Citat:
korak:
Mnogo koristim interrupt-e a ponekad i neke "trikove" kada prko spoljnih pinova povežem interne module da rade atipično. To je vrlo zanimljivo i interesantno za rad.


ne treba to da radis... za razliku od 8bitnih mcu-a koji su isti silikon pravili po 30 godina svaka tura modernih 32bitnih armova je drugacija ... "trikovi" koji rade na pinu "danas" mozda nece raditi na istom tom pinu na sledecoj turi kontrolera... svaki "reserved" i "unsupported" trik koji izvedes sutra mozda (vrlo verovatno) nece raditi zato sto silikon istog cipa u svakoj turi napreduje i drugaciji je..

Citat:
korak:
Zato me arduino sputava


arduino je napravljen da doktori, prodavci, moleri, stolari i slicno mogu da na brzinu dodaju neku "pamet" u svoj projekat bez da moraju da cimaju skupe i prezauzete elektronicare da im to isporuce za 6 meseci .. sad sto se pojavili u trecem svetu stolari koji zive od toga, neka su.. nemam nista protiv, ali ti kao elektronicar i programer nemas sta da trazis sa arduinom... mozes da pokupis po neki sors neke biblioteke da ne bi morao da citas detaljno datasheet za svaki uredjaj (jbg lakse iskopiras i adaptiras arduino lib nego da citas 200 strana datasheet-a ako je nesto ne preterano bitno tipa lcd, ako radi, radi, sto da dupliras posao koji je neko vec uradio)...

[ korak @ 01.05.2021. 19:42 ] @
Uglavnom se slažem sa tobom, a ono na šta imam primedbe neću spominjati jer tome nije mesto ovde. To je više stvar ukusa, a o njima se ne diskutuje.

Pozdrav.
[ mikikg @ 10.05.2021. 11:21 ] @
@bogdan.kecman

Jedno pitanje, imam 1.8'' OLED sa SH1107 koji je deklarisan kao 64x128.
Pisao sam program za SSD1306 koji deklarisan kao 128x64.

Kada prikljucim SSH1107 i pokrenem sa bibliotekom za SSD1306, kompletna grafika mi je rotirano za 90*!

Da li moze to na nivou inicializacije dispeja da se resi ili mora da prekucam ceo program i da zamenim fontove?? :(
[ ZAS011 @ 10.05.2021. 16:00 ] @
Pogledaj u8g2 biblioteku, naćićeš, nadam se, šta ti treba.


[Ovu poruku je menjao ZAS011 dana 11.05.2021. u 08:27 GMT+1]
[ bogdan.kecman @ 10.05.2021. 16:39 ] @
@zas011 u8g2 je opensource i redovcno se "unapredjuje" nema potrebe da je vuce sa ruskog sajta :D vec smo je spominjali
https://github.com/olikraus/u8g2

@miki nemam pojma ja sam nekako uvek radio sa 13xx nikako sa 11xx a i to nisam sad vecneko duze vreme (ovi embeded sistemi koje trosim u zadnje vreme imaju HDMI izlaz i graficku karticu) ali pogledaj

https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf strane 34-36

ovde ( https://digistump.com/board/index.php?topic=1669.0 ) imas pricu o tom problemu kako da mu pridjes pri inicijalizaciji

ako koristis neku od biblioteka, npr popularna adafruit ima roratedisplay():
https://learn.adafruit.com/ada...s-library/rotating-the-display
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306

ali koliko vidim on za svaku f() proverava getRotation pa crta tamo ili vamo, ne radi drugaciju inicijaliaciju.... ne znam da li u8g2 ima isto rotaciju ali kapiram da je implementira na isti nacin tako da vidi ono na digistupmp-u sto pisu oko inicijalizacije i probam sam na one 3 strane ti je taj deo ali ovako na prvi pogled mozes da flipnes i da rotiras 180 stepeni i i jedno i drugo ali ne vidim da mozes 90 stepeni da rotiras mada nisam gledao detaljno
[ mikikg @ 10.05.2021. 17:21 ] @
Citat:
bogdan.kecman: ovako na prvi pogled mozes da flipnes i da rotiras 180 stepeni i i jedno i drugo ali ne vidim da mozes 90 stepeni da rotiras mada nisam gledao detaljno


To mi i jeste problem, moze da se flipuje ili mirror ali ne moze da se rotira za 90 stepeni, probao vec, ima tamo nekih 4-5 registra u vezi toga ali ni jedna kombinacija mi ne daje zeljeni rezultat ... Izgleda da MORA da se crta sa 90 stepeni rotiranim/pomerenim koodinatama ...
[ bogdan.kecman @ 10.05.2021. 17:35 ] @
biblioteke koliko vidim podrzavaju rotaciju i crtaju zarotirano, ne rade razlicitu inicijalizaciju tako da verovatno ne moze za 90 stepeni da se rotira
[ korak @ 27.05.2021. 15:50 ] @
Nisam se do sada javljao, radio sam nešto u solid vorksu, pa zadnjih dana poslužih se jednom od jednostavnijih biblioteka koje ste mi preporučili - hvala za to.

Šaljem celu sliku iz bafera na 400kHz po kodu koji sam generisao procesor-ekspertom i to radi korektno bez potrebe za vremenskim zadrškama, što ne znači da ih nema. Najviše sam potrošio vremena da protokol usaglasim sa generisanim kodom.

Sve je u redu ali...

OLED radi u modu 132x64 i to nije problem. Problem je što u koloni 129 ima dve tačke koje ne mogu da se upale, a u koloni 130 ima 24 tačaka koje ne mogu da se ugase. Dakle, kao OLED 128x64 on je ispravan, pod uslovom da maskom sakrijem kolone do 132.

Mislim da ovome nema leka OLED je neispravan. Šta vi mislite?

Možda nisam u pravu?
[ bogdan.kecman @ 28.05.2021. 01:09 ] @
tesko da mozemo da znamo ovako napamet, valjda imas jos jedan oled, zamenis, pa ako isti pixeli ne rade i na drugom def je do tvog koda :D ... a desi se da neki pixeli umru
[ korak @ 28.05.2021. 01:35 ] @
Imam još jedan, pa ću ga probati. On je na drugoj istoj pločici kod koje nešto ne valja sa konektorom za napajanje. Nisu mi tu klješta za kvečovanje pa će proba kasniti.

Videćemo.
[ korak @ 28.05.2021. 20:39 ] @
Sada je sve u redu. Šaljem svih 1056 bajta (132x64). Bila je moja trivijalna greška.

Merio sam vreme slanja 1056 bajtova u OLED, i ono iznosi 38.6ms na I2C brzini od 378kHz što je oko 26 slika u sekundi. Gledajući kod ne vidim mogućnost za neko osetnije ubrzanje. Ali to znači da bi polovinu ekrana osvežavao 52 puta u sekundi, što bi omogućilo glatku animaciju.

Čini mi se da je ovo dobro, šta kaže vaše iskustvo?

Zahvaljujem svima na pomoći.


[ goran_68 @ 28.05.2021. 22:07 ] @
Možeš da ideš i na SPI OLED ako ti treba više FPS.
[ korak @ 28.05.2021. 23:43 ] @
Da tako je, od svih mogućíh komunikacija najsporija je I2C (400kHz), ali OLED ja na modulu koji ima izvedena samo 4 pina: napajanje, masa, podaci i klok. Nemam izbora.

Super si me naveo da ubuduće tražim sa SPI jer je ciklus kloka 100ns (brzina 10M bita po sekundi) a ne da se zezam sa ciklusom kod I2C od 2.5us i samo 0.4 M bita po sekundi.

Hvala, pozdrav.
[ bogdan.kecman @ 29.05.2021. 06:03 ] @
taj isti drajver koji je na tom oledu ima i spi i parallel, nego je taj
flat kabl njegov ultra smor za rad, malo ga pregrejes raspadne se pa
ljudi krenuli da prave te breakout plocice za njih koje su prvo bile
spi, pa spi+i2c pa u zadnje vreme samo i2c .. mislim da jos uvek mozes
da nadjes spi i spi+i2c verzije ..

elem, ove sto ja teram, nijedan nema double buffering sto je za finu
animaciju neophodno, i sa double bufferingom 26fps je ultra smooth, ali
bez double bufferinga 26fps je na zalost "krzavo" ako radis neku
animaciju, ali je skroz dovoljno za prikazivanje raznih statusa i
informacija... ako ces da guras animaciju mora uzmes spi ili paralelnu
verziju
[ korak @ 29.05.2021. 13:59 ] @
Da jasno mi je. Malo sam razočaran da je teško naći OLED modul sa SPI komunikacijom.

Pozdrav.
[ bogdan.kecman @ 29.05.2021. 14:11 ] @
ako ga skines sa tog breakout board-a na tom flatu imas i SPI i PARALLEL :)

cak sta vise, ne znam koji breakout imas, na primer gledam ovaj na KP:



ako ja dobro vidim, ti mozes jako lako ovde da pristupis direkt svim pinovima samog cipa ... uporedi to sa SPI verzijom i izvuci SPI direktno na tom oledu koji vec imas i mozes odma da testiras dok sacekas da ti stignu oled breakboard uredjaji iz kine ..

spi verzija:




kako mislis tesko naci ?! ima ih ko g...

gledaj breakboard sa 7 pina:

https://www.aliexpress.com/item/32818944937.html
https://www.aliexpress.com/item/32595065663.html
https://www.aliexpress.com/item/1005001694286868.html
https://www.aliexpress.com/item/32954492866.html
https://www.aliexpress.com/item/32844104782.html
https://www.aliexpress.com/item/4001145494936.html
...

[ bogdan.kecman @ 29.05.2021. 14:16 ] @
default svi guraju sada ove IIC posto su jednostavniji i dovoljna je brzina za vecinu stvari, ionako tu ispises neki broj i slicno .. ali SPI nisu nestali, i dalje su tu, jedino nisam vidjao nigde vec neko vreme one SPI+I2C

a ako mislis na KP, ovo su ti uglavnom sve stare zalihe, istrosilo se jbg tokom korone i dok je bio ova moratorijum na slanje ... kao sto vidis sad vec ima i sa free shippingom (mislim da su svi linkovi koje sam ti stavio sa free shippingom za srbistan)
[ goran_68 @ 29.05.2021. 20:41 ] @
Treba da ja imam negde 0.96 spi+i2c. Komunikaciju biras tako sto se prebaci jedan ili dva otpornika. Oznaceno je sve to na poledjini plocice pa se lako odradi.
Jos da dodam da mozes da menjas i oled refresh rate preko registara mada ne znam da li bi tu nesto dobio.
[ korak @ 05.06.2021. 23:27 ] @
Uz vašu pomoć, napisao sam funkcije koje mi trebaju, još jednom hvala.

Ako nekog interesuje, par informacija, ovaj OLED ima 132x64 tačke, ali "propušta" prve dve i zadnje dve kolone, tako da radi sa 128x64. Prilikom upisa u OLED-ov RAM moraju se upisati sve kolone. Koo. početak je gore levo, što se i očekivalo, ali sam ga ja spustio dole levo. Duplo veći font (12x16) je isti kao i normalan, samo što je svaka tačka predstavljena sa 4 tačke, jeste lakši za čitanje ali je jednako ružan, i staje samo 12 celih karaktera u jednom redu. Pokušaću da ga zamenim fontom 7x13.

Još jednom hvala na pomoći.
[ korak @ 06.06.2021. 15:18 ] @
Zaboravih, u donjoj funkciji postoji greška zbog koje se ne ispisuje posledji red karaktera duple veličine

Code:

void OLED::draw_bytes(uint_fast8_t x, uint_fast8_t y, const uint8_t* data, uint_fast8_t size, tSize scaling, tColor color, bool useProgmem)
{
    for (uint_fast8_t column = 0; column < size; column++)
    {
        uint8_t b;
        if (useProgmem)
        {
            b = pgm_read_byte(data);
        }
        else
        {
            b = *data;
        }
        data++;
        if (scaling == DOUBLE_SIZE)
        {
            // Stretch vertically
            uint16_t w = 0;
            for (uint_fast8_t bit = 0; bit < 7; bit++)
            {
                if (b & (1 << bit))
                {
                    uint_fast8_t pos = bit << 1;
                    w |= ((1 << pos) | (1 << (pos + 1)));
                }
            }

            // Output 2 times to strech hozizontally            
            draw_byte(x, y, w & 0xFF, color);
            draw_byte(x, y + 8, (w >> 8), color);
            x++;
            draw_byte(x, y, w & 0xFF, color);
            draw_byte(x, y + 8, (w >> 8), color);
            x++;
        }
        else // NORMAL_SIZE
        {
            draw_byte(x++, y, b, color);
        }
    }
}


Umesto

Code:

for (uint_fast8_t bit = 0; bit < 7; bit++)


treba
Code:

for (uint_fast8_t bit = 0; bit < 8; bit++)

[ korak @ 21.06.2021. 18:44 ] @
Uradih sve što sam hteo, a kursor ostavio za kraj. Ali avaj!

Želim kursor koji blinka, znači da ga direktno unosim u OLED, a ne preko bafera slike. Međudim nikako da proradi ispravno. Teška srca bih se zadovoljio sa kursorom koji ne blinka.

Da li je neko rešio ovaj problem, evo muči me od poslednjeg javljanja. Ako neko može pomoći, a treba mu kod, objaviću ga.

Pozdrav.
[ bogdan.kecman @ 21.06.2021. 18:54 ] @
ja koliko znam ti drajveri nemaju kursor, znaci mora crtas i brises
kursor sam, rucno, idealno ga rokas sa xor-om pa ne mora cuvas sta je
bilo ispod kursora
[ korak @ 21.06.2021. 19:13 ] @
Da nemaju kursor.

Po ugledu na funkciju koja ispisuje karakter, napisao sam funkciju za kursor, samo što umesto karaktera xor-ujem sa 0xff tu poziciju u baferu slike. Doduše još nisam taj xor upisao u bafer slike, što na kraju treba da bude, jer se javili problemi, meni neobjašnjivi.

Kao poziciju kursora zadajem blok i broj kolone, međutim dobijem ispis "kursora" duž celog bloka, od prve do zadnje kolone.

Vrlo čudno, ili pravim neki glupi previd, ili nešto ne znam, a ne tvrdim da znam.

Pozdrav.
[ bogdan.kecman @ 21.06.2021. 19:32 ] @
bem li ga, ja sam samo jednom tako nesto radio sa kursorom i tu sam imao
bafer na mcu u koji sam crtao a taj bafer sam tuko na lcd sa 12fps ...
ali ne verujem da ti to resenje za ista radi posao... da me ubijes sto
sam to radio, nije bio oled uopste nego neki tft ali ista prica
[ korak @ 21.06.2021. 20:21 ] @
Nadam se da se neko ovim bavio, i da je voljan da pomogne.

Inače imam blinkanje iz bafera, ali onda prenosim celu slku, a to je 38ms, umesto u jednom bloku da prenesem 6 bajtova.
[ mikikg @ 26.06.2021. 09:43 ] @
@korak

Evo prakticno SPI OLED displej za neke tamo Audio potrebe (nebitno), taj displej se osvezava u tom primeru negde oko 85 do 120FPS, zavisi sta iscrtavam na ekranu, tehnicki moze da ide do nekih 300FPS ali pod uslovom da osvezavas vrlo mali broj piksela recimo samo da napises "FPS=%d" na praznom ekranu sa najmanjim fontom :)

"sprintf" jeeeeedeeee resurse, tu se gubi najvise vremena, sve sam analizirao, moze da se zameni sa nekim malo brzim funkcijama ali generalno dodjes u situaciju ili da cukas nesto custom po kodu da bi ubrzao FPS koji i ne mozes da vidis ili da uzmes standardnu sprintf() funkciju i da nakucas lepo sta ti treba ...

Blinkanje kurzora se radi u screen-buffer-u, gde bi drugo to radio, ekran se osvezava sa 60+ FPS u svakom slucaju a blink je recimo na 0.3sec, to mora na SW nivou da se resava kao i sve ostalo sto se tice displeja ...



[ korak @ 27.06.2021. 16:37 ] @
Nažalost moj modul sa OLED-om vezan je sa I2C na 400kHz, i celu sliku 128x64 prebacim za 38ms, strašno dugo vreme. Ne isplati se da zbog blinkanja kursora prebacujem celu sliku.

Pre par dana sam rešio ovaj problem, tako što blinkanje pravim u baferu slike, a u OLED šaljem samo to parče slike u trenucima kada je promena kursora. Funkcionalno je testirano, troši oko par ms, sada treba da poradim malo na optimizaciji i sinhronizaciji odnosno da prekid blinkanja bude kada je kursor ugašen, što ne smatram nekim velikim problemom. Ima tu i još nekih poslova, upis novog znaka treba da bude kada je kursor ugašen i slično tome.

Inače imam dva bafera slike sa namerom da lakše prikazujem složene podatke. Možda mi namera i nije racionalna, ali videću.