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
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
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.
Hast du den Adressbus des mega128 auch so konfiguriert, daß ALLE 16 Adressleitungen verwendet werden??? Gruß, Magnetus
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.