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.
ein Schaltplan wäre sehr hilfreich. (Bildformate beachten )
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
>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 ?
XBYTE[adr] = by; by = XBYTE[adr]; So ging das bei Keil damals vor vielen, vielen Jahren;)
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.