Hola,
¿Alguien a analizado alguna vez el código del interruptDispatcher.s? Hay algunas cosas que no me cuadran, por ejemplo, ¿cómo se atienden interrupciones simultáneas? o ¿cuál es el orden de prioridad de las interrupciones?
Si alguien controla esto le agradecería que me echara una mano.
Un saludo,
Elur.
Creo que solo soporta una
Creo que solo soporta una interrupción a la vez porque la memoria que se usa para la pila es muy pequeña.
Sí, en principio el
Sí, en principio el interruptDispatcher está programado para que no se acepten interrupciones de varios niveles. Para eso, cuando se va a atender una interrupción, estas se deshabilitan de modo que no puede entrar otra interrupción hasta que se termine de atender a la actual. Pero ¿qué ocurre cuando dos periféricos interrumpen a la vez? ¿Cuál de las dos interrupciones se atiende primero?
Gracias
Imagino que según el orden de
Imagino que según el orden de los bits del registro IF siendo 0 el que tiene más prioridad, pero se podría mirar en el código... Vamos, lo que pone aquí:
http://nocash.emubase.de/gbatek.htm#dsinterrupts
http://nocash.emubase.de/gbatek.htm#gbainterruptcontrol
gracias
Gracias a todos los que habéis respondido.
En realidad no he solucionado mucho. Porque los enlaces que me habéis pasado ya los tenía y ahí no se especifica lo que yo he preguntado. Me imagino que no se ha comprobado, aunque la experiencia de algunos en de gran ayuda.
Se ejecuta la primera que llega, ¿pero si llegan dos a la vez? Las que llegan mientras se ejecuta una, se ignoran? Me gustaría tener alguna respuesta más concreta pero por lo que veo va a ser didícil.
Muchas gracias otra vez.
Si llegan 2 a la vez, se
Si llegan 2 a la vez, se ponen a 1 los bits correspondientes en IF y salta al handler de interrupciones. Después, salta a las funciones correspondientes por orden.
Tiene sentido, ¡Muchas
Tiene sentido,
¡Muchas gracias!
Mirate este
Mirate este enlace
http://www.coranac.com/tonc/text/interrupts.htm
Es de GBA, pero para el caso...
A ver si sacas algo en claro!
Pero por experiencia, diria que la primera que llega se ejecuta, y sospecho que las demas se ignoran (lo se por el efecto wave que he hecho en el speed trap, que funcionava bien en el emu y no en el hard).
Nuestra web oficial:
http://www.nightfoxandco.com/
Siguenos en facebook:
http://www.facebook.com/pages/NightFox-Co/284338634917917
Por favor, no useis los MP para preguntas, usar el FORO:
http://www.nightfoxandco.com/forum/
Asi nos ahorramos de contestar lo mismo 20 veces.