Quiero poder programar una EEPROM Atmel AT28C256 a través de un Arduino Uno. No tuve la suerte de poder escribir/leer en él, así que recurrí a usar un chip SRAM para simplificar las cosas (la EEPROM puede estar en modo de protección contra escritura, por ejemplo).
Desde el Arduino estoy manejando 3 registros de desplazamiento SN74HC95N que están conectados en serie, lo que me permite escribir direcciones de 16 bits y 8 bits de datos. Hasta ahora todo bien, está funcionando bien y lo he verificado con un analizador lógico.
Sin embargo, intentar leer/escribir en SRAM no me da nada en la lectura. La hoja de datos para el chip está aquí , y parece ser un asunto bastante simple (de usar) que funciona con una gama relativamente amplia de voltajes.
Según mi multímetro, hay alrededor de 4,5 V entre VCC y GND, y tengo un límite de 100 uF para ayudar a suavizar las cosas. Todo esto está construido en una placa de pan y el esquema es lo que (espero) esperarías, simplemente estoy conectando la dirección (aunque las 4 líneas de dirección superiores están conectadas a tierra ya que mi EEPROM tiene menos pines que la SRAM) y líneas de datos y luego manejando las otras entradas del Arduino.
El código intenta escribir 8 bytes, con los valores 1-8 en la dirección 0-7. La salida del analizador lógico está debajo (solo se muestran las dos primeras líneas de datos, pero aún deberían mostrar la salida en la fase de lectura), con escritura a la izquierda y lectura hacia la derecha.
Los dos registros de desplazamiento para la dirección siempre tienen salida habilitada, el de datos está deshabilitado para operaciones de lectura para evitar la contención.
Por lo que puedo entender, estoy enviando las señales correctas, y la sincronización de los pulsos también parece ser correcta (un mínimo de 50 ns en CE y WE y el mío son 100 us). Esperaría ver dos pulsos de salida en el área resaltada arriba, pero claramente me estoy perdiendo algo. ¿Estoy haciendo algo obviamente mal con las entradas de control aquí o es más probable que se deba a mis habilidades electrónicas muy amateur? Puedo incluir código, pero espero que el resultado hable por sí mismo.
Creo que tal vez no esté deshabilitando los bits de datos de las salidas 74xx95, por lo que están luchando con las salidas de datos de RAM. Las salidas lógicas '0' tienden a ganar cuando un '0' y un '1' se transmiten simultáneamente a una línea de señal. Necesita un método en su circuito para flotar/deshabilitar/triestablecer sus salidas 74xx95 para que las salidas RAM puedan tomar el control.
Por el nivel de detalle que puedo ver en el trazo, se ve bastante limpio. Pero no hay suficiente resolución para ver lo que el CE y NOSOTROS estamos haciendo precisamente.
turbo j
Matt Lacey
tardate
Matt Lacey