www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Adress- Datenbus


Autor: mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
problem:
ich hab bis jetzt nur mit "kleinen" uC gearbeitet, d.h. da hat man ein 
Port das ein Direction Register hat und ein Data Register, wenn ich 
jetzt auf das Port was schreiben/lesen will sag ich einfach Port1 ist 
Ausgang Port1.Pin1 ist 1 mittels dem DataRegister, klingt logisch, jetzt 
hab ich aber einen uC der einen fixen Adressbus und einen fixen Datenbus 
hat, wie funktioniert es jetzt das ich auf eine bestimmte Adresse Daten 
schreiben kann?? wenn ich in der headerdatei ein #define mache und zum 
Beispiel auf die Adresse 0x60000 schreiben will:
#define Addresse1 *(volatile unsigned char*) 0x60000, wenn ich dann im C 
Teil schreib, Adresse1=1; müsst er doch die Adresse 0x60000 am Adressbus 
anlegen und am Datenbus 1, oder nicht?? klingt sehr kompliziert, hoffe 
es versteht irgendwer

Autor: Norbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da meine C-Kenntnissse noch nicht so berauschend sind, kann ich Dir 
konkret nicht helfen. Ich habe jedoch mit einer C167-MCU gearbeitet, und 
da hat der C-Compiler von Keil diese Aufgaben mit speziellen Befehlen 
gelöst.

Zu erwähnen ist natürlich, daß bei Bussystemen die verschiedenen
Bausteine (EPROM, RAM, USART usw.) über eine seperate Dekodoerlogik 
(Stichworte: 'HC138, GAL) enabled werden müssen.

Wenn Du wirklich noch keine Ahnung hast, wäre als Einstieg ein fertiges 
EVAL-Board mit zugehöriger Software richtig.

Sieh' mal unter:  http://www.phytec.de  nach.

Norbert

Autor: mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die CPU hat ein festgelegtes Memorymapping, das heißt spricht man eine 
Adresse an wird der richte Chip Select aktiviert, d.h. daran scheitert 
es nicht

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau so läufts.

Beim STK300 von Atmel funktioniert zum Beispiel das LCD-Interface 
grundsetzlich auf diese Weise.

Autor: mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das es grundsätzlich so funktioniert ist schön aber es funktioniert 
praktisch nicht :-(

Autor: Alex1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
bist Du sicher, dass das #define richtig ist?
Ich habe schon mit mehreren Compilern gearbeitet. Jeder benutzt so seine 
eigene Syntax.
Alex

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mark,

jeder Adreß-, Datenbus funktioniert anders.

Deshalb steht auch in jedem Datenblatt eines µC, wie externer Speicher 
angeschlossen werden muß.

D.h. ohne zu wissen, welchen µC Du meinst, kann Dir keiner helfen.

Muß ja doch schon ein 16-Bitter sein mit mindestens 19 Adreßleitungen, 
um Adresse 0x60000 zu dekodieren.


Was grundsätzlich funktioniert, funktioniert auch praktisch, sonst müßte 
der Hersteller seine Chips ja einstampfen.

D.h. immer den Fehler zuerst bei sich selber suchen oder nochmal 
gründlicher alle dazu gehörenden data sheets, user guides, application 
notes, design examples, errata sheets usw. lesen.


Im Zweifelsfall die Hardware auch immer erst mit Assembler testen.
Wenn z.B. die externen Speicherzugriffe nicht klappen, der C-Compiler 
dort aber seinen Stack ablegt, kann es nur noch crashen.



Peter

Autor: mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@peter:
das der fehler bei mir liegt ist mir durchaus bewußt deshalb wende ich 
mich ja an euch,
es ist ein h8s/2655 von Hitachi der 24 adressbusleitungen (16mb)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.