在AVR架构中,有一些中断我们需要几行代码来启用它们。例如,引脚更改中断。但是某些中断只有全局中断使能才能执行。例如,timer0溢出中断,仅将TIMSK0寄存器的第0位置1。那么,像这样设计架构的优势是什么?
答案 0 :(得分:1)
通常,中断将完全具有所需的配置位/寄存器,仅此而已。通常,每个中断向量只有一个 enable 位。
举个例子:
引脚更改中断非常简单,只需要每个向量一个使能位和一个位掩码寄存器(每个引脚一个位)。
计时器更复杂-正如您所说的,要启用timer0溢出中断,您只需要在TOIE0
中设置TIMSK0
,就仍然需要正确设置计时器,在您的应用程序中有用,可能需要几行代码才能完成。
在两种情况下,都有一个 setup 步骤和一个 enable 步骤。
这样做的好处是您可以设置中断,但仅在需要时才启用它们。这意味着:
所有这些对于嵌入式软件应用程序都是有用的。
答案 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。基本上,一个专用的中断电路(用一个位控制是否传递每个中断信号)使存储当前程序计数器和为中断服务变得容易。