Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Podlaczenie LCD do atmega162 w trybie zewnetrznej pamieci.

zybi
-
-
Posty:25
Rejestracja:24 sie 2004, o 14:40
Podlaczenie LCD do atmega162 w trybie zewnetrznej pamieci.

Postautor: zybi » 24 sie 2004, o 14:57

Mam taki problem: Chce podlaczyc do procesora atmega162 wyswietlacz LCD w sposob umozliwiajacy zapis do niego i odczyt jak do zewnetrznej pamieci ram czyli przez polecenia st x, r16 i ld r16, x. Niestety moduly te sa wolne i mimo wlaczenia wait state w procesorze lcd dalej nie reaguje na polecenia. Probowalem wykorzystac sposob sterowania taki jak w stk200 atmela, lecz to nie dziala. Sposob z dwoma bramkami or i nor zawart w edw3/98 rowniez nie dziala. Rezonator procesora to 1,843,200. Sterowanie lcd bezposrednio z portow procesora przez operacje na bitach odbywa sie bez problemu. Korzystanie z zewnętrznej pamieci ram w trybie zewnetrznej pamieci rowniez odbywa sie bez problemu. W czym tkwi blad? Moze ktos wie gdzie znajde schemat na podlaczenie lcd do procesora? Dziekuje.

Awatar użytkownika
gawel
-
-
Posty:683
Rejestracja:24 lis 2003, o 11:19
Lokalizacja:Białystok

Postautor: gawel » 24 sie 2004, o 19:46

Musisz dokładnie opisać sposób przyłączenia wyświetlacza do systemu. Zakładam, że szyna danych jest tam gdzie powinna być, ale co z resztą, czyli RS, E i RW?

zybi
-
-
Posty:25
Rejestracja:24 sie 2004, o 14:40

Postautor: zybi » 25 sie 2004, o 20:12

Dzieki, juz sobie poradzilem. Okazalo sie ze procesor zle wystawial adresy i trzeba bylo zmodyfikowac odczyt flagi zajetosci. Dla zainteresowanych podlaczenie
d0..d7 - wiadomo jak
rs - a0
rw - a1
e - jest sygnalem zlozonym z sygnalo wr!, rd! i a15 w sposob:

(wr! nand rd!) and (not(a15))

Awatar użytkownika
gawel
-
-
Posty:683
Rejestracja:24 lis 2003, o 11:19
Lokalizacja:Białystok

Postautor: gawel » 25 sie 2004, o 22:06

Czym jest spowodowane wymaganie aby przyłączyć moduł LCD w trybie pamięcie zewnętrznej? W większości przypadków do obsługi modułów LCD stosowane jest następujące rozwiązanie:
- przyłączyć szynę danych LCD do jakiegoś portu,
- przyłączyć sygnału RS, RW i E do pinów portu.

Użycie tak przyłączonego modułu wymaga bardziej złożonych operacji wykonywanych przez procesor. Nie jest możliwy zapis lub odczyt danych do LCD za pomocą jednej instrukcji (przykładowo ST....). Obsługa (w sensie zapisu do LCD) wymaga zapisu danych do odpowiedniego portu i w następnej kolejności do odpowiedniej manipulacji pinami, do których przyłączone są sygnały RS, RW i E. Pojedynczy dostęp do modułu sprowadza się do ciągu kilku instrukcji. Przy takim podejściu można uniezależnić się od prędkości zegara systemowego.

zybi
-
-
Posty:25
Rejestracja:24 sie 2004, o 14:40

Postautor: zybi » 28 sie 2004, o 09:55

Wiem. Ale ja buduje uzadzenie ktore posiada jeszcze kilka innych peryferii i takie rozwiazanie jest najlepsze. Poza tym LCD w zaleznosci od podlaczenia zabiera 7 lub 11 linii ktore mi sa potrzebne. Dlatego nejlepiej podlaczyc LCD jak zewnetrzna pamiec. Z moim zegarem 1,843200 to dziala. Z szybszym zegarem bede musial pokombinowac, bo zauwazylem ze z wpisem do LCD nie ma problemu. Gorzej z czasem odczytu flagi zajetosci. Zanim odczytam flage zajetosci musze wykonac kilka nop'ow. Jest jeszcze metoda alternatywna. Szyne danych lcd podlaczam do szyny danych procesora (w trybie zewn. pamieci), a piny rs, rw i e podlaczam do pinow np. portu B. Procesor steruje lcd operujac portami, a innymi peryferiami juz normalnie czyli jak zewn. pamiec. Tylko trzeba uwazac zeby nie bylo konfliktu.

Awatar użytkownika
gawel
-
-
Posty:683
Rejestracja:24 lis 2003, o 11:19
Lokalizacja:Białystok

Postautor: gawel » 28 sie 2004, o 21:17

Z tą metodą alternatywną może być problem. O ile pamiętam, to w trybie używania pamięci zewnętrznej porty szyny danych i adresów są niedostępne do manipulacji przez program. Natomiast mogę zaproponować dwie inne metowy alternatywne.
1. skoro uważasz, że zapisy do LCD są poprawne i jedynie odczytujesz status (zapewne by sprawdzić wykonanie polecenia), to możesz po akcjach wymagających dużo czasu odczekać ten czas w programie (bez czytania statusu),
2. użyć drugiego małego procesora (np 2313) z obsługą LCD i przyłączyć go poprzez przykładowo interfejs szeregowy (może SPI). Pisanie po LCD zamieni się na transmisję szeregową.

zybi
-
-
Posty:25
Rejestracja:24 sie 2004, o 14:40

Postautor: zybi » 29 sie 2004, o 20:48

>>O ile pamiętam, to w trybie używania pamięci zewnętrznej porty szyny danych i adresów są niedostępne do manipulacji przez program

Zgadza sie. Probowalem w ten sposob i na ten czas wylaczalem "zewnetrzny dostep".

Co do odczekania czasu to wole jednak sprawdzac, bo moze jednak cos sie lcd odwiedzi i nie bedzie gotowy? Zawsze to bezpieczniej i pewniej.
A pomysl z osobnym procesorem jest dobry. Moge do niego przesylac kilka znakow i niech on teraz czeka. I wysylac szeregowo lub rownolegle (4bit). Wtedy:
do2313 idzie 6 linii: 5 linii danych (4 bit ydanych i jeden bit dana/rozkaz) i jedna zapis
do lcd z 2313 idzie 7 linii: 4 linie danych i 3 sterujace

razem 13 linii. Zostaja 2 np do programowego wlaczania podswietlenia w lcd.
Dziekuje za pomoc.

Wróć do „AVR/AVR32”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 0 gości