Hallo, ich habe deine kleine Verständnisfrage. Wenn ich ein 64kByte SRAM extern Anschließe, ist die Adresse doch von 0000h bis FFFFh richtig? Wie lang können denn jetzt meine Daten auf einer Adresse sein? Was ist wenn diese länger sind? Danke und MFG
hängt von der Organisation des RAMs ab. Die 64kByte (nicht kBit?) werden entweder auf 1, 2 oder 4Byte große Blöcke verteilt. Dementsprechend brauchst du auch 8, 16 oder 32 Datenleitungen um die einzelnen Speicherzellen zu übertragen. Natürlich ist dann die Zahl der Adressleitungen auch unterschiedlich, bei 1Byte großen Blöcken brauchst du 16 Leitungen, bei 2Byte großen Blöcken 15 Leitungen und so weiter. Dementsprechend ist auch der Adressbereich unterschiedlich. 0xFFFF hast du bei 1Byte großen Zellen und 0x07FF dann bei 2Byte großen.
Kevin K. schrieb: > hängt von der Organisation des RAMs ab. Die 64kByte (nicht kBit?) werden > entweder auf 1, 2 oder 4Byte große Blöcke verteilt. Dementsprechend > brauchst du auch 8, 16 oder 32 Datenleitungen um die einzelnen > Speicherzellen zu übertragen. Natürlich ist dann die Zahl der > Adressleitungen auch unterschiedlich, bei 1Byte großen Blöcken brauchst > du 16 Leitungen, bei 2Byte großen Blöcken 15 Leitungen und so weiter. > Dementsprechend ist auch der Adressbereich unterschiedlich. 0xFFFF hast > du bei 1Byte großen Zellen und 0x07FF dann bei 2Byte großen. Danke schön, dass hat mir schon viel geholfen. Es bedeutet also, wenn ich von 0x0000 bis 0xFFFF 1 Byte legen kann brauche ich 16 Leitungen. Wenn ich aber 2 Byte je Speicher"zelle" nutzen will, gehts dann nur von 0x07FF. Blöde frage, wenn ich jetzt also 512kByte (ja ganz richtig) nehmen würde, an ein ATmega644 anschließe müsste ich also den Adressbereich von 0x8000 bis 0xFFFF nutzen können, bei 4 Adressleitungen, wieviele Daten passen dann auf eine Speicherzelle?
> wieviele Daten passen dann auf eine Speicherzelle?
..Du zäumst das Pferd von hinten auf. Such Dir einen Speicher der eine
Organisation hat die Du bedienen kannst und willst, schließ ihn an und
gut iss. Beim m644 - der keine Hardwareunterstützung für externen
Speicher hat - musst Du eh alles in Software machen. Da ist es dann egal
ob er x1, x4, x8 oder x16 ist, nur richtig(tm) bedienen musst Du ihn.
HTH und nix für ungut
Pie schrieb: > Wenn ich aber 2 Byte je Speicher"zelle" nutzen will, gehts dann nur von > 0x07FF. Was du nutzen willst ist dem SRAM egal. Das hat eine bestimmte Wortbreite (= Anzahl der Datenleitungen) und damit musst du dich abfinden. Brauchst du eine andere, musst du ein anderes SRAM kaufen.
g457 schrieb: >> wieviele Daten passen dann auf eine Speicherzelle? > > ..Du zäumst das Pferd von hinten auf. Such Dir einen Speicher der eine > Organisation hat die Du bedienen kannst und willst, schließ ihn an und > gut iss. Beim m644 - der keine Hardwareunterstützung für externen > Speicher hat - musst Du eh alles in Software machen. Da ist es dann egal > ob er x1, x4, x8 oder x16 ist, nur richtig(tm) bedienen musst Du ihn. > > HTH und nix für ungut Och Leute, dass ist nicht meine Frage, wenn ihr meine Fragen nicht beantworten WOLLT (ist okay), dann schreibt bitte nicht was ich evt. machen könnte. Ich will es verstehen!! Darum geht es mir hier.
Andreas B. schrieb: > Pie schrieb: >> Wenn ich aber 2 Byte je Speicher"zelle" nutzen will, gehts dann nur von >> 0x07FF. > > Was du nutzen willst ist dem SRAM egal. Das hat eine bestimmte > Wortbreite (= Anzahl der Datenleitungen) und damit musst du dich > abfinden. Brauchst du eine andere, musst du ein anderes SRAM kaufen. Wenn ich ein Latch nehme, kann ich doch so die Datenleitungen "verdoppeln" sag ich jetzt mal, stimmt das? Organisiert sich der Mikrocontroller mit so einem SRAM von selbst, wenn ich diesen entsprechend initialisiere?
> Organisiert sich der Mikrocontroller mit so einem SRAM von selbst, wenn > ich diesen entsprechend initialisiere? [repeat-mode]Beim m644 - der keine Hardwareunterstützung für externen Speicher hat - musst Du eh alles in Software machen. Da ist es dann egal ob er x1, x4, x8 oder x16 ist[/repeat-mode] Nix für ungut und EOD
Pie schrieb: > Wenn ich ein Latch nehme, kann ich doch so die Datenleitungen > "verdoppeln" sag ich jetzt mal, stimmt das? Aber wozu? Dann macht man einen Zugriff, speichert den im Latch, macht den zweiten, und liest dann. Nix gewonnen, man kann ja gleich die Daten ohne Latch lesen und dann zusammensetzen, sind genauso zwei Zugriffe. Die Adressleitungen halbiert man sich so auch nicht, man muss immer noch beide Hälften adressieren. Deshalb gibt es sowas auch nicht. Datenleitungen vervielfacht man, indem man mehrere Speicherchips (ausser den Datenleitungen) parallel schaltet. Genauso wie es auf den Speicherriegeln im PC gemacht wird.
Pie schrieb: > > Och Leute, dass ist nicht meine Frage, wenn ihr meine Fragen nicht > beantworten WOLLT (ist okay), dann schreibt bitte nicht was ich evt. > machen könnte. Deine ursprüngliche Frage macht im Zusammenhang mit einem Mega644 schlicht keinen Sinn, weil der kein externes Speicherinterface hat. Du kannst also gar keinen Adressbereich direkt nutzen. Du musst alles in Hardware und Software selber machen, und kannst daher alles so organisieren, wie du es gerne hättest.
Stefan Ernst schrieb: > Pie schrieb: >> >> Och Leute, dass ist nicht meine Frage, wenn ihr meine Fragen nicht >> beantworten WOLLT (ist okay), dann schreibt bitte nicht was ich evt. >> machen könnte. > > Deine ursprüngliche Frage macht im Zusammenhang mit einem Mega644 > schlicht keinen Sinn, weil der kein externes Speicherinterface hat. Du > kannst also gar keinen Adressbereich direkt nutzen. Du musst alles in > Hardware und Software selber machen, und kannst daher alles so > organisieren, wie du es gerne hättest. Und was ist mit dem 128?
Andreas B. schrieb: > Pie schrieb: >> Wenn ich ein Latch nehme, kann ich doch so die Datenleitungen >> "verdoppeln" sag ich jetzt mal, stimmt das? > > Aber wozu? Dann macht man einen Zugriff, speichert den im Latch, macht > den zweiten, und liest dann. Nix gewonnen, man kann ja gleich die Daten > ohne Latch lesen und dann zusammensetzen, sind genauso zwei Zugriffe. > Die Adressleitungen halbiert man sich so auch nicht, man muss immer noch > beide Hälften adressieren. Deshalb gibt es sowas auch nicht. > > Datenleitungen vervielfacht man, indem man mehrere Speicherchips (ausser > den Datenleitungen) parallel schaltet. Genauso wie es auf den > Speicherriegeln im PC gemacht wird. wozu bräuchte ich dann ein latch, generell mein ich
pie schrieb: > Und was ist mit dem 128? Dann kannst du vom externen RAM genau die Adressen benutzen, die nicht intern verwendet werden. Welcher Bereich das genau ist? Siehe Datenblatt. pie schrieb: > wozu bräuchte ich dann ein latch, generell mein ich Beim Mega128 brauchst du es, weil die Hälfte vom Adressbus und der Datenbus auf dem selben Port liegen. PS: Aber gibt es überhaupt 64kByte SRAM? Ich kenne nur 32kByte und 128kByte, oder halt 64kBit (8kByte).
Verstehe schon mehr danke sehr, 0x8000 bis 0xffff wären es dann, aber wie viel hab ich dann bei 512kByte pro Zelle? Mfg und danke
pie schrieb: > 0x8000 bis 0xffff wären es dann, Ne, glaube ich nicht. Ich bezweifle, dass beim Mega128 die ersten 32k intern belegt sind. pie schrieb: > aber wie viel hab ich dann bei 512kByte pro Zelle? Diese Frage macht mal wieder keinen wirklichen Sinn. Was meinst du mit "Zelle"?
pie schrieb: > wozu bräuchte ich dann ein latch, generell mein ich Sieh' dir mal das Datenblatt vom Atmega 128 an. Da gibt es die Leitungen AD0 - AD7. Das ist ein kombinierter Adress- Datenbus. Zuerst gibt der Controller die Adresse aus, die muss dann auf einem Latch zwischengespeichert werden, dann werden über dieselben Leitungen die Daten gelesen oder geschrieben. mfg.
Also ich will diesen Speicher zum Beispiel von 0x8000 bis 0xffff nutzen, wieviel Speicher habe ich pro Adresse, es wohl noch nicht klick gemacht
Pie schrieb: > Wie lang können denn jetzt meine Daten auf einer Adresse sein? Pro Speicherzelle genau 1 Byte. Wo ist das Problem?
Stefan Ernst schrieb: > pie schrieb: >> wieviel Speicher habe ich pro Adresse > > 1 Byte Wenn ich jetzt mehr als ein Byte reinschreibe, dann wird der Rest den nächsten Adressbereich geschrieben richtig?
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.