Forum: Mikrocontroller und Digitale Elektronik externes SRAM


von Ralf (Gast)


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

von Markus_8051 (Gast)


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

von Ralf (Gast)


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

von Markus_8051 (Gast)


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).

von Ralf (Gast)


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

von Markus_8051 (Gast)


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?)

von Ralf (Gast)


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

von Ralf (Gast)


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!

von Markus_8051 (Gast)


Lesenswert?

Prima, daß es funktioniert und danke für die Rückmeldung!

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.