El primer grafico esta simplificado.
IPEN - habilita o no las prioridades
En el primer grafico ves como funcionaria. Si este estuviera activo no estarian "unidos" la parte de alta prioridad y baja prioridad (serian casi 2 circuitos separados uno de otro). Entonces cada interrupcion posee su prioridad. Tambien se ve que cuando se activa una de alta prioridad, inhabiita a una de baja.
Ahora mira las prioridades, Cuando tenes un 1 en TMR0IP es de alta prioridad, ya que baja prioridad pone el negado y es un 0. Ahora que ocurre cuando deshabilitas las prioridades con IPEN = 0. Tanto las de alta como las de baja actuan sobre el vector de 0x0008, sea cual sea la prioridad, Ejemplo digamos que tenes un 0 en TMR0IP (baja prioridad si estuviera habilitado) Si ocurre una interrupcion por TMR0IF al estar IPEN en 0 iria a la parte superior y actuaria por el vector 0x0008, si hubiera un 1 en TMR0IP actuaria la parte superior, ademas esto inhabilita el vector 0x018.
Es un diagrama simplificado. Si fuera correcto el diagrama tendrias que al estar desactivada las prioridades, se produciria una condicion de carrera, ya que si se activa primero en la parte inferior el tiempo de propagacion entre compuertas se dispararia primero el vector de abajo (0x0018). Aunque luego la de alta prioridad la inhabilite, pero se estarian ejecutando 2 instrucciones por una misma entrada. Ya que no hay una compuerta AND con IPEN a la salida de baja prioridad. Puede que no sea problema por la latencia de la interrupcion.
El segundo diagrama muestra algo mas real y completo. Y se observa que en "baja prioridad" es decir la salida al vector 0x0018 se bloquea al tener IPEN en 0. esto es por que cuando las interrupciones tiene deshabilitadas las prioridades, todas son tratadas como si fueran alta prioridad. ( vector en 0x0008 )
Entonces aca tenes que decidir, ¿tu intencion es solamente hacer una interrupcion normal o interrupcion con prioridad?
Si es una interrupcion normal, deja IPEN en 0, y actuarias sobre el vector 0x0008 para todas. ( tal cual hacemos en los PIC16 y su vector 0x0004 )
Si queres prioridad, pones el IPEN en 1, y en caso de ser baja prioridad (TMR0IP = 0 ), actuarias sobre el vector 0x0018