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


von Jannulis T. (tembridis)


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

von Benedikt (Gast)


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.

von Jannulis T. (tembridis)


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.

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
Noch kein Account? Hier anmelden.