Hola!
Antes de nada presentarme educadamente: soy nasgar e intento aprender a programar con las ndslib.
Estoy pegandome ahora con las fifo y las interrupciones , pero no consigo que me interrumpa y no se por ke.
Esto es lo ke he logrado asta ahora y no me interumpe:
#include
#include
#include "nds/arm9/console.h"
#include
#include
#include
//Activa la fifo del 9 y las interrupciones
void InitFifo(void)
{
REG_IPC_FIFO_CR = (IPC_FIFO_RECV_IRQ |IPC_FIFO_ENABLE );
}
//Recive los mensages del 7
void FifoReciveHandler(void)
{
u32 Data;
Data = REG_IPC_FIFO_RX ;
printf("DATOS RECIVIDOS:%i" ,Data);
}
//MAnda un mensage cuando se pulsa una tecla
void KeyHandler(void)
{
static u32 datos =1;
printf("ARM9 boton pulsado enviando: %i",datos);
REG_IPC_FIFO_TX= datos;
if (REG_IPC_FIFO_CR & IPC_FIFO_ERROR) printf("Error al enviar");
}
int main(void)
{
powerON(POWER_ALL);
InitFifo();
videoSetMode(MODE_0_2D | DISPLAY_BG0_ACTIVE);
vramSetBankA(VRAM_A_MAIN_BG);
BG0_CR = BG_MAP_BASE(31);
BG_PALETTE[255] = RGB15(31,31,31);
lcdSwap();
consoleInitDefault((u16*)SCREEN_BASE_BLOCK(31), (u16*)CHAR_BASE_BLOCK(0), 16);
printf("\x1b[2J");
printf("Fifo rograma iniciado");
irqInit();
irqSet(IRQ_KEYS,KeyHandler);
irqSet(IRQ_FIFO_NOT_EMPTY,FifoReciveHandler);
while (1) {;};
return 0;
}
Todo lo que tiene que ver con la grafica lo copie de un tuto pero tira y de momento asi me vale .creo ke lo ke falla es ke tengo que activar un bit del registro d botones pero no se que registro ni ke bit.
Si he cometido algun fallo de educacion perdonad pero creo ke es el segundo mensage a un foro que mando.
Gracias por leer. Un saludo a todos!
EDITADO ___________ _______________________________
El problema estaba que para que la ds genere las interrupciones hay que cargar el registro REG_KEYCNT .
lo saque de :
http://neimod.com/dstek/