历史上的今天
返回首页

历史上的今天

今天是:2024年11月12日(星期二)

正在发生

2021年11月12日 | ATmega64 复位与中断处理

2021-11-12 来源:eefocus

AVR有不同的中断源。每个中断和复位在程序空间都有独立的中断向量。所有的中断事件 都有自己的使能位。当使能位置位,且状态寄存器的全局中断使能位I 也置位时,中断可 以发生。根据程序计数器PC 的不同,在引导锁定位BLB02 或BLB12 被编程的情况下, 中断可能被自动禁止。这个特性提高了软件的安全性。详见 P281“ 存储器编程” 的描述。


程序存储区的最低地址缺省为复位向量和中断向量。完整的向量列表请参见 P57“中断” 。 列表也决定了不同中断的优先级。向量所在的地址越低,优先级越高。RESET 具有最高 的优先级,第二个为INT0 – 外部中断请求0。通过置位MCU 控制寄存器 (MCUCR) 的 IVSEL,中断向量可以移至引导Flash的起始处,参见 P57“中断” 。编程熔丝位BOOTRST 也可以将复位向量移至引导Flash 的起始处。具体参见P268“ 支持引导装入程序 – 在写 的同时可以读(RWW, Read-While-Write) 的自我编程能力” 。


任一中断发生时全局中断使能位I 被清零,从而禁止了所有其他的中断。用户软件可以在 中断程序里置位I 来实现中断嵌套。此时所有的中断都可以中断当前的中断服务程序。执 行RETI 指令后I 自动置位。


从根本上说有两种类型的中断。第一种由事件触发并置位中断标志。对于这些中断,程序 计数器跳转到实际的中断向量以执行中断处理程序,同时硬件将清除相应的中断标志。中 断标志也可以通过对其写”1” 的方式来清除。当中断发生后,如果相应的中断使能位为 "0",则中断标志位置位,并一直保持到中断执行,或者被软件清除。类似的,如果全局 中断标志被清零,则所有已发生的中断都不会被执行,直到I 置位。然后挂起的各个中断 按中断优先级依次执行。


第二种类型的中断则是只要中断条件满足,就会一直触发。这些中断不需要中断标志。若 中断条件在中断使能之前就消失了,中断不会被触发。


AVR 退出中断后总是回到主程序并至少执行一条指令才可以去执行其他被挂起的中断。


要注意的是,进入中断服务程序时状态寄存器不会自动保存,中断返回时也不会自动恢 复。这些工作必须由用户通过软件来完成。


使用CLI 指令来禁止中断时,中断禁止立即生效。没有中断可以在执行CLI 指令后发生, 即使它是在执行CLI 指令的同时发生的。下面的例子说明了如何在写EEPROM 时使用这 个指令来防止中断发生以避免对EEPROM 内容的破坏。

汇编代码例程
in r16, SREG ; 保存SREG
cli ; 禁止中断
sbi EECR, EEMWE ; 启动 EEPROM 写操作
sbi EECR, EEWE
out SREG, r16 ; 恢复SREG (I 位)
C 代码例程
char cSREG;
cSREG = SREG; /* 保存SREG */
/* 禁止中断*/
_CLI();
EECR |= (1<EECR |= (1<SREG = cSREG; /* 恢复SREG (I 位) */

使用SEI 指令使能中断时,紧跟其后的第一条指令在执行任何中断之前一定会首先得到执行。

汇编代码例程
sei ; 置位全局中断使能标志
sleep ; 进入休眠模式,等待中断发生
; 注意: 在执行任何被挂起的中断之前MCU 将首先进入休眠模式
C 代码例程
_SEI(); /* 置位全局中断使能标志*/
_SLEEP(); /* 进入休眠模式,等待中断发生*/
/* 注意: 在执行任何被挂起的中断之前MCU 将首先进入休眠模式*/

中断响应时间

AVR 中断响应时间最少为4 个时钟周期。4 个时钟周期后,程序跳转到实际的中断处理例 程。在这4 个时钟期期间PC 自动入栈。在通常情况下,中断向量为一个跳转指令,此跳 转需要3 个时钟周期。如果中断在一个多时钟周期指令执行期间发生,则在此多周期指令 执行完毕后MCU 才会执行中断程序。若中断发生时MCU 处于休眠模式,中断响应时间 还需增加4 个时钟周期。此外还要考虑到不同的休眠模式所需要的启动时间。


中断返回需要4 个时钟。在此期间PC( 两个字节) 将被弹出栈,堆栈指针加二,状态寄存 器SREG 的I 置位。


推荐阅读

史海拾趣

台湾双羽公司的发展小趣事

1954年,富士通研发出了日本第一台中继式自动计算机FACOM100,这一里程碑式的成就标志着富士通正式涉足信息产业。FACOM100的推出不仅在日本国内引起了轰动,也让富士通在国际上赢得了声誉。此后,富士通在计算机领域持续投入研发,不断推出新技术、新产品,逐渐成长为全球领先的计算机制造商之一。这一转变不仅推动了富士通自身的快速发展,也为全球计算机技术的进步做出了重要贡献。

Capax Technologies Inc公司的发展小趣事

随着国内市场的饱和,Capax Technologies Inc开始积极拓展海外市场。公司制定了详细的国际化战略,通过设立海外研发中心、建立销售网络等方式,逐步进入国际市场。在国际化的过程中,Capax Technologies Inc不仅提升了自身的技术水平和市场竞争力,还积累了丰富的国际经验,为公司的长远发展奠定了坚实基础。

Able Systems公司的发展小趣事

Able Systems公司成立于1982年,初创时期面临着资金短缺、市场竞争激烈等诸多挑战。然而,公司凭借对微型打印机技术的深刻理解和独特见解,成功开发出了具有竞争力的产品。通过不懈的努力和持续的技术创新,Able Systems逐渐在市场中站稳了脚跟,并赢得了客户的信任。

Gigarams Semiconductor Device Corp公司的发展小趣事
这可能是由于传感器精度不足、控制器算法不准确或驱动器性能不稳定等原因导致的。解决方案包括提高传感器精度、优化控制器算法和更换性能更稳定的驱动器。
华宇创公司的发展小趣事

为了进一步扩大市场份额,华宇创开始积极拓展国内外市场。公司参加了多场国际电子展和博览会,与全球各地的客户建立了广泛的联系。同时,华宇创还与国际知名电子企业建立了战略合作关系,共同研发新技术、新产品。这些国际合作不仅为华宇创带来了更多的商业机会,也提升了公司在国际市场的地位和影响力。

CAMDENBOSS公司的发展小趣事

随着环保意识的日益增强,CAMDENBOSS公司积极响应全球绿色生产的号召。公司投入大量资源研发环保型电子连接器产品,采用环保材料和工艺,降低生产过程中的能耗和排放。同时,公司还加强了废弃物的回收和处理工作,实现了资源的循环利用和减少对环境的影响。

问答坊 | AI 解惑

介绍RFID技术前沿的一篇文章 很经典

介绍RFID技术前沿的一篇文章 很经典 …

查看全部问答>

大竞争时代 2012年液晶面板将出现供给过剩

本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 在中国,京东方科技集团(BOE Technology Group)及华星光电技术(Shenzhen China Star Optoelectronics Technology)等本土企业将从2011年下半年开始利用第7.5代(底板尺寸为1950mm×2250mm) ...…

查看全部问答>

VirtualAlloc,分配的空间大小可以超过32MB吗?

我的开发板有128M的内存。 OS分配32MB RAM分配32MB 显存分配64MB 这样可以吗? 显存的空间需要用VirtualAlloc来做,我的bsp里是这么做的,但是它限制大小为小于32M。…

查看全部问答>

用SDK还是用MFC开发windows CE应用程序

大家在开发windows CE应用程序时候. 一般是用SDK还是用MFC? 用MFC是否比SDK生成的代码量大很多. 实时性能也会比SDK的差? …

查看全部问答>

请问什么是网络控制器啊?小弟我是新手(在线等)

还有我这里有一个     泓格PISO-730 PCI总线开关量输入/输出卡 买的时候有光盘,但怎么也装不上去 发现新硬件“网络控制器”但是安装驱动以后怎么也装不上 估计我装的方法有问题或者有别的什么问题 请教达人指点,小弟在这 ...…

查看全部问答>

用IAR调试一段程序,出现如下状况,请问是什么意思?

用IAR调试一段程序,出现如下状况,请问是什么意思?   PS:我没设置断点   [ 本帖最后由 zzbaizhi 于 2012-2-24 14:57 编辑 ]…

查看全部问答>

TI冠名全国大学生电赛的培训资料

╮(╯▽╰)╭学了好久的课程,不过已经第四批了,还没有轮上我。好想用用那个触摸板啊。难过之余,发给各位同学一份资料。这是我们培训时,官方给的培训光盘里面的资料。希望对大家的学习有帮助。所以求人品,,,,,,希望下一批的名单里面有我啊 ...…

查看全部问答>

发现 raw os + ucgui+uip+lwip+ fatfs 一整套全部都能在VC 上模拟!

没有开发板的朋友们真是幸福呀,而且debug 功能太丰富了。…

查看全部问答>