Manejo de interrupción El AT90S8515 tiene dos registros de control de enmascaramiento de interrupciones de 8-bit; GIMSK (Registro de enmascaramiento de interrupciones general) y TIMSK (Registro de enmascaramiento de interrupciones del Timer/Contador). Cuando una interrupción ocurre, el bit I de habilitación de interrupción global es borrado (cero) y todas las interrupciones están deshabilitadas. El software del usuario puede poner a set (uno) el bit I para habilitar interrupciones anidadas. El bit I está a set (uno) cuando se ejecuta una instrucción de retorno de interrupción (RETI). Para interrupciones activadas por eventos que pueden permanecer estáticos, el flag de interrupción está a set cuando el evento ocurre. Si el flag de interrupción es borrado y la condición de interrupción persiste, el flag no estará a set hasta que el evento ocurra la próxima vez. Cuando el Contador de Programa es llevado al vector de interrupción para ejecutar la rutina de manejo de interrupción, el hardware borra el flag correspondiente que genera la interrupción. Algunos de los flags de interrupción también pueden ser borrados escribiendo un "1" lógico en la posición de bit del flag. Si una condición de interrupción ocurre cuando el bit de habilitación de interrupción correspondiente está borrado (cero), el flag de interrupción se pondrá a set y se recordará hasta que el bit de interrupción se habilite o el flag sea borrado por software. Si una o más condiciones de interrupción ocurren cuando el bit de habilitación de interrupción global está borrado (cero), el flag(s) de interrupción correspondiente se pondrá a set y se recordará hasta que el bit de habilitación global de interrupción esté a set (uno) y será ejecutado por orden de prioridad. Tenga en cuenta que la interrupción de nivel externa no tiene un flag y sólo se recordará mientras la condición de interrupción esté activa. |