Forum: Mikrocontroller und Digitale Elektronik Externer Speicher ATMega128 Problem


von Debugger (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich versuche schon seit Tagen vergebens den Fehler in meiner Schaltung 
zu finden. Das Problem liegt beim externen Speicherinterface. Ich 
Schalte mit der höchsten Adressleitung das Chip Enable Signal für das 
SRAM und die Restlichen anschlüsse sind im Schaltbild zu sehen.

Nach der initialiserung des Speichers mit:

MCUCR =   ( ( 1 << SRE ) | (1 << SRW10)  );

kann ich sogar auf diesen ab adresse 0x1100 zugreifen.

Ab Adresse 0x2000 jedoch ist der Speicher immer wieder in 8 KBlöcken 
gespiegelt. D.H. der Speicherinhalt wiederhohlt sich bei Adresse 
0x6000.Jedoch sind die Adressen 0x1100 bis 0x1fff nicht gespiegelt.
Ab adresse 0x8000 besteht kein zugriff mehr, da dieser Bereich durch 
eine Externe Logik und der höchsten Adressleitung ausgeblendet ist.

Was ist an dieser Schaltung nicht Korreckt (siehe schaltbild)
Macht es was aus die Adressleitungen (so wie im Schaltplan) wild 
durcheinander zu würfeln und beliebig am RAM anzuschließen?

ich weis einfach nicht mehr weiter

Danke

von Michael U. (Gast)


Lesenswert?

Hallo,

die Adress- und Datenleitungen kannst Du durcheinanderwürfeln, das ist 
einem statischen Ram egal.

Ram zu langsam? Mal Waitstates eingeschaltet?

100n an AVR, Ram, Latch?

Ansonsten such den Kurzschluß in der Verdrahtung wäre meine Vermutung...

Daß der 62256 ein 6264 ist, will ich jetzt nicht vermuten. ;)

Mehr fällt mir gerade nicht ein.

Gruß aus Berlin
Michael

von Debugger (Gast)


Lesenswert?

Hallo,

nach Kurzschlüssen hab ich schon gesucht, und alles nochmal nachgelötet.

auf dem RAM steht: BS62LV256SC-70
auf dem LATCH: 74HC573D

Waitstates habe ich auch schon probiert, aber schreiben im Memorywindow 
klappt ja. Nur es wird eben gespiegelt.

von Magnus Müller (Gast)


Lesenswert?

Hast du den Adressbus des mega128 auch so konfiguriert, daß ALLE 16 
Adressleitungen verwendet werden???

Gruß,
Magnetus

von Debugger (Gast)


Lesenswert?

Die ganze konfiguration steht oben:

MCUCR =   ( ( 1 << SRE ) | (1 << SRW10)  );

mehr mache ich nicht bei der initialisierung

es werdenstandartmäßig alle Adressleitungen benutzt.
Wenn man dass nicht will muss man was am XMCRB Register drehen

von Michael U. (Gast)


Lesenswert?

Hallo,

Datenblatt vom Ram sieht wie üblich aus, das sollte also gehen.

Bei Rams weiß man ja leider nicht, wo er wirklich hinschreibt, da 
könntest Du höchtes komplett mit der jeweiligen Adresse in H/L 
aufeinanderfolgend beschreiben und dann auslesen, was wirklich drin 
ankam.
Mit üblichen Mustern über ein paar Byte merkst Du unter Umständen 
nichtmal, wenn Du woanders liest als Du schreibst.

Wie schnell ist Dein AVR getaktet? Wenn langsamer was ändert, würde es 
auf Timingprobleme beim Zugriff hindeuten. Sonst lasß das 
Memoryinterface aus, setze die Ports per Programm und schau, ob die 
Signale wirklich am Ram ankommen...

Gruß aus Berlin
Michael

von Debugger (Gast)


Lesenswert?

Das mit dem ausgeschaltenen Memoryinterface ist eine gute Idee. werd ich 
mal nachmessen ob HIGH und LOW sowohl bei Daten als auch bei Adressen 
ankommt ;)

Grüße nach Berlin von Stuttgart

von Debugger (Gast)


Lesenswert?

Hallo nochmal,
hab den Fehler gefunden Adressleitung 14 hatte einen kurzschluss.

Danke für eure Hilfe

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.