Estaba leyendo la hoja de datos AT28C256 de atmel y dice que para una operación de escritura:
Un pulso bajo en la entrada WE o CE inicia un ciclo de escritura. La dirección está bloqueada en el borde descendente de WE o CE, lo que ocurra último. Los datos están bloqueados por el primer flanco ascendente de CE o WE.
Para una operación de lectura indica:
Cuando CE y OE son bajos y WE es alto, los datos almacenados en la ubicación de memoria determinada por los pines de dirección se verifican en las salidas.
Sin embargo, no he encontrado este tipo de documentación en la hoja de datos del ram estático 62256.
¿Este tipo de comportamiento solo funciona para ciertos chips ROM / RAM?
y también, ¿sería suficiente el siguiente circuito para acceder a la memoria sin contención de bus?
Y aquí está mi código para hacer E / S en el ram:
Para escribir:
CE equ P3.5
ADDR equ P3.7
MODE equ P1.7
IO equ P1
clr ADDR ;set high address switch line low
mov IO,#10h ;set high memory address
clr MODE ;switch to write mode
setb ADDR ;save high memory address and write decision into 74hc574
clr ADDR ;turn switch line low again
mov IO,#23h ;set low memory address
clr CE ;store low address (I'm relying on AT28C256 datasheet here...)
mov IO,#66h ;set data
setb CE ;store data
Para leer (donde tengo un problema):
CE equ P3.5
ADDR equ P3.7
MODE equ P1.7
IO equ P1
clr ADDR ;set high address switch line low
mov IO,#10h ;set high memory address
setb MODE ;switch to read mode
setb ADDR ;save high memory address and write decision into 74hc574
clr ADDR ;turn switch line low again
mov IO,#23h ;set low memory address
clr CE ;store low address and request reading
mov IO,#0FFh ;prepare for read within 1uS of lowering CE to prevent bus contention
setb CE ;disable read
Sé que el micro en este circuito está incompleto, pero por simplicidad, el cristal que usaré es de 20Mhz y el micro no está en modo de reinicio.
¿Podré salir adelante usando este circuito y el código de arriba para almacenar y recuperar datos de la memoria externa? ¿O no tengo más remedio que agregar un segundo conjunto de flip-flops octales o usar un microcontrolador más grande? Estoy tratando de mantener las cosas pequeñas.