Hola!
Estoy trabajando con interrupciones. En concreto quiero contar cuantas veces interrumpe cada botón. El problema es que no llego a la rutina de atención. Según lo que he leido el problema debe ser que en algún sitio tengo que activar las interrupciones de los botones mediante el registro REG_KEYCNT, pero no se dóndo lo tengo que poner y que valores le tengo que dar al registro. ¿Alguien puede ayudarme?
¡Gracias!
Y no te seria mas
Y no te seria mas facil usar las funciones de libnds para contar las pulsaciones ?
Sí, seguro, sólo que lo
Sí, seguro, sólo que lo que estoy programando es para una clase de Arquitectura de Computadores donde analizamos el funcionamiento de la E/S. Por esa razón intento programar lo más a bajo nivel que puedo para que vean que mi alumnado pueda ver cómo se accede a los registros, cómo se activa la interrupción, etc. Todo eso que en un PC es más difícil debido al sistema operativo.
De todas formas, muchas gracias, la verdad es que hasta ahora vuestros comentarios me han sido de bastante ayuda.
Ya conseguí que el teclado me interrumpiera, la función es la siguiente, por si a alguien le sirve.
#define TECLASCNT (*(vu16*)0x4000132)
void interrupciones()
{
irqInit(); //Se inicializa el vector de interrupciones
TECLASCNT=0X43FF; //En el registro de control del teclado definido arriba se especifica que pueden interrumpir todas las teclas (X e Y están en otro registro, no las tengo en cuenta
irqSet(IRQ_KEYS,rutinateclado1); // Se indica cuál va a ser la rutina de atención para esas interrupciones
irqEnable(IRQ_KEYS); //Se habilitan las interrupciones del teclado
}
No está cambiando su valor,
No está cambiando su valor, está escribiendo un valor en la dirección de memoria a la que apunta.