¿Qué microcontrolador usar para controlar el arpegiador Yamaha YM2612?

1

Bueno, chicos, busqué en el foro y no encontré nada relevante. Aquí está:

Estoy planeando construir un proyecto de arpegiador basado en el Yamaha YM2612 IC, que fue el chip de sonido utilizado en la consola Sega Genesis. Ordené los chips en línea y los espero pacientemente para que lleguen aquí, y mientras tanto investigo todo lo que puedo para averiguar qué debo hacer para que este proyecto funcione.

Mi pregunta es: ¿cuál de estos microcontroladores sería el mejor para usar en este proyecto? (Estos son los microcontroladores que ya tengo, aunque podría comprar otro si ninguno de los que tengo). funcionará)

* -Arduino Uno R3

-PIC 18

-Raspberry PI

-Arduino Nano

-Teensy x.x * (No soy dueño de uno de estos, pero esta puede ser la mejor opción basada en otros proyectos que he visto.)

Supongo que el PIC18 sería el mejor para usar ya que podría programarlo en lenguaje ensamblador, pero ahora estoy empezando a aprender el lenguaje ensamblador y C sería mucho más fácil para mí. Vi a un chico en YouTube que estaba usando un Arduino Uno que construyó un proyecto como este y no funcionaría correctamente, y sospechaba que se debía a problemas de latencia, por lo que tal vez el Arduino esté fuera. Cualquier ayuda aquí es bienvenida.

Para un poco de información sobre el YM2612, es un chip de síntesis FM de 6 canales con 4 operadores que puede enrutarse en 8 configuraciones diferentes. Utiliza el intercambio de datos para escribir valores en su registro interno para alterar parámetros como ataque, decaimiento, sostenido, lanzamiento, frecuencia, amplitud, etc. Se sugiere operar a una frecuencia de 7.67 MHz y por eso estaba planeando usar un cristal de 8 MHz Oscilador (resonador) para proporcionar el reloj. Eventualmente, integraré este proyecto con un teclado que emite datos midi (o incluso pasando por alto midi, simplemente usando el microcontrolador para controlar el chip manualmente), así que dejaré este proyecto abierto para más cambios / revisiones.

También este es mi primer proyecto de este tipo, sé que podría considerarse un gran bocado, pero estoy aquí para aprender. Cualquier ayuda es bienvenida, gracias chicos

P.S. Aquí hay una hoja de datos para el YM2612: - enlace

... y aquí hay un video de algo similar: - enlace

    
pregunta user108391

1 respuesta

2

YM2612

Este chip fue diseñado para ser utilizado como un periférico para CPU de 8 bits que se ejecutan en un puñado de MHz. Cuando miras la "hoja de datos" (solo un pinout, en realidad), encontrarás que hay tres grupos de pines de los que tienes que preocuparte:

  • D 0 a D 7
  • Pines de control (CS, WR, RD, A 0 , A 1 )
  • IRQ

El bus de datos es bidireccional, los pines de control son solo de entrada y el IRQ es solo de salida. Es obvio que este chip fue diseñado originalmente para ser asignado en el rango de direcciones de una CPU de 8 bits, pero ninguno de los dispositivos que tiene en su lista puede hacerlo (a mi entender).

Lo que necesitas

Hay dos características que deseas en tu tablero que te harán la vida más fácil, y esto excluye algunas de ellas:

  • 5V I / O para que pueda conectar la placa directamente al chip, sin tener que preocuparse por la conversión de nivel.
  • Al menos un puerto bidireccional de 8 bits completo para que pueda escribir valores directamente sin tener que dividir sus datos y escribirlos varias veces.
  • 6 pines más para las señales de control

Esto elimina la Raspberry Pi, el Arduino Nano y algunos de los tableros Teensy, y deja el Arduino Uno, el PIC y algunos Teensy más antiguos.

Consideraría que estos tres son más o menos adecuados para su propósito. El problema de latencia que insinuó es probablemente un error de novato, tratando de usar algunos retrasos de software en el Arduino. Eso no funcionará para estas cosas, necesita un temporizador de hardware estable para sincronizar cada escritura. Puedes hacer esto con el IDE integrado de Arduino.

Sugerencia

Teniendo en cuenta que ya tiene un PIC y parece saber cómo programarlo en ensamblaje (incluso si todavía no se siente cómodo al hacerlo), sugeriría que esta es su mejor opción por varios motivos:

  • Nada le impide programar la mayor parte de ella en C usando MPLAB X, tal vez usando una combinación de rutinas de ensamblaje donde crea que es necesario.
  • Tiene los temporizadores y los mecanismos de interrupción necesarios.
  • Ya tienes uno.
  • Dependiendo del PIC, es posible que pueda usar su salida de reloj interno F OSC / 4 como su reloj de 8 MHz.
respondido por el pipe

Lea otras preguntas en las etiquetas