Jak skutecznie adresować zewnętrzn± pamięć SRAM i EPROM w mikroprocesorze 51?
Adresowanie zewnętrznej pamięci w 51?
From: "Michał Wysocki" <mwsoft_at_nospam_satkabel.com.pl>
Subject: Adresowanie zewnętrznej pamięci w 51?
Date: Tue, 5 Mar 2002 22:40:53 +0100
no więc....
mam kilka pytań.... :)
wiem w jaki sposób się podłącza zewnętrzny eprom na program lub pamięć na
dane, ew jak połączyć ich obszary adresowe...
zakładając że używam bascoma (ale już zacząłem studiować kurs assamblera z
EdW :))....
mam wewnątrzną pamięć 8KB (w 89S8252) i teraz:
gdy podłączę mu SRAM przez zatrzask (np 32KB) to wew pamięc programu będzie
się pokrywać z pierwszymi 8KB sramu? jak to adresować?
czy pamięć programu i pamięć danych mają osobne przestrzenie adresowe?
czy podczas pracy procesora można zmieniac pamięć programu z wewnętrznej na
zewnętrzną?
zakładając że nie - nie mogę wykonać skoku do programu w sramie?
w Bascomie są instrukcje INP i OUT, mogę w nich zaadresować pamięć do FFFF
czy te instrukcje obsługują najzwyklejszy RAM podłączony przez zatrzask, czy
mogę nimi odczytać także wew pamięć programu (zachodzenie tych 8KB na RAM)?
jak zmusić procesor aby adresował w trybie stronicowym (tzn do adresowania
używał tylko portu 8 bitów P0 a P2 obsłużył bym sobie ręcznie)
w bascomie pewnie nie ma takiej opcji (czy moze sam wybiera tryb 8bitowy i
P2 nie rusza gdy chcę czytać adres z zakresu 0 - FF?)
mam taki RCT (bq3285 texasa) i to to ma wbudowany zatrzask, jest WR jest RD
i jest ALE do zatrzasku + 8bitów adres / dane
podłączenie tego nie ma problemu tylko basocm podczas odczytu niepotrzebnie
zużywa mi caly P2 na druga połówkę adresu...
Chętnie bym poczytal o działaniu szyny 51 i w ogóle tych sprawach (jaka¶
strona, ale polska...)
w EdW kurs asamblera jest OK ale wszystko jest nakierowane na ten ich
mikrokomputer edukacyjny, a o sprzęcie jest na zasadzie "mniej wiesz, lepiej
¶pisz" :)
pozdro i czekam na odpowiedzi :)
--
==========================================
Michał Wysocki
mwsoft_at_nospam_satkabel.com.pl
GG#: 73657 GSM: chwilowo brak :(
==========================================
From: Milosz Skowyra <miloszek.SPAM_REMOVE_at_nospam_fidonet.org.pl>
Subject: Re: Adresowanie =?iso-8859-2?Q?zewn=EAtrznej=20pami=EAci?= w 51?
Date: Thu, 07 Mar 2002 17:46:08 +0100
"Michał Wysocki" wrote:
mam wewnątrzną pamięć 8KB (w 89S8252) i teraz:
gdy podłączę mu SRAM przez zatrzask (np 32KB) to wew pamięc programu będzie
się pokrywać z pierwszymi 8KB sramu? jak to adresować?
Bierzesz opis uPc (zassac z Atmela www.atmel.com) i czytasz strone 4:
EA/V PP
External Access Enable. EA must be strapped to GND in
order to enable the device to fetch code from external program
memory locations starting at 0000H up to FFFFH.
Czyli jak podlaczysz zewnetrzna pamiec programu i na /EA podasz "0" to
program bedzie pobierany w calosci z zewnetrznej pamieci programu.
EA should be strapped to Vcc for internal program executions.
Czyli jak na /EA podasz "1" to program bedzie sie wykonywal z wew.
pamieci flash.
Tyle sie dowiedziales z pdf-a do upc i dalej nie wiesz czy mozna nalozyc
pamiec na obszar nad Flashem.
Teraz zassysasz z atmela nastepny dokument: AT89C8252 Primer -
Application Note i otwierasz na stronie 1:
Depending on the state of the EA pin, program memory
may consist of 8K bytes of internal Flash memory supplemented by up to
56K
bytes of external memory, or may consist entirely of up to 64K bytes of
external
memory. The 8K bytes of internal Flash memory are accessed at addresses
0000H-1FFFH. Program memory accesses at addresses 2000H-FFFFH always
access external memory.
I masz pelniejsza odpowiedz na pytanie.
Mozna dolaczyc brakujace 56K pamieci programu i korzystac z Flasha przy
EA=1.
czy pamięć programu i pamięć danych mają osobne przestrzenie adresowe?
Ponownie powyzsza nota aplikacyjna:
The AT89S8252 has separate address spaces for program memory and data
memory.
Czyli: tak, wynika to z architektury Harvardowskiej.
Inaczej odwolujesz sie do pamieci danych (MOVX) a inaczej do pamieci
programu (MOVC).
czy podczas pracy procesora można zmieniac pamięć programu z wewnętrznej na
zewnętrzną?
W nocie nic na ten temat nie pisze, aczkolwiek jak mnie pamiec nie myli
to /EA jest zatrzaskiwane po resecie i zmiana podczas pracy nic nie
zmieni. Tu moge sie mylic.
zakładając że nie - nie mogę wykonać skoku do programu w sramie?
I mozesz i nie mozesz.
Widze ze pewnych rzeczy nie rozumiesz.
S-RAM - Static Random Acess Memory - w normalnych warunkach uzywana do
przechowywania danych.
ROM, PROM, EPROM, EEPROM, FLASH, NVRAM - to w normalnych warunkach
wykorzystywane jest do przechowywania programu.
Program moze sie wykonywac tylko z pamieci programu, nie moze sie
wykonac z pamieci danych (S-RAM) tak juz po prostu jest i tego nie
zmienisz (wynika to z architektury), poza tym co ci programie ktory po
wylaczeniu pamieci poleci w niebyt.
Mozna wykonac manewr pt. ladujemy do RAM-u program, dokonujemy pewnych
przelaczen, resetujemy procka i RAM widziany jest przez procesor jako
pamiec programu, a np. od pewnego adresu jako pamiec danych, takie cos
robi sie np w symulatorach, debuggerach.
w Bascomie są instrukcje INP i OUT, mogę w nich zaadresować pamięć do FFFF
czy te instrukcje obsługują najzwyklejszy RAM podłączony przez zatrzask, czy
mogę nimi odczytać także wew pamięć programu (zachodzenie tych 8KB na RAM)?
Nie znam Bascom-a, podejrzewam ze te instrukcje mona wykorzystac tylko
odczytu i zapisu do RAM-u.
Ponownie blad ktory wynika z twojej nieznajomosci architektury '51, to
nie RAM zachodzi na te 8KB tylko ROM, EPROM itd.
Do '51 mozesz podlaczyc 64KB RAM-u i 64 KB ROM-u. Tyle moze zaadresowac
standardowy procek (oczywiscie sa inne ktore potrfia wiecej).
jak zmusić procesor aby adresował w trybie stronicowym (tzn do adresowania
używał tylko portu 8 bitów P0 a P2 obsłużył bym sobie ręcznie)
w bascomie pewnie nie ma takiej opcji (czy moze sam wybiera tryb 8bitowy i
P2 nie rusza gdy chcę czytać adres z zakresu 0 - FF?)
To troszke nie tak, ponownie braki ze znajomosci architektury.
Ponownie musze odpowiedziec ze nie znam Bascom-a, musialbys zobaczyc jak
wyglada odczyt z pamieci zewnetrznej po skompilowaniu kodu przez
Bascoma.
Zeby nie ruszac P2 to pewnie trzeba by uzyc instrukcji w stylu:
MOV R0,#ADRES
MOVX A,_at_nospam_R0
Jezeli Bascom przetlumaczy odwolanie do pamieci w sposob:
MOV DPTR,#adres
MOVX A,_at_nospam_DPTR
To zawartosc P2 sie zmieni.
Teraz nie pamietam dokladnie i nie co gorsza nie wiem gdzie szukac...
ale bylo cos w stylu ze mozna wykorzystac P2 jezeli afair 2 cykle temu
odbyl sie ostatni odczyt z pamieic poprzez adresowanie DPTR i w
przyszlym cyklu tez nie ma odczytu poprzez DPTR.
Tu na 98% jestem w bledzie, po prostu nie pamietam.
mam taki RCT (bq3285 texasa) i to to ma wbudowany zatrzask, jest WR jest RD
i jest ALE do zatrzasku + 8bitów adres / dane
podłączenie tego nie ma problemu tylko basocm podczas odczytu niepotrzebnie
zużywa mi caly P2 na druga połówkę adresu...
No to napisz kod krytyczny w asm-ie a reszte w Basicu, Albo calosc
napisz w asm-ie.
Chętnie bym poczytal o działaniu szyny 51 i w ogóle tych sprawach (jaka¶
strona, ale polska...)
http://www.ampr.intertele.pl/sq8feu/8051 lub
http://www.ampr.intertele.pl/sq8feu/8051/index.htm(l) nie pamietam.
w EdW kurs asamblera jest OK ale wszystko jest nakierowane na ten ich
mikrokomputer edukacyjny, a o sprzęcie jest na zasadzie "mniej wiesz, lepiej
¶pisz" :)
Dwie rady...
1) Istnieja biblioteki, ksiegarnie - tam mozna pozyczyc, kupic ksiazki
na temat.
2) Jak najszybciej poznaj asm-a, poprzez to dokladnie poznasz
architekture '51.
--
Regards. Przy odpowiedzi usun "SPAM_REMOVE" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fidonet.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|
Dzisiaj slonce nie wzejdzie, bo za zimno.
From: "Marek Dzwonnik" <mdz_at_nospam_message.pl>
Subject: Re: Adresowanie zewnętrznej pamięci w 51?
Date: Wed, 6 Mar 2002 19:38:44 +0100
Użytkownik "Milosz Skowyra" <miloszek.SPAM_REMOVE_at_nospam_fidonet.org.pl> napisał w
wiadomo¶ci news:3C879950.25CCC9C9_at_nospam_fidonet.org.pl...
W nocie nic na ten temat nie pisze, aczkolwiek jak mnie pamiec nie myli
to /EA jest zatrzaskiwane po resecie i zmiana podczas pracy nic nie
zmieni. Tu moge sie mylic.
EA\ nie było zatrzaskiwane m.in. w starych 8048. Dzięki temu było możliwe
podkradanie kodu z wewn. ROMu. Polegało to na przełączeniu EA po pobraniu
rozkazu ( MOVC ) z zewn. EPROMu a przed jego wykonaniem. Teraz się już tak
nie da ;-)
MDz