Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 为什么在AVR体系结构中有几个阶段来启用引脚更改中断_Arduino_Embedded_Avr - Fatal编程技术网

Arduino 为什么在AVR体系结构中有几个阶段来启用引脚更改中断

Arduino 为什么在AVR体系结构中有几个阶段来启用引脚更改中断,arduino,embedded,avr,Arduino,Embedded,Avr,在AVR体系结构中,存在一些中断,我们需要几行代码来启用它们。例如,引脚更改中断。但有些中断只有一个步骤,不包括全局中断启用。例如,定时器0溢出中断,仅用于设置TIMSK0寄存器的第0位。那么,设计这样的体系结构有什么好处呢?一般来说,中断将拥有它们所需要的配置位/寄存器,而不再需要更多。通常,每个中断向量只有一个启用位 举你的例子: 引脚更改中断非常简单,只需要每个向量一个启用位和一个位掩码寄存器(每个引脚一位) 计时器更为复杂-虽然正如您所说,要启用计时器0溢出中断,您只需在TIMSK0中设

在AVR体系结构中,存在一些中断,我们需要几行代码来启用它们。例如,引脚更改中断。但有些中断只有一个步骤,不包括全局中断启用。例如,定时器0溢出中断,仅用于设置TIMSK0寄存器的第0位。那么,设计这样的体系结构有什么好处呢?

一般来说,中断将拥有它们所需要的配置位/寄存器,而不再需要更多。通常,每个中断向量只有一个启用位

举你的例子:

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

计时器更为复杂-虽然正如您所说,要启用计时器0溢出中断,您只需在
TIMSK0
中设置
TOIE0
,但仍然需要正确设置计时器,以便在应用程序中使用,这可能需要几行代码才能完成

在这两种情况下,都有一个设置步骤和一个启用步骤

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

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

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

一般来说,中断将完全具有所需的配置位/寄存器,而不再具有。通常,每个中断向量只有一个启用位

举你的例子:

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

计时器更为复杂-虽然正如您所说,要启用计时器0溢出中断,您只需在
TIMSK0
中设置
TOIE0
,但仍然需要正确设置计时器,以便在应用程序中使用,这可能需要几行代码才能完成

在这两种情况下,都有一个设置步骤和一个启用步骤

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

  • 在不需要时运行中断不会浪费处理器周期或RAM
  • 不需要时运行中断不会浪费电源
  • 运行时,可以通过禁用中断、更改配置并重新启用来重新配置中断
所有这些对于嵌入式软件应用程序都很有用。

一般来说,解释了每个中断(ADC、定时器、引脚更改、数据传输、EEPROM等)的设置可能不同,但每个中断都有一行实际代码

如果你有一个反例,这将更容易澄清


关于引脚更改中断的大量信息浓缩到本页:

这是一个特定的AVR芯片组,但它应该给你更多的信息

通常,架构设计尽可能简单,因为这也是晶体管级最容易设计和蚀刻的。如果你看了麻省理工学院6.004的讲座,他们会详细介绍如何/为什么设计指令集。或者,你可以退房。基本上,一个用于中断的专用电路(一位控制是否传递每个中断信号)可以方便地存储当前程序计数器并为中断提供服务。

一般来说,解释了每个中断的设置(ADC、定时器、引脚更改、数据发送、EEPROM等)可能会有所不同,但有一行实际代码启用每个单独的中断

如果你有一个反例,这将更容易澄清


关于引脚更改中断的大量信息浓缩到本页:

这是一个特定的AVR芯片组,但它应该给你更多的信息


通常,架构设计尽可能简单,因为这也是晶体管级最容易设计和蚀刻的。如果你看了麻省理工学院6.004的讲座,他们会详细介绍如何/为什么设计指令集。或者,你可以退房。基本上,一个用于中断的专用电路(一位控制每个中断信号是否通过)使存储当前程序计数器和服务中断变得很容易。

有些中断只是在不同的寄存器中分布了更多的配置设置。或者你到底在问什么?是的。有些中断需要设置更多配置。我的问题是为什么会这样?例如,在AVR atmega328p MCU中。为了激活端口B的引脚0,我们设置了PCICR的PCIE0位和PCMSK0的PCINT0。为什么需要两个步骤来启用中断。否认的理由是什么。一些中断只是在不同的寄存器中有更多的配置设置。或者你到底在问什么?是的。有些中断需要设置更多配置。我的问题是为什么会这样?例如,在AVR atmega328p MCU中。为了激活端口B的引脚0,我们设置了PCICR的PCIE0位和PCMSK0的PCINT0。为什么需要两个步骤来启用中断。什么是否认。