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