⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basic.html

📁 Atmel AT91SAM7S Interrupt example code
💻 HTML
📖 第 1 页 / 共 4 页
字号:
  <p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>- Priority needs to manage nested interrupt and 
    to enable the next interrupt (clear I bit)<o:p></o:p></span></p>
  <p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>Save the context (scratched registers only) <o:p></o:p></span></p>
  <p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>Call the C handler (IVR) <o:p><br>
    <br>
    </o:p></span></p>
  <p class=MsoNormal style='margin-left:36.0pt'><b><span lang=EN-US
style='mso-ansi-language:EN-US'>Interrupt Handling Exit</span></b><span
lang=EN-US style='mso-ansi-language:EN-US'> <o:p></o:p></span></p>
  <p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>Restore the context<o:p></o:p></span></p>
  <p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>Disable Interrupt<o:p></o:p></span></p>
  <p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>Switch back in IRQ Mode<o:p></o:p></span></p>
  <p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>Write AIC_EOICR<o:p></o:p></span></p>
  <p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>Restore r0 and spsr_irq<o:p></o:p></span></p>
  <p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>Restore lr directly in pc<o:p></o:p></span></p>
  <p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>Because adjusted in entry sequence<o:p><br>
    <br>
    </o:p></span></p>
  <p class=MsoNormal style='margin-left:36.0pt'><a name="Interrupt_detection"><b><span
lang=EN-US style='mso-ansi-language:EN-US'>Interrupt Detection</span></b></a><b><span
lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></b></p>
  <p class=MsoNormal style='margin-left:36.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>When an interrupt source is detected, AIC asserts 
    NIRQ<o:p></o:p></span></p>
  <p class=MsoNormal style='margin-left:72.0pt'><span lang=FR style='mso-ansi-language:
FR'>- AIC de-asserts the NIRQ<o:p></o:p></span></p>
  <p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>- AIC determines the highest level pending and 
    enabled interrupt source<o:p></o:p></span></p>
  <p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>- AIC pushes the level of the current interrupt 
    in hardware stack<o:p></o:p></span></p>
  <p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>- AIC clears the interrupt if it&#8217;s edge 
    triggered<o:p></o:p></span></p>
  <p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>- AIC returns the vector corresponding to the 
    current interrupt<o:p></o:p></span></p>
  <p class=MsoNormal style='margin-left:36.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>Interrupt Service Routine re-enables as soon as 
    possible the interrupt at processor level<o:p></o:p></span></p>
  <p class=MsoNormal style='margin-left:36.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>A highest-level interrupt can occur and restarts 
    this sequence<o:p></o:p></span></p>
  <p class=MsoNormal style='margin-left:36.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>The Interrupt Service Exit code disables the interrupt 
    at processor level and writes the End Of Interrupt Command Register<o:p></o:p></span></p>
  <p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>- AIC pops from its hardware stack the current 
    level<o:p></o:p></span></p>
  <p style='margin-left:36.0pt'><span lang=EN-US style='mso-ansi-language:EN-US'>Interrupt 
    Handling Entry <!-- ******* Interrupt level  ********** !--><o:p></o:p></span></p>
  <p class=MsoNormal style='margin-left:36.0pt'><a name="Interrupt_Level"><b><span
lang=EN-US style='mso-ansi-language:EN-US'>Interrupt level </span></b></a><b><span
lang=EN-US style='mso-ansi-language:EN-US'>description<o:p></o:p></span></b></p>
  <p class=MsoNormal style='margin-left:36.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>The NIRQ line is controlled by an 8-level priority 
    encoder. Each source has a programmable priority level of 7 to 0. Level 7 
    is the highest priority and level 0 the lowest.<o:p><br>
    <br>
    </o:p></span></p>
  <table border=1 cellspacing=1 cellpadding=0 width=665 style='width:498.75pt;
 mso-cellspacing:.7pt;mso-padding-alt:5.25pt 5.25pt 5.25pt 5.25pt'>
    <tr> 
      <td width="8%" valign=top style='width:8.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><b><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>level</span></b><span
  lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="8%" valign=top style='width:8.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><b><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>LED</span></b><span
  lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="25%" valign=top style='width:25.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><b><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>Name</span></b><span
  lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="58%" valign=top style='width:58.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><b><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>Comment</span></b><span
  lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
    </tr>
    <tr> 
      <td width="8%" valign=top style='width:8.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>1(lower)</span><span
  lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="8%" valign=top style='width:8.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>3</span><span
  lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="25%" valign=top style='width:25.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>TIMER0_INTERRUPT_LEVEL 
          </span><span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="58%" valign=top style='width:58.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>Timer 
          led blink high speed</span><span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
    </tr>
    <tr> 
      <td width="8%" valign=top style='width:8.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>2</span><span
  lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="8%" valign=top style='width:8.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>2</span><span
  lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="25%" valign=top style='width:25.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>IRQ0_INTERRUPT_LEVEL 
          </span><span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="58%" valign=top style='width:58.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>External 
          IRQ0 interrupt (SW2) </span><span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
    </tr>
    <tr> 
      <td width="8%" valign=top style='width:8.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>4</span><span
  lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="8%" valign=top style='width:8.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>4</span><span
  lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="25%" valign=top style='width:25.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>TIMER1_INTERRUPT_LEVEL 
          </span><span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="58%" valign=top style='width:58.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>Timer 
          1 led blink low speed</span><span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
    </tr>
    <tr> 
      <td width="8%" valign=top style='width:8.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>5</span><span
  lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="8%" valign=top style='width:8.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>2</span><span
  lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="25%" valign=top style='width:25.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>SOFT_INTERRUPT_LEVEL 
          </span><span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="58%" valign=top style='width:58.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>Generate 
          in main function by setting the AIC </span><span lang=EN-US style='mso-ansi-language:
  EN-US'><o:p></o:p></span></p>
      </td>
    </tr>
    <tr> 
      <td width="8%" valign=top style='width:8.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>6</span><span
  lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="8%" valign=top style='width:8.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>2</span><span
  lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="25%" valign=top style='width:25.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>PIO_INTERRUPT_LEVEL 
          </span><span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="58%" valign=top style='width:58.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>PIO 
          interrupt(SW4) </span><span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
    </tr>
    <tr> 
      <td width="8%" valign=top style='width:8.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>7</span><span
  lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="8%" valign=top style='width:8.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>None</span><span
  lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="25%" valign=top style='width:25.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>USART_INTERRUPT_LEVEL 
          </span><span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="58%" valign=top style='width:58.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>USART 
          1 Interrupt only on RX with RXRDY and error OVER, Framing, Parity, Time 
          out </span><span
  lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
    </tr>
    <tr> 
      <td width="8%" valign=top style='width:8.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>FIQ 
          </span><span
  lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="8%" valign=top style='width:8.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>4 
          </span><span
  lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
      </td>
      <td width="25%" valign=top style='width:25.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'> 
        <p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>FIQ_INTERRUPT_LEVEL 
          </span><span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -