mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik externes SRAM


Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe auf meinem Board einen 32kB SRAM und Latch. Da das Board nicht
von mir stammt ist eine Hardwareproblem eigentlich ausgeschlossen ...

Ich verwende das IAR AVR C
In den Optionen habe ich eingestellt:
Enable external Memory Bus
Base address RAM: 0x260
memory size RAM:  0x8000

mit
__no_init char test @ 0x100;

erstelle ich einen Char an Adresse 0x100
der wird gesetzt und ausgelesen. Lasse ich die adresse bei 0x100 (also
im internen RAM), so funktioniert das ganze.

Stelle ich sie auf das externe RAM um (z.b. 0x2000) kommt nicht der
gewünschte Wert zurück - sondern irgend ein anderen (nicht aus dem RAM
- das ich bis auf die obere Adresse leer).

Mit dem Oszi hab ich schon Aktivität gemessen ... Also funktionieren
tut es teilweise ...

Warum geht das nicht?
Danke Ralf

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die RAM base address muß immer ein Vielfaches der RAM Größe sein. In
einem 64k Adressraum gibt es für ein 32k RAM somit die Möglichkeiten
0x0000 und 0x8000 aber niemals 0x260

Wo liegt dein RAM nun? In der oberen oder unteren Hälfte? Schau mal in
den Schaltplan (ich hoffe, der ist vorhanden)

Gruß,
Markus_8051

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja - das ist so angeschlossen, wie im Datenblatt von Atmel beschrieben.
Schlatplan ist vorhanden. Ich weiß jetzt nicht genau, was du wissen
willst, deshalb beschreib ich nur mal schnell den Anschlussplan.

AD0-7 (vom AVR) geht zum Latcheingang und zweigt sich vorher noch ab zu
D0-7 (vom SRAM)

ALE geht zum Latch

A 8-15 (vom AVR) geht zu A8-15 vom SRAM

Die Ausgänge Q des Latches gehen zu A0-7 des SRAM.

Nun möchte ich einfach zusätzlich diese 32k RAM ansprechen.

Falls du noch Fragen hast einfach melden!
Danke!Ralf

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ralf,

Du schreibst:

"Die Ausgänge Q des Latches gehen zu A0-7 des SRAM."

Das ist in Ordnung, aber weiter:
"A 8-15 (vom AVR) geht zu A8-15 vom SRAM"

Das kann nicht sein! Ein 32k SRAM hat nur bis A14. Sonst wäre es ein
64k SRAM und das gibt es nicht! Also, wo geht A15 vom AVR hin? Die
sollte an einen CE-pin vom SRAM gehen, aber an welchen? Es gibt einen
High-aktiven und einen Low-Aktiven CE-Pin. Je nachdem welcher genommen
wurde, liegt das RAM von 0-7fff(für den low-aktiven) oder von 8000 bis
ffff(für den high-aktiven).

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok - so genau hab ich nicht nachgeschaut, da der Schaltplan etwas
unübersichtlich gezeichnet ist (keine Busse, sondern alle Leitungen
einzeln wuer durch) ...

A15 geht über ein Logikgatter (vorne ein Halbkreis dran - ich kenn die
Zeichen nicht) direkt an den /CE Eingang des SRAM.

Grüße Ralf

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun, die Beschreibung mit dem Halbkreis dran ist etwas waage...!
Die /CE-Leitung ist die Low-Aktive.

Interessanter für den Moment ist auch, ob da am Ausgang noch ein
kleiner Kreis dran ist (das heißt dann, das Signal wird nochmal
invertiert). Zur eindeutigen Identifizierung sollte da aber eine
Bauteilbezeichnung dranstehen.
Z.B. 74HCT00 wäre ein NAND-Gatter, also ein invertierendes UND-Glied.
In diesem Fall läge Dein RAM von 0x8000 bis 0xFFFF!

Aber im Prinzip gibt es ja auch nur diese beiden Möglichkeiten, die
könnte man ja mal ausprobieren.

(Nur so interessehalber, hat nichts mit der Lage des SRAM im Speicher
zu tun: Wohin führt der andere Eingang von dem Logikgatter?)

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist auf die selbe Leitung gelegt und am Ende ist tatsächlich noch ein
Kreis ...

Ich habe beide Versionen schon probiert - es funktioniert trotzdem noch
nicht ...

Grüße

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, hat sich erledigt. Du hattest Recht. Wenn ich das SRAM bei Base
0x8000 anlege, dann funktioniert es. Nur ist dann natrülich die Adresse
0x260 nicht im externen Ram patsch

Danke nochmals!

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Prima, daß es funktioniert und danke für die Rückmeldung!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.