mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MB90F548GS - Verwendung des externen Bus


Autor: Jannulis Tembridis (tembridis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,

ich arbeite seit kurzem mit dem MB90F548GS der Firma Fujitsu. Mein
Aufgabe ist es diesen mit einem externen Grafikprozessor der Firma
Epson zu verbinden und zu programmieren. Dazu verwende ich die externe
Bus-Schnittstelle des MCU, welche mir allerdings ein bischen
Kopfzerbrechen bereitet und vielleicht hat hier jemand damit etwas
Erfahrung sammeln können.

Laut Datenblatt ist bei diesem Baustein diese Schnittstelle in den
Bereich des internen Speicher-Mappings auf 0x010000 gelegt. Also
definiere ich mir

#define EXTERNAL_BASE_ADDR 0x010000

Um den Zugriff auf die Register des Epson etwas zu erleichtern
definiere ich mir zusätzlich

#define EPSON_REVISION_CODE *(volatile unsigned char __far*)
(EXTERNAL_BASE_ADDR+0x0000)
#define EPSON_MISCELLANOUS *(volatile unsigned char __far*)
(EXTERNAL_BASE_ADDR+0x0001)

Mit diesen beiden Symbolen kann ich ganz bequem Lese- und
Schreiboperationen auf dem Bus auslösen. Testweise habe ich einen Logic
Analyzer angeschlossen um sicherzustellen, dass das Protokoll zu
generiert wird wie gedacht.

Leider musste ich feststellen, dass das MCU nicht wie erwartet die
internen Adressen auf die externen Adressen abbildet (also 0x000000 und
0x000001). Stattdessen gibt er 0x010000 und 0x010001 aus. Was den
Zugriff auf die unteren Adressen des Epson ein wenig erschwert.

Falls hier jemand schonmal Erfahrung mit diesem Baustein gemacht hat,
bitte lasst es mich wissen. Die Fujitsu Leute tun sich etwas schwer mit
ihrer Hilfestellung.

MfG
Tembridis

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Folgendes sollte funktionieren (eventuell muss noch das far an den
Compiler angepasst werden, also durch das __far o.ä)

char far *const EPSON_REG=(far char *) EXTERNAL_BASE_ADDR;

mit z.B. wert=EPSON_REG[0];
kann man auf die einzelnen Register zugreifen.

Autor: Jannulis Tembridis (tembridis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Idee. Allerdings ist es nicht so, dass

EPSON_MISCELLANOUS = 0xFF

oder

u8RevisionCode = EPSON_REVISION_CODE

nicht bereits funktioniert haben. Vom Verhalten her ist am Logic
Analyzer kein Unterschied auszumachen. Es bleibt dabei, dass der
90F548GS die Adressen (meiner Ansicht nach) nicht korrekt abbildet.

Ich vermute, dass ich irgendwas nicht korrekt konfiguriert habe. Leider
weiß ich eben nicht was.

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.