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?
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
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!
>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.
Christian schrieb: > Ich soll für ein Projekt ein Board mit einen 8051 und externen EPROM und > RAM sowie einen 8255 IO Baustein versehen. Das ist dann aber nur ne Übungsaufgabe ohne jeglichen praktischen Nutzen. Für praktischen Einsatz nimmt man nen 8051 mit internem Flash und Bootloader. Peter
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
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.
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.
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 :-)
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
@ Christian Für Dich bestimmt sehr nützlich: "Das Microcontroller Kochbuch MCS51" von Andreas Roth. Entweder kaufen oder ausleihen. Wirst nicht bereuen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.