PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einige theoretische Fragen zum externen Speicher sram und dem mega128



Daniel002
09.04.2011, 20:46
Hallo,

ich wollte nur mal rein theoretisch fragen, ob ich das alles so richtig verstanden habe (es interessiert mich einfach):

Wenn ich ein mega128 an ein sram 512 kByte anschließe, benötige ich ein latch richtig?

Der Adressbreich ist dann von 0x8000 bis 0xFFFF richtig?

Wie groß ist eine Adresse? Ein Byte?

Was ist wenn ich mehr reinschreiben würde? Ginge das?


Kann ich nur 64kByte ansprechen und muss dann umschalten? Das habe ich nicht so ganz verstanden.

Vielen Dank für die Antworten.

MFG

Vitis
10.04.2011, 10:29
Du kannst an den ATMega im Prinzip so viel SRAM anschließen wie Du IO-Pins hast und die ließen sich noch per Portexpander I2C oder SPI nochmal kräftig
aufblasen. Ob Du das brauchst ist wider was Anderes.

schau mal da:

http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=65026&highlight=external+ram

WL
10.04.2011, 10:29
Wenn ich ein mega128 an ein sram 512 kByte anschließe, benötige ich ein latch richtig?
Richtig, die unteren 8 Adress-(/Daten)leitungen über das Latch an das SRAM.


Der Adressbreich ist dann von 0x8000 bis 0xFFFF richtig?
Nein.
Aus dem Datenblatt lese ich 0x2200-0xFFFF


Wie groß ist eine Adresse? Ein Byte?

?????? (Ja)


Was ist wenn ich mehr reinschreiben würde? Ginge das?
Prinzipiell ja. Dein Ram hat ja 512kB (s.u.) !


Kann ich nur 64kByte ansprechen und muss dann umschalten?
Nicht 64 kB (s.o.) !
Umschalten und verwalten der Blöcke mußt Du selbst (>A16). ;)

BASTIUniversal
10.04.2011, 10:56
Hallo!
Ich denke, die meisten deiner Fragen wurden schon hier erörtert: http://www.mikrocontroller.net/topic/214891


mega128 an ein sram 512 kByte

Dann kannst du nur 60kx8 = 60kByte davon nutzen.


benötige ich ein latch

Du brauchst für jedes SRAM größer 256x8 = 256Byte ein Latch. Näheres findest du im Datenblatt des Mega128 ab Seite 25.


0x8000 bis 0xFFFF

Laut Datenblatt 0x1000 bis 0xFFFF


Wie groß ist eine Adresse? Ein Byte?

Ja. Beim XMEM Interface des Mega128 auf jeden Fall.


Was ist wenn ich mehr reinschreiben würde? Ginge das?

Wie willst du das anstellen? Du kannst nur 8Bit auf eine Adresse schreiben. Wenn du zwei mal 8 Bit auf die selbe Adresse schreibst, dann hast du am Ende nur die letzten 8 Bit gespeichert. Der Rest ist verloren.


Kann ich nur 64kByte ansprechen und muss dann umschalten?

Du kannst die 4kByte internen SRAM plus maximal 60kByte externen SRAM ansprechen. Da gibt es nichts zum Umschalten...mehr als 64kByte kann der Mega128 einfach nicht verwalten.
Bei einem 512kByte Baustein würden die restlichen 452kByte einfach unbenutzt bleiben.

Gruß
Basti

P.S.: Drei Experten, fünf Meinungen...so wie sich das gehört :D

Daniel002
10.04.2011, 11:00
Danke an alle, stimmt das wirklich das dann 452 kByte ungenutzt blieben? Okay...

BASTIUniversal
10.04.2011, 11:09
Ja, der Mega128 kann nur 64kByte über XMEM bedienen. Und 512kByte - 64kByte sind laut meinem Taschenrechner 452kByte.

TobiKa
10.04.2011, 11:11
Und 512kByte - 64kByte sind laut meinem Taschenrechner 452kByte.
Dann funktioniert dein Taschenrechner nicht richtig, sind 448kB ;)

WL
10.04.2011, 11:44
Du kannst die 4kByte internen SRAM plus maximal 60kByte externen SRAM ansprechen. Da gibt es nichts zum Umschalten...mehr als 64kByte kann der Mega128 einfach nicht verwalten.

Richtig, der Mega128 hat 4kB intern (ich habe versehentlich beim 1280 geschaut). :(
Richtig, der Mega128 kann nicht mehr als 64kB verwalten, ABER DU KANNST:

Wenn man A15/A16 und folgende an freie Portleitungen anschließt und "von Hand" umschaltet geht es sehr wohl..............
Allerdings muß man dann höllisch aufpassen in welche Bank man dann schreibt / liest. ;)

BASTIUniversal
10.04.2011, 11:44
Ah...natürlich, mein Fehler. 4kByte kommen natürlich vom internen SRAM:
512kByte - 60kByte = 452kByte unbenutzt

:D

Daniel002
10.04.2011, 12:37
Richtig, der Mega128 hat 4kB intern (ich habe versehentlich beim 1280 geschaut). :(
Richtig, der Mega128 kann nicht mehr als 64kB verwalten, ABER DU KANNST:

Wenn man A15/A16 und folgende an freie Portleitungen anschließt und "von Hand" umschaltet geht es sehr wohl..............
Allerdings muß man dann höllisch aufpassen in welche Bank man dann schreibt / liest. ;)

ACH so :) aber wie schalte ich denn dann um? Ich habe 2 Leitungen und dann könnte ich doch nur auf 4 von 64kByte Blöcken zugreifen oder raff ich hier wieder was falsch? (bestimmt sogar :) )

ps. DANKE an alle!!

WL
10.04.2011, 13:07
ACH so :) aber wie schalte ich denn dann um? Ich habe 2 Leitungen und dann könnte ich doch nur auf 4 von 64kByte Blöcken zugreifen oder raff ich hier wieder was falsch? (bestimmt sogar :) )

..........................:(

:)
Wenn Du das Ram optimal ausnutzen willst:
32kB Blöcke (damit bist Du sicher im 64kB-Raum des Mega128 und "verschwendest" nichts.
Organisation 16x 32kB, die Adressleitungen 0...7 über Latch an PA0...7.
Die Adressleitungen 8...14 an PC0...6 .
Die Adressleitungen 15, 16, 17 und 18 an einen Port Deiner Wahl (4Bit=16 Bänke).

PICture
11.04.2011, 22:53
Hallo!

Von SRAM gesehen, zum Schreiben/Lesen muss nur volle Adresse statisch stehen, egal wie das erzeugt wird (z.B. mit Schieberegister). ;)

Vitis
12.04.2011, 08:44
Vor Jahren hab ich mal in einem Projekt 1MB EDO-Riegel an nen Mega32 genagelt, klar, direkt adressieren per XMEM geht nicht, aber zu Fuß die Leitungen setzen per Schieberegister oder I2C Portexpander geht problemlos.