Pamiec w uP

Jul 04, 2004 7 Replies

Czy jesli podlaczam zewnetrzna pamiec do mikroprocesora (avr) to oba porty musza byc przeznaczone wylacznie dla pamieci (czyli nie moge podpiac do nich niczego innego)?



Tomasz



mozesz..np zatrzask .z dekoderem adresow., albo 8255 - brame I/O

Zale¿y jak chcesz adresowaæ urz±dzenia zewnêtrzne i czy przypadkiem 8-bitowy adres wystarczy. Bo je¶li tak, to jeden port móg³by¶ mieæ wolny, chocia¿ przyznam siê, ¿e o ile robi³em takie "chwyty" z 51 (to proste, nie wolno adresowaæ urz±dzeñ zewnêtrznych z u¿yciem DPTR, tylko R0 - odpowiada to obszarowi PDATA zamiast ca³ego XDATA) o tyle z AVR jeszcze nie. Je¶li natomiast musisz u¿ywaæ adresów 16-bitowych, to jedyne co mo¿na zrobiæ to do³±czyæ dekoder adresów i pod pewnymi adresami mieæ rejestry wyj¶cia, wej¶cia czy wej¶cia - wyj¶cia (ewentualnie bufory ale to zalezy od aplikacji). Wówczas zapisujesz i odczytujesz te rejestry jak zewnêtrzn± pamiêæ danych. Niestety - na obu portach bêd± sie pojawiaæ adresy i dane. Je¶li do³±czysz tam urz±dzenia zewnêtrzne, to ich praca bêdzie zak³ócana.

Jacek

U¿ytkownik "Tomasz Cybulski" snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news:cc9eop$p2g$ snipped-for-privacy@atlantis.news.tpi.pl...

Je¶li masz zamiar u¿ywaæ tych linii jako proste wej¶cia/wyj¶cia, to w zasadzie musz± byæ przeznaczone dla pamiêci. Ale AVRy z mo¿liwo¶ci± do³±czania zewnêtrznej pamiêci danych posiadaj± funkcjê "odzysku" niewykorzystanych bitów adresowych - chodzi o te najstarsze. Czyli np. je¶li do³±czasz pamiêæ 8kB, to mo¿esz sobie wy³±czyæ funkcjê adresow± na trzech (lub dwóch) najstarszych bitach portu C. Poza tym mo¿esz sobie w³±czyæ w przestrzeñ adresow± jaki¶ expander (choæby prosty zatrzask).

QmX.

Wysyłając taki oto zestaw znaków dnia 04-07-05 01:39 Jacek Bogusz nakarmił(a) stado głodnych newsserwerów:

Tzn. jeśli wepnę coś co nie jest pamięcią w przestrzeń adresową 8051 to nie mogę się do tego odwoływać przez DPTR???

Hmm.. mozna troche jasniej? :) Zamierzam uzywac uP AVR. pomyslalem sobie, ze jakbym podpial mniejsza niz maksymalna pamiec zewnetrzna, to moge wykorzystac te gorne adresy do adresowania pewnych urzadzen zewn. ktore beda sie komunikowaly po szynie danych no i beda rozpoznawaly swoj adres (chociazby poprzez zwykle bramki logiczne). Czy dobrze mysle, ze tak mozna zrobic?

Pozdrawiam. Tomasz

Dobrze kombinujesz, jednak to zale¿y od takich drobiazgów, jak u¿ywany kompilator. W jakim jêzyku chcesz pisaæ program? Jakiego kompilatora u¿yjesz i co chcesz przechowywaæ w tej zewnêtrznej pamiêci? Czy masz zamiar w niej umie¶ciæ stos? A mo¿e tylko zmienne, co¶ w rodzaju bufora na dane? A tak na marginesie: skoro ju¿ do³±czasz "pewne urz±dzenia zewnêtrzne", to dlaczego nie zrobiæ dekodera adresów, który podzieli ca³± przestrzeñ pamiêci zewnêtrznej na odpowiednie obszary? Gdzie¶ tam bêdzie RAM a gdzie¶ urz±dzenia, które de facto bêd± pracowaæ jak RAM, chocia¿ nim nie bêd± Kwestia tylko wykonania odpowiedniego dekodera adresów.

Jacek

PS. Je¶li nie chcesz chwaliæ siê swoim urz±dzeniem publicznie, napisz na mój email. Napisz co chcesz zrobiæ, albo wy¶lij jaki¶ schemat blokowy. Co¶ pomy¶limy... ;-)

U¿ytkownik "Tomasz Cybulski" snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news:cc9eop$p2g$ snipped-for-privacy@atlantis.news.tpi.pl...

W ATmega128 mozna wylaczyc najstarsze nieuzywane bity adresowe i wtedy uzywac ich jako normalnych I/O (w przypadku jak uzywasz mniejszej pamieci, niz 64 kB) Ale tu pulapka - poczatek zewnetrznego ram-u pokrywa sie z wewnetrznym ram-em procecsora i pozostaje niewykorzystany. Mozna to obejs w prosty sposob - jest o tym na stronie atmela.

Pozdr AK

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required