Hallo zusammen,
ich habe ein (für mich) merkwürdiges Phänomen beim Ansteuern des 4K
Microwire EEPROMs 93C66A.
Problem: Beim Lesen jedweder Adresse (0x0000 bis 0x01FF) kommt nur das
Dummy Bit vom EEPROM zurück, der Rest ist high Pegel (also 0xFF) - trotz
eingeschriebener Test-Daten.
Ich habe das Datenblatt gelesen und mich an den Timing Diagrammen
orientiert. Außerdem kann ich das EEPROM in einem Programmer Lesen und
Beschreiben. Den Output Pin überwache ich mit dem Oszilloskop gemeinsam
mit der Clock.
Ich nutze ChipSelect (CS), Clock (SC) und DataIn(SD)/Out(SQ) in Software
und verwende den 8bit Modus (ORG Pin=0).
Die standard Pegel (zwischen allen Routinen) sind bei mir: CS=0, SC=0,
SD/SQ=1 (IN/OUT sollen später über ein Leitung).
An die Timings für stabile Pegel habe ich mich auch gehalten. Die
Wartezeiten führe ich hier mal nicht auf.
Zum Auslesen verwende ich das folgende Schema lt. Datenblatt:
CS=1 //start, Data ist bereits high, clock ist low
[schleife über 12 bit: 1start+2opcode+9adr]
SD=bit nummer x //wert setzen. beginnend mit dem start bit
SC=1 // clock generieren
SC=0
[schleifen ende]
[schleife über 8 clock zyklen]
SC=1 // clock generieren
result=SQ //lesen (und ignorieren)
SC=0
[schleifen ende]
SD=1 // standard pegel
CS=0 // ende
Auf dem Oszi kann ich die Clock gut erkennen und auch die hingesendeten
12 Datenbits. Genau beim schreiben des letzen Adressbits (LSB) antwortet
das EEPROM erwartungsgemäß mit der Dummy "0". Danach geht der Pegel
wieder hoch und bleibt dort während der letzen 8 Clock Phasen in denen
eigentlich der Speicherzellen Inhalt übermittelt werden sollte.
Das sieht ungefähr so aus:
SC 01010101010101010101010101010101010 clock
SD 1 1 0 0 0 0 0 0 0 0 0 0 X X X X X X data in
SQ 11111111111111111111111001111111111 data out
^start bit ^letztes adress bit
^opcode 2bit ^dummy "0" zurück
^MSB adresse 9bit ^hier sollte die antwort kommen
Da ich in alle Speicherzellen überprüfbar (Programmer) die Werte 0xAA
geschrieben habe, kann bei ordnungsgemäßer Funktion doch eigentlich nur
ein Adressierungsproblem vorliegen?!
Ich rufe meine READ routine ja schon in einer Schleife von 0 bis 1FF auf
und beobachte das Resultat auf dem Oszi.
Unabhängig davon auf welcher Flanke die Bits vom Chip kommen (im DB
steht steigend) sehe ich den Pegel ja unverändert bei log. 1.
Anbei noch ein 'Bild' vom Versuch den Speicherwert an der Stelle 10
(0x000A) auszulesen.
Für Hinweise wäre ich wirklich dankbar.