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=-
pullups brauchst du nicht. Setz doch endlich mal dein Programm hier rein, die Rätselraterei geht einem doch auf den Keks.
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
Hast du deinem AVR auch erzählt dass ihm externer Speicher zur verfügung steht? Im MCUCR-Register das SRE-Bit setzen.
Hallo Sascha, habe 0xC0 ins MCUCR-Register gesetzt. Also SRE = 1 und 1 Waitstate. Habe es aber auch schon ohne Waitstate versucht.
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
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.