Moin Moin,
habe immer noch Probleme mit meinem externen RAM am 8515!
Verwende ein 70ns SRAM zusammen mit einem 74HC573 als Adresslatch und
der 8515 läuft auf 4MHz.
Habe das ganze mittlerweile auf einer Lochrasterplatine aufgebaut um
möglichst kurze Verbindungswege zu haben, die ich vorher nicht hatte.
Leider brachte auch das keinen Erfolg.
In der Software muss man doch einfach nur das externe RAM im
MCUCR-Register freigeben und kann dann z.B. mit Hilfe des
X-Y-Z-Registers und den ld und st Befehlen auf das externe RAM wie auf
das interne zugreifen. Liege ich da richtig, oder ist da noch ein Haken.
Mit und ohne Waitstate habe ich auch schon versucht.
Hoffe Ihr könnt mir helfen!
Gruß,
Ralf
Habe /rd und /wr direkt vom Controller mit den entsprechenden Pins des
SRAMs verbunden.
/ce generiere ich mir über einen 74HC138. Habe die Adressleitungen
A15,A14,A13 auf die Eingänge gelegt und Ausgang Y0 des HC138 auf den /ce
des SRAMs.
ALE des Controllers liegt direkt auf dem ALE-Eingang des 74HC573.
Das sollte doch richtig sein, oder?
Hat wirklich keiner eine Idee?
oder hat vielleicht einer eine Beispielschaltung mit Testprogramm, mit
der ich meine Lösung vergleichen kann? Könnte auch mal meine
Schaltung/Code anhängen
Hallo,
schau doch mal auf die Seite von Daniel Herrington
(http://www.frii.com/~dherr/gbcam.html), da ist zwar etwas mehr am MC
(AD-Wandler) und die Software ist recht complex aber die dich
interessierenden Teile sin recht einfach zu erkennen.
Gruß
-=jens=-
Hallo Jens,
danke für deine Hilfe!
Habe gesehen, dass dort Pullups an der /rd und /wr Leitung hängen. Diese
habe ich in meiner Schaltung nicht. Wenn ich mir die Schaltung des YAMPP
MP3 Players ansehe, dann finde ich diese Widerstände jedoch auch nicht.
Sind die beiden Ausgänge /rd und /wr open drain Ausgänge, sodass diese
Widerstände nötig sind, oder nicht??
Gruß,
Ralf
Hallo Ralf,
ich denke die Pullups dienen dazu undefinierte Zustände beim Einschalten
zu verhindern. Beim starten des AVR´s sind die Ports ja als Eingänge
definiert, ganz sicher bin ich mir allerdings nicht. Ich hab die
Schaltung von Daniel, allerdings mit nem anderen AD-Wandler, aufgebaut
und sie funzt einwandfrei.
Gruß
-=jens=-
Sorry,
also hier mein Testprogramm.
Ich will vom Terminal eine Textdatei zum Controller senden und dann,
wenn ich einen Taster drücke, soll diese Datei wieder zurück gesendet
werden.
Habe hier nicht auf Schönheit geachtet, der Taster ist also nicht
entprellt usw.
Hallo Ralf,
du zählst ja deine Counter-Register in der UART_RCX nicht hoch (nach dem
Auskommentierten st Befehl), dann muss deine Ausgaberoutine der Meineung
sein, das keine Daten vorhanden sind.
Gruß
-=jens=-
Hallo Jens,
ich gehe bei dem Testprogramm einfach davon aus, dass ich vor dem
drücken des Tasters schon ein Textfile an den Controller gesendet habe,
welches groß genug ist. Habe ich dieses File gesendet, dann drücke ich
den Taster und setze den Zeiger wieder auf den Startpunkt, wo ich zuvor
mit dem Beschreiben des RAMS begonnen habe. Von dort aus lese ich dann
die Daten aus dem RAM aus und sende sie über die Schnittstelle an den
PC. Die Anzahl der ausgelesenen Bytes habe ich einfach festgelegt und
hat nichts mit der tatsächlich empfangenen Datenmenge zu tun. Ich möchte
nur, das der Controller irgendwann aufhört zu senden, da sonst das
Terminal bei mir immer weiter lief.
Hallo Ralf,
o.k. wenn du es so machst solle das Programm ~2550 Byte senden.
Dann ist es wohl doch eher ein Hardware-Fehler. Check mal die
Steuersignale, die Adress- und Datenleitungen sind (zumindest was
vertauschen der Leitungen untereinander, nicht Adress- gegen
Datenleitungen angeht) irrelevant.
Ich hoffe du kannst den Fehler lokalisieren. Sende eventuell mal ´n
Layout das du verwendet hast.
Gruß
-=jens=-
Werde morgen mal meinen Eagle-Plan anhängen und auf der Arbeit mal die
Steuersignale ausmessen. Hoffe ich komme dann damit weiter. Werde mir
auch noch ein paar Speicher ICs zulegen. Vielleicht hat mein jetziges ja
auch schon ne Macke
Viele Grüße,
Ralf
Moin Moin,
habe euch nochmal meine Schaltung angehängt. Vielleicht könntet Ihr ja
mal einen kurzen Blick drauf werfen, ob ich da einen Fehler drin habe.
Die CF-Fassung habe ich noch nicht eingebaut. Wollte erst mal den Rest
ans laufen kriegen. Ebenso fehlt der Spannungsregler.
Ist eine Eagle *.sch-Datei.
Danke schonmal....
Ralf
Hallo Ralf,
dein Schaltplan ist bis auf die Adressselektion OK, es währe günstiger
den RAM_CS direkt mit A15 zu verbinden weil du sonst nur das untere
Viertel deines RAMs ansprechen kannst. Der Fehler sollte aber nicht die
prinzipielle Funktion der Schaltung beeinträchtigen.
Gruß
-=jens=-
Danke,
muß ich mir nochmal anschauen. Wollte meinen Adressbereich nachher in
mehrere Teile aufteilen und dann die CF-Karte in einen höheren Bereich
hineinlegen. Dann muß ich wohl noch ein ODER einbauen oder so, damit ich
auch das ganze RAM verwenden kann. Die unteren 512 Byte werden glaube
ich auch abgeschnittnen. Das hatte ich bis jetzt in Kauf genommen. Aber
3/4 wollte ich nicht verlieren.
Werde heute dann nochmal die Steuersignale mit dem Scope nachmessen.
Wenn die dann stimmen, hat wohl mein RAM oder eines der anderen ICs ne
Macke.
Gruß,
Ralf
Moin Moin,
danke für eure Hilfe!
Habe jetzt gestern meine Schaltung durchgemessen und das Problem lag
wohl an der Entprellung des Tasters. Ich habe mir dort wohl immer recht
schnell eine Störung eingefangen, sodass der Controller gleich zur
Ausgabe der Daten übergegangen ist. Da zu diesem Zeitpunkt meist nur
nicht lesbare oder Steuerzeichen im RAM standen, hat mein Terminal
nichts angezeigt. Habe den Taster jetzt entprellt und alles
funktioniert. Hätte nicht gedacht, dass das Entprellen des Tasters in so
einem kleinen Programm so wichtig ist. Werde also in Zukunft immer
saubere Programme schreiben!
Viele Grüße,
Ralf