Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 23 cze 2026, o 14:24


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
Autor Wiadomość
PostNapisane: 1 maja 2013, o 19:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 cze 2012
Posty: 171
Pomógł: 5

Witam,
ostatnio tworzę sobie biblioteki do wyświetlacza tft, do późniejszego wykorzystania w projektach. Aktualnie pracuję nad funkcją wyświetlającą pliki .bmp bezpośrednio z karty sd. Po przeanalizowaniu budowy pliku bmp powstał pewien kod, który wstępnie działa :). Poniżej pętla główna:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Lecz jest jeszcze jeden problem, dane obrazu (jak przystało na microsoft :) ) są zapisane wierszami od najniższego do najwyższego w kolejności od lewej do prawej, zatem lewy dolny róg rysunku jest zapisany na początku obszaru danych, a prawy górny - na końcu.

Powyższa funkcja na razie bezpośrednio jak lecą, odczytuje piksele i wyświetla.
W związku z tym mam pytanie czy ktoś ma pomysł jak odwrócić obraz ??.
Mam kilka pomysłów lecz wydają mi się mało eleganckie. Na razie nie wymienię ich aby nie sugerować czegoś :D.

Pozdrawiam
R.L.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2013, o 19:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

Odwrócić? Zdefiniuj. W pionie, poziomie, na ukos?

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2013, o 20:28 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27460
Lokalizacja: Szczecin
Pomógł: 1045

Czytać plik od końca ? ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2013, o 21:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 cze 2012
Posty: 171
Pomógł: 5

Witam,
no właśnie najprościej było by czytać od końca z karty :) ,ale musiałbym najpierw obliczyć koniec danych obrazu i tam przesunąć wskaźnik ( to nie problem). Następnie co pętlę cofać wskaźnik i dokonywać odczytu. Tu w pętli dochodzą dodatkowe operacje które to zwolnią jej wykonywanie :(. Kombinuję jeszcze z buforami ale to znowu RAM.

Pozdrawiam
R.L.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2013, o 21:14 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27460
Lokalizacja: Szczecin
Pomógł: 1045

No niestety - tylko Microsroft potrafił wymyśleć najlepsze formaty zapisu ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2013, o 21:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 cze 2012
Posty: 171
Pomógł: 5

Witam,
no właśnie :) kurcze nie ma to jak człowiekowi uprzykrzyć życie :). Będę musiał przeprowadzić testy co będzie szybsze, bo mam jeszcze jeden pomysł :). Dzięki za chęć pomocy :D.

Pozdrawiam
R.L.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2013, o 21:30 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27460
Lokalizacja: Szczecin
Pomógł: 1045

aha ale sprawdź czy SSD1963 nie ma przypadkiem możliwości wpisywania pixeli od spodu - bo chyba ma ;) wtedy można byłoby czytać plik od początku ;) ...

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2013, o 23:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 cze 2012
Posty: 171
Pomógł: 5

Kurcze Mirek jesteś genialny :) jasne, że ma bity TB, RL i SM. Jutro na spokojnie popróbuję jak to zadziała :).
Dzięki i pozdrawiam
R.L.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2013, o 19:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 cze 2012
Posty: 171
Pomógł: 5

Witam,
dzisiaj miałem chwilkę i uruchomiłem ładowanie plików bmp bezpośrednio z karty sd.
W związku z tym nagrałem dwa filmiki pokazujące odczyt bezpośrednio z sd oraz z wewnętrznego flasha mikrokontrolera.
Platforma testowa:
STM32f103VC@72MHz
LCD tft 3,2 SSD - podłączony 16b
karta sd class 4

odczyt obrazu z flash:
https://www.dropbox.com/s/ikqv9hv9wi0u6g2/flash.MOV
odczyt obrazu z karty sd
https://www.dropbox.com/s/h84f6csllicb07q/karta_sd.MOV

Pozdrawiam
R.L.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2013, o 20:15 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27460
Lokalizacja: Szczecin
Pomógł: 1045

z ciekawości zapytam, z jaką prędkością SCK kontaktujesz się z kartą ? bo jakoś tak wydaje mi się może za wolno te obrazki się ładują ? ale ja TYLKO gdybam ... bo wiesz, że jeśli chodzi o STM/ARM nie mam doświadczenia - miałem jednak nadzieję że będzie dużo szybciej ...

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2013, o 21:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 cze 2012
Posty: 171
Pomógł: 5

Witam Mirku,
więc tak kartę mam podłączoną do interfejsu SDI i taktowaną 24MHz.
Też spodziewałem się, że będzie szybciej :(. Podejrzewam, że problem leży w odczycie z karty :(, ponieważ teraz w pętli odczytuje trzy bajty (czyli RGB), konwertuję to na 565 i wrzucam do ramu tft. Za każdym razem wywoływana jest funkcja f_read.
Robiłem testy na zewnętrznym flashu i tak naprawdę prędkość była zbliżona. Może już się nie da szybciej :D.
Mam jeszcze jeden pomysł aby uruchomić odczyt z karty jako DMA i w pętli już ładować do tft z bufora. Mam nadzieje, że to coś przyspieszy.
Dam znać jakie są efekty. Ja też dopiero raczkuję w ARM :).

Pozdrawiam
R.L.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2013, o 13:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 cze 2012
Posty: 171
Pomógł: 5

Witam,
na razie tyle mi się udało uzyskać, wykorzystując dma i 512 buffor.
https://www.dropbox.com/s/3u3x85n461zwciw/karta_dma.MOV

Nie wiem czy da się coś wycisnąć więcej ale na razie dla mnie wystarczy.
Wydaje mi się, że to już max, no chyba, że Sun by się za to wziął :D.

Pozdrawiam
R.L.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2013, o 19:20 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27460
Lokalizacja: Szczecin
Pomógł: 1045

Lemosek napisał(a):
Witam,
na razie tyle mi się udało uzyskać, wykorzystując dma i 512 buffor.
https://www.dropbox.com/s/3u3x85n461zwciw/karta_dma.MOV

Nie wiem czy da się coś wycisnąć więcej ale na razie dla mnie wystarczy.
Wydaje mi się, że to już max, no chyba, że Sun by się za to wziął :D.

Pozdrawiam
R.L.


eeeeh przez ciebie aż mnie korci i łapki świerzbią żeby pobawić się tym na STM'ie ;) ..... kurczę tylko ten czas mnie wykańcza .... ale na pewno też się tym zajmę ...

no widać że jest lepiej ale nadal cosik wolno :(

a ile masz RAM'u na pokładzie ? może jakieś buforowanie zrobić ? ... to tak na gorąco coś mi do głowy przychodzi ale nie wiem czy to dobry pomysł ... jednak wciąga mnie przez ciebie ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2013, o 20:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 cze 2012
Posty: 171
Pomógł: 5

Witam,
no muszę przyznać, że mnie też wciągnęło :). Mój egzemplarz ma 48k ramu. W tej chwili aby przyspieszyć odczytuję cały sektor 512 bajtów i dopiero ładuję do wyświetlacza. Z tego co przetestowałem to jest najszybsze rozwiązanie.
W tej chwili poziom zaawansowania mojej wiedzy z ARM nie pozwala na więcej :).
Tak na marginesie, obrazek miał wymiary 172x240 piksela. Każdy piksel 24bit kolor czyli 123840 bajtów. Podczas odczytu najpierw ładuję dane do bufora a następnie w pętli pobieram trzy wartości koloru i konwertuję je na RGB565. Następnie ładuję do ramu wyświetlacza. Trochę tych operacji jest, do tego dochodzi opóźnienie odczytu karty więc uważam, że szybciej już będzie ciężko, no chyba, że ( co jest bardzo prawdopodobne ) się mylę. Może jak się da szybciej to już niewiele.
Po majówce zakupię szybszą kartę sd bo teraz mam jakąś badziewną, może tu jest problem :).

Pozdrawiam
R.L.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2013, o 20:14 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27460
Lokalizacja: Szczecin
Pomógł: 1045

aaaaaaaaa no zaraz - to jakiej klasy masz kartę SD ? co jest na niej napisane CLASS 2/4/6/8/10 ??? bo jeśli w ogóle nie masz podanej klasy z cyfrą to znaczy że masz MEGA STARĄ kartę i rzeczywiście SUPER WOLNĄ .... jak będziesz kupował nową to nie daj się nabrać i nie kupuj wolniejszej niż co najmniej Class8 a najlepiej Class 10

------------------------ [ Dodano po: 1 minucie ]

kolejna podpowiedź - po co konwertujesz do 565 ?? spowalniasz niepotrzebnie :( używaj od razu albo trybu 888 to będziesz mógł na ŻYWCA wrzucać bajty z BMP albo jeszcze lepiej używaj pełnego trybu 24-bitowego ... no i mam nadzieję, że lecisz sprzętową magistralą 16-bit

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2013, o 20:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 cze 2012
Posty: 171
Pomógł: 5

Witam,
no z tą kartą rzeczywiście coś może być nie tak :) bo nie widzę żadnego napisu na niej. Kiedyś okazyjnie udało mi się nabyć kilka sztuk w rozsądnej cenie.

Odnośnie RGB, wydaje mi się, że właśnie teraz jest szybciej bo za jednym razem wysyłam 16bit czyli cały piksel. Konwersja na 565 to raptem tylko przesunięcia bitowe więc myślę, że nie zabiera zbyt dużo zasobów:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Zobaczę co da zmiana karty :D.

Pozdrawiam
R.L.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2013, o 21:58 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27460
Lokalizacja: Szczecin
Pomógł: 1045

no przesunięcia też troszkę zjadają czasu ale ok - poczekaj masz tam przecież jeszcze tryb 24-bitowy - więc to byłoby NAJSZYBSZE - może to spróbuj ? wtedy nie będzie żadnych przesunięć

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2013, o 06:09 
Offline
Użytkownik

Dołączył(a): 02 lut 2013
Posty: 75
Pomógł: 0

Mirkowi raczej chodzilo o 16 bitowa magistrale miedzy cpu, a lcd :)
Co to za wyswietlacz ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 5 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO