Programación de la Nintendo DS
English version
blog
Ésta es mi página sobre programación de la Nintendo DS.
A menos que se indique lo contrario, todos los códigos fuente C de aplicaciones para la NDS que hay en esta página se basan en la toolchain devkitPro, basada en herramientas GNU.
avelinoherrera@gmail.com
Software
- DS Delay Line es una sencilla aplicación de línea de retardo. Retrasa la señal de entrada del micrófono hacia los altavoces. El tiempo de retardo puede ser ajustado entre 0 (sin retardo) y 7.8 segundos. Descargas: código fuente y rom (corregido un bug asociado a la sincronización de tiempo).
Hardware
- Utilizando un optoacoplador 6N136, una resistencia de 200, otra de 4K7 y un diodo 1N4148, se puede construir un interface MIDI para la DSerial Edge.
- Utilizando un latch 74HC373 y una puerta lógica NAND (1/4 74HC00) he hecho un pequeño puerto de salida de propósito general (GPO) a través del SLOT-2. Cuando se accede a las direcciones de memoria de la SRAM (0A000000h) se activa /CS2 y los bits A16..A23 se usan como bus de datos (D0..D7) mientras que los bits A0..A15 se utilizan como bus de direcciones (más info aquí). En mi caso sólo se ha cableado A16 (D0) y se ha ignorado el bus de direcciones.
Se puede modificar el circuito para que sólo necesite un biestable D. He utilizado el 74HC74 (un biestable D con disparo en el flanco de subida) conectando /CS2 a la entrada de reloj y A16 (D0) a la entrada D, de esta manera no es necesaria ninguna puerta adicional para latchear el bit. La única limitación es que sólo tenemos un bit de salida (suficiente para construir la interface MIDI out :-)
Para acceder a la SRAM debemos decirle a la DS con cual de los dos procesadores vamos a hacerlo (el ARM7 o el ARM9): Hay que utilizar
WAIT_CR &= ~ARM7_OWNS_ROM
si queremos acceder a la SRAM desde el ARM9 o WAIT_CR |= ARM7_OWNS_ROM
si queremos hacerlo desde el ARM7. Si escribimos en la memoria SRAM con *SRAM = data
(ver la libnds) enviaremos datos a través del latch del circuito. NOTA: El 74HC373, el 74HC00 y el 74HC74 *DEBEN* ser los modelos HC debido a que el voltaje de alimentación es de tan solo 3V3.
- Partiendo del circuito anterior y modificando algunas resistencias es posible implementar un interface MIDI de salida controlado por software. En la siguiente figura puede verse el esquema de un interface MIDI out básico.
El código de ejemplo utilizado para comprobar la interface está aquí. La parte de comunicaciones está implementada en el ARM7, mientras que el ARM9 es el que se encarga de mandar a través de la FIFO los mensajes MIDI a enviar.
Enlaces
This work is licensed under a Creative Commons License.