Diferencia entre revisiones de «C12 - Interrupts»

De Proyectos
Ir a la navegación Ir a la búsqueda
Línea 1: Línea 1:
= Interrupt Concepts =
= Interrupt Concepts =
<br>
<br>
<b>Definición</b>
*Es cuando se suspende temporalmente la ejecución del programa para ejecutar una subrutina
*Es cuando se suspende temporalmente la ejecución del programa para ejecutar una subrutina
*Cuando acaba la interrupción se vuelve a reanudar la ejecución donde se habia quedado
*Cuando acaba la interrupción se vuelve a reanudar la ejecución donde se habia quedado
*La interrupción se "dispara" (trigger) a través de una acción del hardware
*La interrupción se "dispara" (trigger) a través de una acción del hardware
Interrupt Setup ritual
<b>Interrupt Setup ritual</b>
*Arm/Disarm
*Arm/Disarm
**Arm - Permite al hardware hacer trigger a la interrupción
**Arm - Permite al hardware hacer trigger a la interrupción
Línea 20: Línea 21:
**El registro BASEPRI controla la prioridad de las interrupciones
**El registro BASEPRI controla la prioridad de las interrupciones
*Trigger - Es un evento asincrono. Es el encargado de activar el device que activa la interrupción. En el registro RIS hay un bit que nos indica que ha habido un trigger.
*Trigger - Es un evento asincrono. Es el encargado de activar el device que activa la interrupción. En el registro RIS hay un bit que nos indica que ha habido un trigger.
5 condiciones que han de ser true para que una interrupción sea generada
<b>5 condiciones que han de ser true para que una interrupción sea generada</b>
*Device arm
*Device arm
*NVIC enable
*NVIC enable
Línea 26: Línea 27:
*Prioridad de la itnerrupción actual ha de ser superior al nivel actual
*Prioridad de la itnerrupción actual ha de ser superior al nivel actual
*Hardware event trigger
*Hardware event trigger
La interrupción causa 5 eventos
<b>La interrupción causa 5 eventos</b>


<br>
<br>

Revisión del 07:16 7 abr 2015

Interrupt Concepts


Definición

  • Es cuando se suspende temporalmente la ejecución del programa para ejecutar una subrutina
  • Cuando acaba la interrupción se vuelve a reanudar la ejecución donde se habia quedado
  • La interrupción se "dispara" (trigger) a través de una acción del hardware

Interrupt Setup ritual

  • Arm/Disarm
    • Arm - Permite al hardware hacer trigger a la interrupción
    • Disarm - Deshabilita la función de trigger
    • Cada interrupción tiene un bit de arm/disarm
  • Enable NVIC (Nested Vectored Interrupt Controller)
    • Es un módulo que controla todas las interrupciones. Se activa el NVIC específico para el device que usaremos
    • Para deshabilitar hacemos un set al bit PRIMASK
    • En C hay las funciones EnableInterrupts() y Disable Interrupts() para activar/desactivar las interrupciones
  • Global enable bit I
    • Este bit se activa haciendo un clear. Este bit activa y desactiva todas las interrupciones
    • Si el bit es 1 muchas de las interrupciones no están permitidas, estan disable
  • Priority
    • No se si se refiere a la prioridad del device al thread principal o a que puede haber varias devices por interrupción y cada una tiene una prioridad
    • El registro BASEPRI controla la prioridad de las interrupciones
  • Trigger - Es un evento asincrono. Es el encargado de activar el device que activa la interrupción. En el registro RIS hay un bit que nos indica que ha habido un trigger.

5 condiciones que han de ser true para que una interrupción sea generada

  • Device arm
  • NVIC enable
  • Global enable
  • Prioridad de la itnerrupción actual ha de ser superior al nivel actual
  • Hardware event trigger

La interrupción causa 5 eventos