RAM externa para ATmega128

Quienes estén familiarizados con la línea de microcontroladores AVR de 8 bits de Atmel ya deberían saber que algunos de ellos tienen soporte para RAM externa. Pero, ¿alguna vez has usado esta función? no tenemos Ahora puedes aprender cómo se hace leyendo esta guía. Afecta a todo el hardware, pero no permanece en él. En su lugar, obtendrá los antecedentes que necesita sobre cómo escribir, leer y probar un módulo externo como el que se muestra en la imagen de arriba. La rutina de prueba muestra cómo asegurarse de que todo funcione correctamente con su asignación de memoria antes de comenzar a desarrollar firmware en torno a esta mayor capacidad.

[Thanks Spman]

  • papadio dice:

    ¡Gran trabajo!

  • BiOzZ dice:

    Puedo encontrar algunos usos para esto.
    cómo hacer que grabe una gran cantidad de datos realmente más rápido que tirarlos en una tarjeta SD más tarde

  • Marco faltante dice:

    Esto también podría usarse como una interfaz FPGA mapeada en memoria.

  • Hombre sabio dice:

    Una publicación imprescindible sobre cómo es esto, a qué ha llegado Hack a Day.

  • Nocturno dice:

    Hace dos semanas, esto me hubiera sido muy útil. Bueno, más vale tarde que nunca.

  • Jorge dice:

    ¿Está mal que lo primero que noté fueron las gorras de electrólisis de Yageo, y que mi primera reacción a eso fue "ew"?

    De todos modos, esto es realmente sorprendente, sobre todo porque recuerda a las computadoras del año anterior, cuando unos pocos cientos de KB de RAM venían en placas no muy diferentes a eso.

    Agregue una interfaz de teleimpresora avr-> y estará en camino a la potencia informática de principios de la década de 1970. 🙂

  • Brian dice:

    @Georgo

    No exactamente. El AVR puede funcionar a 20 MHz, mientras que las máquinas de la era de los 70 tendían a ser un tercio de eso, tal vez menos.

    Sin embargo, también lo pensé. No solo por el recuerdo, sino por el tamaño de la placa.

  • mike szczys dice:

    @MissingFrame: ¿Puede ampliar ese comentario? No entiendo a qué te refieres, pero me interesa.

  • cris dice:

    Mientras pensemos retro, en lugar de simplemente expandir la RAM a algo que encontraría integrado en una mejor MCU; ¿Por qué no agregar algunas líneas de E/S adicionales y un conmutador de banco para 128 KB o más? 😉

  • RadBrad dice:

    ¡Gran trabajo! ¡NUNCA puedes tener suficiente RAM! Y si no le importa un poco de soldadura fea, la SRAM de 512K es fácil de colgar en AVR sin PCB...

    http://www.lucidscience.com/pro-vga%20video%20generator-1.aspx

    ¡Hola!
    Puntilla

  • RadBrad dice:

    Lo siento, tengo la intención de vincular a la foto de la SRAM 512K aquí ...

    http://www.lucidscience.com/projects/VGA%20Video%20Generator/24.jpg

    Puntilla

  • Jons dice:

    Bella! Desearía que la interfaz con una memoria de 32 bits de ancho fuera tan simple.

  • anufaq dice:

    > Publicación obligatoria sobre cómo es esto' a quién 'llegó' Hack a Day.

    jajaja publicación obligatoria de "no hackear" 😛

    sobre el tema - se ve genial 🙂

  • electroforesis dice:

    gracias a dios no hay arduino ahi arriba en la foto
    🙂

  • dice dice:

    @Mike Szczys

    Los accesos a la memoria externa están bien documentados en la hoja de datos. En resumen, la MCU emite el valor de la dirección y una señal de "lectura"; o, en caso de escrituras, los valores de dirección y datos y la señal de “escritura”. Los FPGA, CPLD e incluso la lógica discreta pueden descifrar la dirección y asignarla a alguna función.

    Por ejemplo, algunos puertos de E / S "remotos" más :): una buena adición cuando el bus externo ha consumido todas las E / S nativas pero quedan muchos pines y memoria en el FPGA.

    Otro ejemplo: un simple decodificador de direcciones discretas es todo lo que necesita un UART externo (clon 16550A). Tiene 8 registros internos los cuales son tratados con 3 pines A0...A2. El decodificador debe comparar A15 ... A3 del bus externo con alguna constante y dirigir esto a un pin de "selección de chip" adecuado del UART. A0 ... A2, RD, WR de la MCU se pueden usar directamente. Así todas las lecturas/escrituras en las direcciones base + 0... base + 7 irán a la UART.

    Por supuesto, esto requiere un tutorial. Desafortunadamente ya no tengo esa tabla evolutiva casera, y la teoría desnuda es difícilmente convincente.

  • Marco faltante dice:

    @Mike Szczys

    Saimhe hizo un gran trabajo al explicarlo. Realmente, si solo necesita más RAM en una MCU pequeña, solo obtendrá una mayor parte. Lo que hace esto posible es la arquitectura de E/S mapeada en memoria más abierta de las típicas computadoras de 8 bits de antaño.

    Supongo que estaba unos pasos por delante en esos pensamientos, crear una interfaz FPGA para una MCU puede ser muy efectivo para que se vea como SRAM. Especialmente a veces si tiene un búfer SRAM real en el FPGA.

  • Andy dice:

    Sí, un proyecto en el que estaba pensando recordaría mapear las BRAM de Xilinx Spartan para que apareciera como una memoria externa en USB AVR.

    Esto permitiría un adaptador multi-universal de USB a DMX con buen rendimiento: básicamente toma los datos USB entrantes, los descarta en la "RAM externa" (realmente FPGA-BRAM autoasignados), y el hardware en el FPGA enviaría los 512 bytes como un universo DMX en un pin de salida.

    Probablemente podría tener de 8 a 16 universos con buenas frecuencias de actualización sin ningún protocolo de E/S.

    Desafortunadamente, los AVR USB que admiten XRAM no tienen muchas buenas placas basadas en ellos. La mayoría de las personas que ofrecen placas USB AVR ofrecen dispositivos más pequeños (como el 32U4) o han hecho algo para inutilizar la interfaz XRAM.

  • DarkFader dice:

    char iom_buffer[256] __atributo__ (sección (“.noinit”));
    FIFO de salida de depuración de red, FIFO de socket, FIFO de reproducción de audio, búfer de protocolo de eventos, búfer de escritura de tarjeta SD ... lo principal principalmente porque no desea poner tantos atributos en el código.

  • cantido dice:

    Como han dicho otros, esto es más interesante para los periféricos de memoria que simplemente conectarlos a SRAM.
    Con algunos pines GPIO para selecciones de parches o alguna lógica de decodificación de direcciones, puede conectar periféricos externos con un buen bus de datos grueso. Por ejemplo, podría controlar algunos de los chips de interfaz de red RTL, generadores de canciones programables... si realmente lo desea, probablemente podría ejecutar una interfaz ISA y controlar tarjetas gráficas y de sonido de la vieja escuela.

  • cantido dice:

    Oh, olvidé algo... no hay nada que te impida conectarte desde esos bloques SRAM + Battery NVRAM... o tal vez FRAM.

Nora Prieto
Nora Prieto

Deja una respuesta

Tu dirección de correo electrónico no será publicada.