[NDS] Las interrupciones no me interumpen

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 :Programa 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/
0 respuestas