Forum: Mikrocontroller und Digitale Elektronik 8051 Adress- und Datenbus, externe Peripherie und GLCD Problem


von ilja (Gast)


Lesenswert?

Hallo zusammen,

ich versuche schon seit mehreren Tagen meine externe Peripherie an einem 
80C517A Mikrocontroller in Betrieb zu nehmen, jedoch ohne irgendwie 
weiterzukommen.

An dem gemultiplexten Adress-und Datenbus sind EPROM(Programmspeicher), 
16Bit AD-Wandler, ein DA-Wandler und ein GLCD mit einem T6963c 
controller angeschlossen.

Die externe Peripherie reagiert jedoch nicht wenn Sie über XDATA 
angesprochen wird.

Einen Hardwarefehler schließe ich aus, da die Hardware mit der 
programmierung in Assembler funktioniert.

Nun soll aber die Software in C mit der Keil uVision 
Entwicklungsumgebung neugeschrieben und erweitert werden.

Bei der Programmierung in C bin ich mir aber nicht 100%ig sicher ob ich 
die zusammenhänge richtig verstanden habe.

Die Daten des LCD steuere ich über eine festdefinierte XDATA Adresse in 
dem eine Variable definiert wird.

extern unsigned char xdata LCD_PTR at 0xB000;

Um jetzt zum Beispiel die Daten auszulesen würde ich das 
"inhalt=LCD_PTR;" schreiben.

Ausserdem habe ich in der Startup.A51 datei den XDATA Berreich 
folgendermassen eingestellt.

XDATASTART: 0xAFFF
XDATASIZE:  0x0200

mehr habe ich nicht gemacht.
Das Programm bleibt immer bei der Abrage des Statuses vom t6963c hängen. 
D.h. für mich so viel, dass keine Daten vom Adress- und Datenbus 
eingelesen werden.

Vieleich kann mir ja einer helfen. Ich befürchte irgendetwas vergessen 
zu haben oder nicht zu wissen.

Ich würde mich über jede Hilfe freuen

Vielen Dank.

von 8051 (Gast)


Lesenswert?

ein Schaltplan wäre sehr hilfreich.
(Bildformate beachten )

von Peter D. (peda)


Lesenswert?

ilja schrieb:
> XDATASTART: 0xAFFF
> XDATASIZE:  0x0200

Glaub ich Dir nicht, daß der XRAM ein Byte tiefer als ne Adreßleitung 
anfängt.
Und dann ist Dein LCD ja an der 2. Adresse (0xB000) des XRAM, das geht 
schief.


Peter

von Stephan (Gast)


Lesenswert?

>Einen Hardwarefehler schließe ich aus, da die Hardware mit der
>programmierung in Assembler funktioniert.

>Nun soll aber die Software in C mit der Keil uVision
>Entwicklungsumgebung neugeschrieben und erweitert werden.


das ergibt wenig Sinn. C macht auch nur ASM daraus.
Warum versucht Mann oder Frau sich an so alten Controllern ohne 
grundlegende Hardwarekenntnisse zu haben. Wenn Euer Ausbilder vergessen 
hat Euch Hardwarecodierung bei zu bringen, sollte er es nicht verlangen. 
Oder Mann oder Frau sollte zuhören statt Frecell zu spielen. Wie auch 
immer. Die Adressdecoder sollte man schon im Plan sehen. Dann wird sehr 
schnell vieles klar.

ps.:
ist das Projekt einfach nur um sich selbst zu quälen oder eine Aufgabe ?

von holger (Gast)


Lesenswert?

XBYTE[adr] = by;

 by = XBYTE[adr];

So ging das bei Keil damals vor vielen, vielen Jahren;)

von Matthias K. (matthiask)


Lesenswert?

holger schrieb:
> XBYTE[adr] = by;
> by = XBYTE[adr];

Geht bestimmt immer noch...

Interner RAM liegt auf Adresse F800-FFFF (2kbyte). Allerdings nur, wenn 
XMAP0= 0 ist, sonst greift man auf den exteren XDATA-Bereich zu.

von ilja (Gast)


Lesenswert?

Vielen Dank für die schnellen Antworten.

Der Fehler ist beseitigt. Die XDATASTART war falsch eingestellt.
Zusätzlich wurden die RD und WR Pins des T6963 über die "normalen" Ports 
eingesteuert. Und das ging natürlich immer schief. Nun werden die Pins 
des T6963 mit den WR und RD Ausgängen des 8051er eingesteuert.

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.