Dariusz Zolna
Guest
Sat Jan 02, 2010 8:49 pm
Usiłuję uruchomić wyświetlacz 160x128pix z kontrolerem T6963C w trybie
memory mapped na Atmega128. Niestety, kiedy próbuję zapisać dane do
pamięci wyświetlacza, na ekranie pokazują się częściowo losowe śmieci, a
częściowo dane wysyłane przeze mnie, choć niekoniecznie wszystkie i
niekoniecznie w miejscu które im wybrałem, za to w powtarzalny sposób
zależny od tego czy mam podpięty programator ISP czy nie.
Dosyć to dziwne.
Ktoś może coś doradzić?
Dariusz Żołna
Konop
Guest
Sat Jan 02, 2010 9:15 pm
Quote:
Usiłuję uruchomić wyświetlacz 160x128pix z kontrolerem T6963C w trybie
memory mapped na Atmega128. Niestety, kiedy próbuję zapisać dane do
pamięci wyświetlacza, na ekranie pokazują się częściowo losowe śmieci, a
częściowo dane wysyłane przeze mnie, choć niekoniecznie wszystkie i
niekoniecznie w miejscu które im wybrałem, za to w powtarzalny sposób
zależny od tego czy mam podpięty programator ISP czy nie.
To znaczy w jaki sposób zależy?? Gdy nie ma programatora wszystko jest
OK? Czy może jest mniej śmieci? Bo to troszkę niejsane

...
Pozdrawiam
Konop
Dariusz Zolna
Guest
Sat Jan 02, 2010 9:23 pm
Konop pisze:
Quote:
To znaczy w jaki sposób zależy?? Gdy nie ma programatora wszystko jest
OK? Czy może jest mniej śmieci? Bo to troszkę niejsane

...
Jest inny układ śmieci. Z czego przy podpiętym programatorze układ
śmieci wygląda za każdym razem na taki sam, a bez niego zmienia się przy
każdym podpięciu zasilania (choć chyba jest tylko kilka jego wersji).
Dariusz Żołna
Grzegorz Kurczyk
Guest
Sat Jan 02, 2010 10:33 pm
Użytkownik Dariusz Zolna napisał:
Quote:
Usiłuję uruchomić wyświetlacz 160x128pix z kontrolerem T6963C w trybie
memory mapped na Atmega128. Niestety, kiedy próbuję zapisać dane do
pamięci wyświetlacza, na ekranie pokazują się częściowo losowe śmieci, a
częściowo dane wysyłane przeze mnie, choć niekoniecznie wszystkie i
niekoniecznie w miejscu które im wybrałem, za to w powtarzalny sposób
zależny od tego czy mam podpięty programator ISP czy nie.
Dosyć to dziwne.
Ktoś może coś doradzić?
Rozumiem, że podłączył Kolega wyświetlacz tak jakby to była zewnętrzna
pamięć RAM dla ATmegi. Może wyświetlacz się nie wyrabia na magistrali i
trzeba dać dłuższe wait state.
Pozdrawiam
Grzegorz
Dariusz Zolna
Guest
Sat Jan 02, 2010 11:32 pm
Grzegorz Kurczyk pisze:
Quote:
Rozumiem, że podłączył Kolega wyświetlacz tak jakby to była zewnętrzna
pamięć RAM dla ATmegi. Może wyświetlacz się nie wyrabia na magistrali i
trzeba dać dłuższe wait state.
Tak, wyświetlacz jest podpięty podobnie jak zewnętrzny RAM:
AD0-AD8 -> DB0-DB7
A12 -> C/D
A13 -> CE
WR -> WR
RD -> RD
PD7 -> RST
Dane zapisuję pod adres 0x8000, komendy pod 0x9000.
Dodawanie WS ani obniżanie częstotliwości taktowania (nawet do 1MHz) nie
pomaga.
Dariusz Żołna
Konop
Guest
Sun Jan 03, 2010 2:36 am
Quote:
Tak, wyświetlacz jest podpięty podobnie jak zewnętrzny RAM:
AD0-AD8 -> DB0-DB7
A12 -> C/D
A13 -> CE
WR -> WR
RD -> RD
PD7 -> RST
A mógłbyś podać które z tych linii współdzielone są przez programator (o
ile w ogóle jakiekolwiek...)? Żeby nie trzeba było szukać PDFa, jeśli
ktoś nie wie/nie pamięta...
Pozdrawiam
Konop
Adam Dybkowski
Guest
Sun Jan 03, 2010 3:11 am
W dniu 2010-01-02 23:32, Dariusz Zolna pisze:
Quote:
Dane zapisuję pod adres 0x8000, komendy pod 0x9000.
Dodawanie WS ani obniżanie częstotliwości taktowania (nawet do 1MHz) nie
pomaga.
Ale dlaczego robisz na chybił trafił? Ten 1MHz jest jakąś magiczną
wartością?
1. Zobacz wykresy czasowe w dokumentacji kontrolera wyświetlacza
2. Zobacz wykresy czasowe w PDFie tej ATmegi
3. Jak nie wierzysz 2) sam zobacz je na oscyloskopie
Szybko wyjdzie, gdzie musi być waitstate lub co się nie wyrabia. Jeżeli
oczywiście to problem samej komunikacji, niezależny od programatora.
--
Adam Dybkowski
http://dybkowski.net/
Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
Dariusz Zolna
Guest
Sun Jan 03, 2010 7:33 pm
Adam Dybkowski pisze:
Quote:
Ale dlaczego robisz na chybił trafił? Ten 1MHz jest jakąś magiczną
wartością?
Na grupie zazwyczaj pytam po wyczerpaniu wszystkich możliwości, tak jak
było w tym przypadku. Czasem datasheety to zwykłe datashity i kiedy
działanie zgodne z opisem się nie sprawdza, trzeba kombinować.
Quote:
Szybko wyjdzie, gdzie musi być waitstate lub co się nie wyrabia. Jeżeli
oczywiście to problem samej komunikacji, niezależny od programatora.
No i wyszło - LCD był wadliwy. Najprawdopodobniej sprzedawca (SMD na
Kalwaryjskiej w Krakowie) nabył partię tych LCD po okazyjnej cenie, bo
chińczyk który je montował pomylił się i zalutował jedną zworkę
określającą ilość RAM na pokładzie.
Kiedy wszystkie softwareowe metody zawiodły, obejrzałem LCD od tyłu i w
okolicach kostki RAM znalazłem 2 zworki - jedna zalutowana, druga nie.
Rozlutowałem jedną z nich i wszystko automagicznie zaczęło działać.
To nie jedyna wada tego LCD - zgodnie z nalepką podświetlenie miało być
LED, a jest EL.
Dariusz Żołna