-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: DRAM (Simm Modul) am Atmega8

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.02.2005
    Ort
    Freiburg
    Alter
    29
    Beiträge
    601

    DRAM (Simm Modul) am Atmega8

    Anzeige

    Hi!

    Da ich ja demnächst vor hab ein 640x400 Grafik Diplays anzusteuern braucht der µC Speicherplatz, viel Speicherplatz. Vor allem Ram.

    Das gute ist das ich eine Menge Speicherriegel und alte Mainboards auf dem Speicher rumliegen habe.
    Auf dem Mainboards befinden sich zwar SRAM 's die leichter anzusteuren sind als die alten Arbeitspeicher, aber die haben leider alle nur 32KB die gerade für eine Displays füllung reichen. [(640x400)- (32x89= 0 KB ]

    Also eignen sich für den Speicher am besten die alten DRAM Simm Module mit bis zu 16MB! 16Mb Riegel hab ich zwar keine rumfahren, dafür aber welche mit ca. 512 KB oder 1MB.

    Mit einem klienen selbsteglötetem Adapter hab ich das ganze auch gleich mit dem MyAvr Board getstet. zum testen, und weil der Atmega nicht so viele Ports hat, kann ich im Speicher nur einen kleinen Adressbereich auswählen, die restlichen Adresspins sind einfach auf Vcc gelegt.
    Das ganze funktioniert wunderbar!

    Jetzt kommt die eigentliche Frage:
    DRAM's muss man ja normalerweise auffrischen, zuerst hab ich das auch gemacht, doch nach ein paar Experimenten behält der Simm seinen Inhalt über 8 sec! In dieser Zeit wird wirklich in keiner Weise auf dem Ram zugegriffen was diese auffrischen könnte.

    Wie ist das möglich das dieser seinen Inhalt so lange ohne auffrischen behält? Ist das einfach nur Glück und für eine ernste verwendung zu unsicher oder hab ich da einen Spezialriegel mit Sram?

    Der Riegel ist, so weit ich weiß ein normales SIMM Modul.
    Zugriffszeit beträgt laut aufdruck 70ns von smti.


    Ich wert das ganze Projekt noch erweitern und dann wie immer eine kleine Beschreibung auf meiner Page veröffentlichen.

    Sollte es wirklich Interesse geben dann meldet euch bitte, dann werd ich vieleicht eine größere Anleitung dazu schreiben.

    Das ganze ist später dann auch für die Grafik Display ansteuerung gedacht, wobei man bis zu 16MB Ram auch für andere zwecke benutzen kann.


    Gruß,
    Mehto


    P.s.: Ich hoffe das ganze funktioniert morgen noch, immerhin ist das ganze erst heute Abend entstanden . Ich hoff auch das ich nicht noch irgend etwas wichtiges vergessen habe, ich dachte immer das die Rammspeicher aus dem PC nicht oder schwehr für den µC verwendbar wären.
    -

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.02.2005
    Ort
    Freiburg
    Alter
    29
    Beiträge
    601
    Wunder was, das Teil funktiniert heute noch, also war es kein Traum

    Ich ha jetzt noch ein paar Fotos gemacht.
    Da der Atmega8 ja nicht so viele Ausgänge hat hab ich ersteinmal nur die untersten drei Adressleitungen des Ram's angschlossen, die anderen 9 wurden auf Masse gelegt.
    Damit brauch ich für den Ram den Kommpleten PortD und die 6 Pins von PortB.

    An PortC hab ich einen Taster mit Pullup Widerstand und Led's zur Signal ausgabe.

    Die Testschaltung funktioniert folgender maßen:

    Zuerst werden zwei Bytes an das Ram geschickt.

    Dann wird ein Taster überprüft, und je nach zustand lieste der µC das erste oder das zweite Byte aus dem Ram und zeigt es an PortC an den Led's an.

    Dann wartet der µC kurz und überprüft wieder den Taster und gibt wieder das entsprechende byte aus.
    Es werden also keine Daten mehr an das Ram geschickt. Das erstaunlich ist jetzt das in den µC nicht auffrische muss.
    Ich werd mir mal einen Adapter mit einem Sockel basteln und dann mal verschiedene Simms ausprobieren.

    Der Code ist ganz simple programmiert, da kann noch einiges gekürtzt werden, aber für den Anfang reicht es.

    Mit den drei Adressleitungen komm ich übrigens bis 64 Byte externen Ram, das für Testzwecke voll ausreichend ist.
    Für die vollen 16Mb würde ich 12 Leitungen brauchen, das müsste ich dann aber mit einem Atmega32 oder mit einem ähnlichen µC machen.

    Gruß,
    Mehto


    Bildchen:





    Quellcode gibt es hier:
    http://home.arcor.de/svenlissel/elek...dram/DRAM1.ASM
    -

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    04.04.2005
    Ort
    Hamburg
    Alter
    29
    Beiträge
    826
    FETT!!!

    Die Idee find ich klasse. Ich hab im Keller auch noch so ne Dinger rum liegen.

    Also wenn ich mir mein 1. Robo baue, dann kommt da auch so ein Ram rein. Ob ihc ihn brauche oder nicht. hehe

    Ne, aber mal im Ernst. Ich hab im Netz schon gesucht, aber nicht wirklich was gefunden, wie man das Ding jetzt eigentlich anspricht oder anschließt. Hast du da mal Links für mich???

    Ihc hab nur eine Seite gefunden, wo die Eigenschaften meines Ram Riegels drauf stehen. (GM791000S-80)

    Allerdings wüsste ich nicht, wie ich es jetzt anshcließen sollte. Auch wenn ich es noch nicht kann, würde ich mir die Theorie doch gerne mal durchlesen.

    Andun
    www.subms.de
    Aktuell: Flaschcraft Funkboard - Informationssammlung

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.02.2005
    Ort
    Freiburg
    Alter
    29
    Beiträge
    601
    Hi!

    Ich hätt dir hier mal ein paar Links:
    http://mitglied.lycos.de/bk4/8051.htm
    und hier die Anschlussbelegung:
    http://www.ulrichradig.de/site/infos/pdf/SIMM.pdf
    Den Rest hab ich aus Büchern nachgeschlagen.

    Der Speicher braucht leider viele Pins und ist wenn er nicht wirklich gebraucht wird nicht zu empfehlen. es sei den du nimmst den Atmega 128, der hat 60 I/O's

    Je nach dem wie viel Speicher du benutzen möchtest brauchst du mehr oder weniger Pins. Der ram hat 12 Adresspins für 16.777.216 Byte, wenn du aber z.b. nur 65.536 Byte brauchst benötigst du nur 8Pins und legst die anderen auf Masse.

    Ausrechnen kanst du dir das so:

    2 hoch (Pinzahl) *2 (Adresse ist gemultiplext)= verfügbare Bytes

    Aber wie gesagt müssen Drams normalerweise Aufgefrischt werden, bei klappts aber auch ohne.
    Ich nehm an das die Spannung der kleinen Kondensatoren doch länger als 10ms sich hält und beim lesen nach ca. 5 sec immernoch hoch genug um als High erkannt zu werden. Beim lesen erfolgt übrigens so weit ich weis automatisch eine Auffrischung.

    Gruß,
    Mehto
    -

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    04.04.2005
    Ort
    Hamburg
    Alter
    29
    Beiträge
    826
    Ah. OK. Danke.

    Ich sehs mir mal an.
    www.subms.de
    Aktuell: Flaschcraft Funkboard - Informationssammlung

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.02.2005
    Ort
    Freiburg
    Alter
    29
    Beiträge
    601
    So, ich hab jetzt nochmal einen Adapter mit Sockel gemacht, dadurch kann ich die Rams auch austauschen.

    Von 6 Ram's gine einer nicht und ein anderer nicht zuverlässig. Die anderen gingen beim kurztest aber einwandfrei, trotz des beim Test sehr langsammen Auffrischen von ca. 200ms, wobei da einfach nur gelesen wurde und nicht speziell aufgefrischt wurde.
    Ich werd morgen mal schauen wo denn die absulute Grenze liegt bei der die Rams ihren Inhalt "vergessen".

    Wäre schön wenn mir jemand noch sagen könnt warum die Riegel auch mit kaum Auffrischen so gut funktionieren.

    Hier noch zwei Bilder vom Adapter. Das Auslöten des Sockels war eine ganz schöhne Arbeit, ist vieleicht besser wenn man den irgendwo kauft anstatt aus alten Mainboards auszulöten .





    Gruß,
    Mehto
    -

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    16.04.2005
    Ort
    Milwaukee
    Alter
    37
    Beiträge
    13
    @Metho: Du hast Recht, die Information ist sehr fluechtig und muss aufgefrischt werden. Allerdings haben meiner Information nach die Speicherriegel intern einen Mechanismus, der das uebernimmt.

    Gute Idee uebrigens!

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.08.2004
    Ort
    bw-germany
    Alter
    39
    Beiträge
    272
    die SIM sockel gabs mal beim Conrad ...

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo.
    will mich auch mal einmischen,
    wegen dem Refresh,
    ich hab auch gleich meinen 386er ausgegraben

    Welche Beschriftung haben deine SIMMs ?
    Wenn ein Refresh nötig ist, gibts da auch verschiedene Tricks, um nicht immer alle Bytes komplett anzusprechen und trotzdem zu refreshen, geht dann auch schneller. Es gibt auch ICs die sich selbst refreshen, wenn man dieses anstösst.
    Wenn man nach der Pinbelegung der Speicher-ICs sucht, findet man auch die unterstützten Refreshmethoden, gibt ja so allerhand davon.

    PS:
    Ich hab zu 286er Zeiten da schon mal mit rumprobiert, und den refreshtimer soweit hochgestellt, das im Prinzip fast nicht mehr refresht wurde, und es klappte immer noch alles, da wird dann die CPU schneller (bei 25MHz merkte mans noch, weil die CPU selbst refreshte), allerdings war der Transfer zur HD langsamer.

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.07.2005
    Ort
    Fröndenberg
    Beiträge
    105
    War das nicht irgendwie so, das bei jedem Zugriff auf die Speicherriegel, die Riegel sich selbst refreshten? Und damit bei dem Refresh - Vorgang nichts durcheinander kommt gibt es ja die Waitstates. Und ich kann mir gut vorstellen das eine interne Logik immer wieder auch ohne Zugriff einfach refresht um den Inhalt zu halten. Weil es kann ja sein das in einem Bereich Datenliegen, die man wirklich mal mehrere Sek nicht ansprechen muss von seinem Prog. Die dürfen ja auch nicht verfallen.

    Bei Fehlern nicht schlagen!

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •