| Author |
Message
|
andy1024 Poziom 6

Joined: 28 Mar 2010 Posts: 17 Location: Gdańsk
|
#31
31 Jan 2012 14:10 Re: ATmega + LCD graficzny 132x65 (LT13264 kontroler SPLC501C) |
|
|
|
Mi też już działa. Dzięki wielkie, michalko12.
Wygląda na to, że jedyną istotną różnicą był brak obsługi /RES na początku, chociaż ten sam fragment wpisywałem w alternatywnej wersji źródeł przeriabanych z kodu Radzia... Tak to jest, jak się nie wie, co jest istotne, a co nie.
Jeszcze raz dzięki.
|
|
| Back to top |
|
 |
adammruk Poziom 15

Joined: 10 Jan 2006 Posts: 258 Location: Zielona Góra
|
#32
31 Jan 2012 17:02 Re: ATmega + LCD graficzny 132x65 (LT13264 kontroler SPLC501C) |
|
|
|
A co dokładniej Tobie działa? Potrafisz wyświetlać poszczególne piksele czy też masz śmieci na ekranie po prostu?
|
|
| Back to top |
|
 |
andy1024 Poziom 6

Joined: 28 Mar 2010 Posts: 17 Location: Gdańsk
|
#33
31 Jan 2012 18:32 Re: ATmega + LCD graficzny 132x65 (LT13264 kontroler SPLC501C) |
|
|
|
Poszczególnych pixeli nie próbowałem, ale losowo generowaną bitmapę, wzorki 01010101 i tym podobne poszły.
A u Ciebie? Masz problemy z wyświetlaniem czegoś innego niż śmieci z pamięci, tak jak to opisałeś w poprzednim komentarzu?
|
|
| Back to top |
|
 |
Google

|
#
31 Jan 2012 18:32 |
|
|
|
|
|
| Back to top |
|
 |
adammruk Poziom 15

Joined: 10 Jan 2006 Posts: 258 Location: Zielona Góra
|
#34
31 Jan 2012 23:47 Re: ATmega + LCD graficzny 132x65 (LT13264 kontroler SPLC501C) |
|
|
|
Mi się udaje wyświetlać bitmapy, zrobione w paintcie, o rozdzielczości 132x64 (tyle co wyświetlacz) przekonwertowane tym: http://en.radzio.dxp.pl/bitmap_converter/
Wyniki:
Widać na dole po prawej stronie śmieci(chodzi o te pojedyncze piksele), nie wiem skąd się biorą, tym bardziej że obraz dalej jest wyświetlany poprawnie (tak, tak "namaziałem" w Paintcie) Na trzecim obrazku widać że dolna część jest "przepisywana" na początek pamięci wyświetlacza. Moja funkcja do bitmapy:
void bmp() { long index=0; unsigned char i,j; for(j=0; j<8; j++) { lcd_zapis_komend(0x00); lcd_zapis_komend(0x10); lcd_zapis_komend(0xb0+j); // wybór strony <0,8> for(i=0; i<132; i++) // wyswietla w poziomie { index=i+j*132; lcd_zapis_danych(bitmapa[index]); } } }
Na drugim wyświetlaczu wszystko wygląda dokładnie tak samo, więc to raczej wina programowa. Na początku jak ustawiam lub zeruję wszystkie piksele to jest ok, śmieci nie ma żadnych. Problem jest przy obrazku.
|
|
| Back to top |
|
 |
andy1024 Poziom 6

Joined: 28 Mar 2010 Posts: 17 Location: Gdańsk
|
#35
31 Jan 2012 23:59 Re: ATmega + LCD graficzny 132x65 (LT13264 kontroler SPLC501C) |
|
|
|
Zaraz spróbuję, jak to u mnie wygląda.
EDIT: obrazek pojawia się w połowie ekranu, a na początku są śmieci. Coś jest nie tak z obliczaniem pozycji. Ewentualnie tryby ustawione w procedurze inicjalizacyjnej są niedopasowane do procedury bmp().
|
|
| Back to top |
|
 |
adammruk Poziom 15

Joined: 10 Jan 2006 Posts: 258 Location: Zielona Góra
|
#36
01 Feb 2012 00:37 Re: ATmega + LCD graficzny 132x65 (LT13264 kontroler SPLC501C) |
|
|
|
Też tak miałem na początku. Pamiętam że chyba przestawiłem w konwerterze orientację, i chyba się poprawiło. Możesz sprawdzić?
|
|
| Back to top |
|
 |
andy1024 Poziom 6

Joined: 28 Mar 2010 Posts: 17 Location: Gdańsk
|
#37
01 Feb 2012 00:49 Re: ATmega + LCD graficzny 132x65 (LT13264 kontroler SPLC501C) |
|
|
|
Nie, to nie to. Orientację od razu miałem prawidłową.
Zapomniałem, że mam w mojej procedurze bmp() odczyt z pamięci programu (pgm_read_byte), dlatego na ekranie pojawiał mi się kod wykonywalny;)
Teraz, po poprawce, jest ok. Obrazek wyświetla się prawidłowo.
|
|
| Back to top |
|
 |
adammruk Poziom 15

Joined: 10 Jan 2006 Posts: 258 Location: Zielona Góra
|
#38
01 Feb 2012 15:22 Re: ATmega + LCD graficzny 132x65 (LT13264 kontroler SPLC501C) |
|
|
|
Już wszystko działa:D Otóż obrazek najzwyczajniej w świecie nie mieścił się w pamięci.. Dlatego były śmieci i przerzucanie części obrazka na początek. U Ciebie było ok bo widocznie masz większy procek:) Ja pracuję na Atmega8. Teraz tablicę z obrazkiem deklaruję tak:
prog_char nazwa_tablicy[]= { ... }
a w funkcji wyświetlania mam:
lcd_zapis_danych(pgm_read_byte((&bitmapa[i+j*132]));
Teraz dopiszę funkcję na zapalanie konkretnego piksela, i połączę całość z biblioteką graficzną od Radzia. Wynik zamieszczę niebawem:)
|
|
| Back to top |
|
 |
andy1024 Poziom 6

Joined: 28 Mar 2010 Posts: 17 Location: Gdańsk
|
#39
01 Feb 2012 16:16 Re: ATmega + LCD graficzny 132x65 (LT13264 kontroler SPLC501C) |
|
|
|
Pewnie masz rację - ja używam Atmega328p. Teraz pracuję nad małą animacją, a konkretnie nad zautomatyzowaniem procesu jej generowania. Potem zrobię jakieś RLE, żeby więcej klatek zmieścić w pamięci.
Biblioteka graficzna od Radzia ma już zapalanie pixela - SetPixel zdaje się, ale jej użycie wymaga odczytu pamięci ekranu, czyli dochodzi kwestia synchronizacji (coś, co u Radzia jest zrealizowane przez pętlę while(GLCD_ReadStatus()&0x90)). Chętnie zobaczę wynik Twoich prac.
|
|
| Back to top |
|
 |
adammruk Poziom 15

Joined: 10 Jan 2006 Posts: 258 Location: Zielona Góra
|
#40
01 Feb 2012 16:27 Re: ATmega + LCD graficzny 132x65 (LT13264 kontroler SPLC501C) |
|
|
|
Dzięki prog_char tablicę mam zapisaną w pamięci programu:) Hmm faktycznie jest potrzeba odczytywania pamięci sterownika, żeby nie nadpisywać całej strony przy ustawianiu/zerowaniu konkretnego piksela. Coś się wykombinuje:D
|
|
| Back to top |
|
 |
Google

|
#
01 Feb 2012 16:27 |
|
|
|
|
|
| Back to top |
|
 |
andy1024 Poziom 6

Joined: 28 Mar 2010 Posts: 17 Location: Gdańsk
|
#41
01 Feb 2012 16:33 Re: ATmega + LCD graficzny 132x65 (LT13264 kontroler SPLC501C) |
|
|
|
Zawsze można zrobić coś w rodzaju blind-write, czyli wysyłasz piksel zarówno do sterownika obrazu, jak i do swojej mapy w pamięci (o ile masz jej na tyle dużo - no i wtedy odpada zastosowanie progmem'a). Potem, jeśli chcesz dołożyć kolejny piksel, to nie odpytujesz wyświetlacza, tylko zaglądasz do swojej mapy. Nakładasz bitowym ORem piksel i wysyłasz cały bajt na wyświetlacz.
|
|
| Back to top |
|
 |
adammruk Poziom 15

Joined: 10 Jan 2006 Posts: 258 Location: Zielona Góra
|
#42
01 Feb 2012 18:07 Re: ATmega + LCD graficzny 132x65 (LT13264 kontroler SPLC501C) |
|
|
|
Tak, też o tym myślałem, jest to najprostsze rozwiązanie, ale zauważ że tracimy wtedy sporo na pamięci (aż 1056 bajtów, to ponad 1kB!) no i na szybkości działania. Jeśli jest opcja działania na pamięci kontrolera to najlepiej będzie ją wykorzystać:)
|
|
| Back to top |
|
 |
Google

|
#
01 Feb 2012 18:07 |
|
|
|
|
|
| Back to top |
|
 |
andy1024 Poziom 6

Joined: 28 Mar 2010 Posts: 17 Location: Gdańsk
|
#43
01 Feb 2012 18:31 Re: ATmega + LCD graficzny 132x65 (LT13264 kontroler SPLC501C) |
|
|
|
Co do zajętości pamięci to masz rację. Zaś co do czasochłonności, to myślę, że nie - zauważ, że mamy tu trzy typy operacji:
1-zapis bajtu do mapy w SRAM - bardzo szybki
2-zapis do kontrolera - dosyć wolny
3-odczyt z kontrolera - umiarkowanie wolny
Korzystając z blind-write mamy punkt 1 i 2. Korzystając z klasycznej metody (stosowanej przez Radzia) mamy punkt 2 i 3. Dwójki wyeliminować się nie da.
Prawdę mówiąc jedyną motywacją jaka stała za tym pomysłem było przyspieszenie wykonania.
Takie tam teoretyzowanie. Oczywiście, że w praktyce lepsze będzie podejście klasyczne, bo pracujemy na kontrolerze, który pamięci ma co kot napłakał;)
|
|
| Back to top |
|
 |