Skocz do zawartości
deshipu

Szybka Grafika na Wyświetlaczach RGB

Pomocna odpowiedź

Znasz jakiś dobry przykład implementacji Sprite'a? Chodzi mi o kod źródłowy oczywiście 🙂

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Szukałem, nie ma;-P W stm z użyciem DMA takie duszki mogłyby świetnie działać. Ogólnie biblioteki na arduino są napisane strasznie wolno, gdyż muszą poprawiać "programistę" oraz być bardzo uniwersalne. Np takie Adafruit GFX wyciąga abs() z uint_16t - co niby ma dac ta funkcja na takiej zmiennej?  Spodziewają się ujemnej wartości w uint? Dodatkowo nie używają funkcji wyświetlacza tylko liczą wszystko wewnętrznie, zmieniając co chwile pozycję kursora itd. 

Jest dużo modułów z 8 bitowa, oraz nawet 16 bitowa szyna. 4" ips wyświetlacze na ali np.

Edytowano przez Ogyb

Udostępnij ten post


Link to post
Share on other sites
Dnia 29.01.2019 o 21:40, msalamon napisał:

Znasz jakiś dobry przykład implementacji Sprite'a? Chodzi mi o kod źródłowy oczywiście 🙂

Może to będzie odpowiednie:

 

 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
Dnia 29.01.2019 o 12:42, deshipu napisał:

Okazuje się, że częściowo winę ponosi dosyć wolne taktowanie SPI w Arduino

Częściowe? Realna przepływność SPI przy taktowaniu 8MHz to ok 4MHz. W uC z wykorzystaniem DMA, nie ma problemu aby "wycisnąć" max możliwości SPI sterownika wyświetlacza, przeważnie 15MHz czyli prawie 4 razy szybciej niż na AVR.

 

Dnia 29.01.2019 o 12:42, deshipu napisał:

Pierwszym podejściem jest użycie bufora — wielkości całego ekranu, lub, jeśli brakuje nam na to pamięci — części ekranu. ...)

Niestety podejście to ma dwie duże wady: po pierwsze, wymaga gigantycznych, jak na możliwości mikrokontrolerów, ilości pamięci RAM

Mikrokontrolery z kilkuset kB RAM nie są rzadkością a i 1M jest osiągalny.

 

Dnia 29.01.2019 o 12:42, deshipu napisał:

Mamy dwie możliwości operacji graficznych: zmiana zawartości kafelka, lub zmiana zawartości lub położenia duszka. W pierwszym przypadku, brudnym blokiem jest obszar zajmowany przez kafelek, w drugim — obszar zajmowany poprzednio przez duszka, połączony z obszarem zajmowanym przez jego nową pozycję.

W każdym z tych przypadków, tworzymy w pamięci bufor wielkości naszego brudnego prostokąta i wypełniamy go odpowiednią grafiką. Mamy tutaj dwie możliwości, które mogą działać lepiej lub gorzej w zależności od specyfiki systemu.

Po co kombinować gdy można użyć sterownika FT8xx? Dla wyświetlaczy ze sterownikiem też jest rozwiązanie https://forum.elportal.pl/viewtopic.php?f=62&t=14998 gdzie bez problemu można obsłużyć duszki.

2 godziny temu, Zealota napisał:

Może to będzie odpowiednie:

W porównaniu do Adafruit rewelacja ale widać, że AVR ledwo dyszy (mała płynność animacji) i 100% mocy przeznacza na grafikę. Co z resztą zadań gdy 100% zużywa grafika?

Do tego co można osiągnąć na FT8xx daleka droga i nie oszukujmy się, AVR nie ma szansy aby zbliżyć się do rozwiązań z DMA i dużym buforem RAM. To jest nawet osiągalne dla Xmega ale cenowo wyjdzie pewnie 2 razy drożej niż ARM (w Xmega najczęściej wymagany zewnętrzny RAM).

Udostępnij ten post


Link to post
Share on other sites

Od ft8xx dużo taniej i sprawniej wyjdzie np jakiś stm32h7 czy coś podobnego (do kupienia za 30zł 1M RAM + akceleracja 2D i 400 MHz rdzenia + fpu). Xmega ma jakąś przewagę nad ARM? Cokolwiek? Ani to podobne w programowaniu do Atmega ani tanie... Przy wykorzystaniu paru % rdzenia można animować Chrom-ART daje nam mieszanie obrazów itd. DMA2D wysyła bufor, sprzętowe dekodowanie JPEG. 

Udostępnij ten post


Link to post
Share on other sites
5 minut temu, Ogyb napisał:

Od ft8xx dużo taniej i sprawniej wyjdzie np jakiś stm32h7 czy coś podobnego

Naturalnie ale w wątku jest mowa o Arduino co najczęściej jest rozumiane jak AVR. Nawet jak nie AVR to Arduino libs. Znasz biblioteki dla Arduino, które obsłużą DMA2D czy choćby DMA do transferu danych do sterownika wyświetlacza z wykorzystaniem FCM albo wbudowany sterownik wyświetlacza np w F429? Ja nie znam i nigdy o czymś takim nie słyszałem natomiast dla FT8xx EVE wygeneruje kod dla Arduino.

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...