8051 +externer ROM u. Interruptvektoren

Gast #1665973
Lesenswert?

Ich soll für ein Projekt ein Board mit einen 8051 und externen EPROM und 
RAM sowie einen 8255 IO Baustein versehen. Für externen Rom gibt es 2 
Varianten diesen zu verwenden in dem man den internen Rom von 0000h bis 
0fffh und ab 1000h bis ffffh den Externen Adressiert oder nur den 
externen von 0000h bis ffffh -> Stehen mir in der 2. Variante noch die 
Interruptvektoren zur Verfügung?

Geht das überhaupt den IO am gleichen Bus wie den ROM aus dem das 
Programm läuft und wenn ja kann ich WR und RD einfach selber setzen?
#1665992
Lesenswert?

Christian schrieb:
> Stehen mir in der 2. Variante noch die
> Interruptvektoren zur Verfügung?

Ja das geht die liegen dann im EPROM.


> Geht das überhaupt den IO am gleichen Bus wie den ROM aus dem das
> Programm läuft und wenn ja kann ich WR und RD einfach selber setzen?

Der 8051 unterscheidet zwischen Programmzugriffen mit PSEN und 
Datenzugriffen mit RD/WR.  Du hast also 2 x 64 Kbyte Addressraum zu 
verfuegung.

WR und RD setzt der Prozessor bei zugriffen auf externe Datenspeicher 
(nicht Programmspeicher) selber. Darum brauchst du dich nicht zu 
kuemmern.


Gruss Helmi
Gast #1665998
Lesenswert?

Wenn Du mit ROM den internen Flash des 8051 meinst, sonst ist es eine 
Maske,
kannst Du den externen Speicher ab 1000h verwenden. Der 8051 schaltet 
die
Zugriffe automatisch um. Sonst Internes ROM abschalten und alles ins 
Externe
(würde ich vorziehen)

Die Interruptvektoren bleiben an der alten Stelle, sind nicht abhängig
vom Externen Speicher.

R wund W werden, bei jedem IO-Zugriff entsprechend vom 8051 aktiviert,
die Datenleitungen der Externen Bausteine müssen am Datenbus hängen.
(22k Pull-Ups nicht vergessen)
Die Chip-Selects passen aus den Adressen generieren und gut ist es.
Auf eindeutige Adressen achten!
#1666018
Lesenswert?

>Geht das überhaupt den IO am gleichen Bus wie den ROM aus dem das
>Programm läuft und wenn ja kann ich WR und RD einfach selber setzen?

Ist kein Problem. Wenn Du schreibend und lesend zugreifen willst, dann 
lege den 8255 in den Datenspeicher-Bereich, welcher mit WR bzw. RD = Low 
ausgewählt wird. Für CS baust Du Dir einen Adressdecoder oder je nach 
Platzfreiheit reicht auch eine einzelne höherwertige Adresse, so das Du 
mit den externen RAM nicht in Adresskonflickte kommst.
Gast #1666070
Lesenswert?

Danke an alle.
heißt also wenn der 8051 auf das ext. ROM zugreift setzt er PSEN und bei 
allen anderen ist PSEN nicht gesetzt
und nur bei zugriff auf ext. ROM setzt er WR/RD sonst muss/kann ich das 
tun?
bleiben da dann seine Einstellungen oder setzt er sie wieder auf den 
letzten wert zurück?

@Peter Dannegger
ja für meinen Techniker beim DAA
#1666094
Lesenswert?

Christian schrieb:
> heißt also wenn der 8051 auf das ext. ROM zugreift setzt er PSEN und bei
> allen anderen ist PSEN nicht gesetzt
> und nur bei zugriff auf ext. ROM setzt er WR/RD sonst muss/kann ich das
> tun?
> bleiben da dann seine Einstellungen oder setzt er sie wieder auf den
> letzten wert zurück?

Also, du solltest als erstes mal was über Grundlagen des 8051 lesen. Dir 
fehlen elementare Grundkenntnisse. Vorallem zur grundsätzlichen 
Speicherarchitektur (Harward). Die ist bei (fast) allen 8051ern gleich. 
Im Netz gibt es unzählige Dokumente dazu.
#1666144
Lesenswert?

Christian schrieb:
> heißt also wenn der 8051 auf das ext. ROM zugreift setzt er PSEN und bei
> allen anderen ist PSEN nicht gesetzt

Richtig

> und nur bei zugriff auf ext. ROM setzt er WR/RD sonst muss/kann ich das
> tun?

Bei externem ROM setzt er nur PSEN , WR/RD bleiben inaktiv.
Du must unterscheiden zwischen Programmspeicher und Datenspeicher.
Du hast da eine Harward Architektur und keine von Neumann.

> bleiben da dann seine Einstellungen oder setzt er sie wieder auf den
> letzten wert zurück?

Das macht der automatisch.
Gast #1666161
Lesenswert?

Pin 31 ist mit EA External Acces (externer Zugriff) gekennzeichnet. 
Führt dieser Anschluss + so liest der MC von dem internen 
Programmspeicher, andernfalls von einem externen Eprom. P0, P2 
übernehmen die Funktion eines Adress / Datenbusses. Im ersten Zyklus 
gibt der MC die Adresse für den Programmspeicher aus. P0 das Adress low 
Byte, P2 das Adress high Byte. Mit Hilfe des ALE  Signals (Pin 30) wird 
das Adress low Byte in einen Adress-Speicher übernommen. ALE steht für 
Adress Latch Enable. Im zweiten Zyklus schaltet nun der MC mit dem 
Signal PSEN Program Store  ENable das Eprom in den Freigabezustand. P0 
liest nun das Befehlswort ein und der MC führt es aus. Dieser Vorgang 
wiederholt sich während des gesamten Programmablaufs in der gleichen 
Weise.

WR/RD bleiben inaktiv. Erst wenn Du den 8255 ansprichst dann passiert 
auch hier etwas.

Harvard bitte nicht mit w schreiben :-)
#1666233
Lesenswert?

Ganz trivial ist die Sache nicht.

Eventuell brauchst Du nen PAL für Dekodierung, Umschaltung.
Eventuell mußt Du die Interruptvektoren vom internen Flash umleiten 
(LJMP-Tabelle).

Wie groß ist der externe SRAM, EPROM?
Soll aus dem XRAM auch Code ausgeführt werden?
Was für ein Adreßmapping hast Du dir ausgedacht?
Hat der 8051 schon internen Flash, SRAM und wie groß?
Welcher 8051?

Und schau Dir auch das Timing der 82C55 an, manche sind schnarchlahm und 
brauchen extra Waitzyklen. Aber nicht jeder 8051 kann externen Zugriffe 
strecken, dann hilft nur ein langsamerer Quarz.


Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren