为什么在AVR架构中有几个阶段可以启用引脚更改中断

时间:2019-01-20 16:03:35

标签: arduino embedded avr

在AVR架构中,有一些中断我们需要几行代码来启用它们。例如,引脚更改中断。但是某些中断只有全局中断使能才能执行。例如,timer0溢出中断,仅将TIMSK0寄存器的第0位置1。那么,像这样设计架构的优势是什么?

2 个答案:

答案 0 :(得分:1)

通常,中断将完全具有所需的配置位/寄存器,仅此而已。通常,每个中断向量只有一个 enable 位。

举个例子:

引脚更改中断非常简单,只需要每个向量一个使能位和一个位掩码寄存器(每个引脚一个位)。

计时器更复杂-正如您所说的,要启用timer0溢出中断,您只需要在TOIE0中设置TIMSK0,就仍然需要正确设置计时器,在您的应用程序中有用,可能需要几行代码才能完成。

在两种情况下,都有一个 setup 步骤和一个 enable 步骤。

这样做的好处是您可以设置中断,但仅在需要时才启用它们。这意味着:

  • 在不需要时运行的中断不会浪费处理器周期或RAM
  • 在不需要时不会浪费电力运行中断
  • 在运行时可以通过禁用中断,更改配置并重新启用中断来重新配置中断

所有这些对于嵌入式软件应用程序都是有用的。

答案 1 :(得分:1)

通常,jfowkes解释了每个中断(ADC,定时器,引脚变化,数据发送,EEPROM等)的设置可能如何不同,但是只有一行实际代码支持每个中断

如果您有反例,则更容易阐明。


有关引脚更改中断的许多信息都浓缩在此页面上:
http://medesign.seas.upenn.edu/index.php/Guides/MaEvArM-pcint

它特定于一个AVR芯片组,但它应该为您提供更多信息。

通常,架构设计应尽可能简单,因为这也是在晶体管级别最容易设计和蚀刻的东西。如果您观看MIT 6.004讲义specifically #20,则它们详细说明了如何/为什么设计指令集。或者,您可以签出http://www.avr-tutorials.com/interrupts/about-avr-8-bit-microcontrollers-interrupts。基本上,一个专用的中断电路(用一个位控制是否传递每个中断信号)使存储当前程序计数器和为中断服务变得容易。