历史上的今天
返回首页

历史上的今天

今天是:2024年10月11日(星期五)

正在发生

2021年10月11日 | ATmega16 复位与中断处理

2021-10-11 来源:eefocus

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


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

推荐阅读

史海拾趣

ADDtek公司的发展小趣事

对不起,我无法提供有关ADDtek公司发展的故事。

Advanced Power Solutions公司的发展小趣事

Advanced Power Solutions公司自创立之初,就致力于电源管理技术的研发。在一次偶然的实验中,公司的研发团队发现了一种新的电源转换技术,可以显著提高能源利用效率。公司迅速投入资源,完善这项技术,并成功将其应用于新产品中。这款高效能的产品迅速在市场上获得了认可,为公司带来了可观的收益,也奠定了公司在电源管理领域的领先地位。

兆易创新(GigaDevice)公司的发展小趣事

面对日益激烈的国际竞争,Advanced Power Solutions决定实施全球化战略。公司先后在多个国家和地区设立了研发中心和生产基地,以便更好地满足当地市场的需求。同时,公司还加强了与国际同行的交流与合作,共同推动电源管理技术的发展。这些举措使公司的竞争力得到了显著提升,也为公司的长远发展奠定了坚实基础。

Gardner Denver公司的发展小趣事

Advanced Power Solutions公司非常重视人才培养和企业文化建设。公司注重员工的职业发展和培训,为员工提供了广阔的职业发展空间和学习机会。同时,公司还倡导开放、创新的企业文化,鼓励员工提出新的想法和建议。这种积极向上的企业文化吸引了大量优秀人才的加入,也为公司的持续发展提供了强大的动力。

以上五个故事框架仅用于说明Advanced Power Solutions公司可能的发展路径和成就,并不代表公司的实际历史。在实际撰写时,需要根据公司的具体情况进行调整和补充。

Astec [Astec America, Inc]公司的发展小趣事

随着全球环保意识的不断提高,Astec也开始关注绿色环保和可持续发展问题。公司积极采用环保材料和节能技术,推出了一系列绿色电源产品。同时,Astec还加大了对环保技术的研发力度,努力在保持产品性能的同时,降低生产过程中的能耗和排放。这些举措不仅有助于公司应对环保法规的挑战,还提升了公司的社会形象。

Auris公司的发展小趣事

Auris公司在技术研发方面取得了显著成果。其中,一款名为Auris Robotic Endoscopy System(ARES)的医疗机器人尤为引人注目。这款机器人能够通过精准的操控,帮助医生在不切口的情况下发现早期肺癌,提高了诊断的精确性。20XX年,食品与药品监督管理局(FDA)正式批准了ARES机器人的使用,这是对Auris公司技术实力和产品质量的高度认可。

问答坊 | AI 解惑

接地装置及其运行维护

电气设备的任何部分与大地(土壤)间作良好的电气连接称为接地。 接地是确保电气设备正常工作和安全防护的重要措施。电气设备接地通过接地装置实施。接地装置由接地体和接地线组成。与土壤直接接触的金属体称为接地体;连接电气设备与接地体之间的导 ...…

查看全部问答>

更改!我想原创,才发现没想法,于是就改行发现别人的想法

这是一个巧合,以前我从不把两个电池并联使用,从来都是串联!直到有一天,我看别人的文里面有个电路图,图里有两个电池,电池是准并联的,因为有两个二极管!电池并联的情况,如下图1              &n ...…

查看全部问答>

Power Architecture Study Notes

Capture 0 A big picturePPC function category:1. Interger (Fixed-point) Facility, using 32 GPRs(General Purpose Registers), each register have 32/64 bits for different mode. 2. Floating-point Facility, using 32 FPRs (Floating- ...…

查看全部问答>

wince5.0环境下对话框中显示图片问题

{                 TRACE(L\"CONINIT_MULTITHREADED ERR…

查看全部问答>

有哪位朋友用过讯飞公司的s3011语音芯片?请指教!

有哪位朋友开发嵌入式产品时用过讯飞公司的s3011语音芯片,本人在使用过程 中遇到不少问题,有哪位朋友有经验帮助咨询一下,谢谢了。…

查看全部问答>

招聘音频视频开发兼职开发

招聘兼职人员做视频音频软硬件开发,要求从事过此方面的工作,如做过MP3、MP4、电视机顶盒等的开发,有意者请将个人简历发送至邮箱nuaacom@163.com,符合我们意向的人员我们将与您联系,谢谢!…

查看全部问答>

写了个IIC键盘驱动有些错误,大牛们过来看看能否解决,同时功能上是否能实现!

附件里面我放了源代码,同时也将源代码帖到下面: /*IIC键盘程序:CPU是S3C2440,嵌入式操作系统是linux2.6.13,IIC键盘芯片是ZLG7290(周立功的片子);硬件中断连接方法, 将ZLG7290的INT按键中断引脚接GPF2(将GPF2配置成中断功能EINT2),当有按键按 ...…

查看全部问答>

急!!PXA270+uboot+wince5.0问题

想跟大侠们请教一个PXA270+uboot+wince5.0问题,现在uboot已经调试好了,uboot通过tftp下载NK.nb0到sdram中,运行NK时没有串口信息输出。经过“点灯法”发现程序能运行完src\\kenel\\oal\\startup.s,此后跳转到kernelstart(位于WINCEROOT\\Private\ ...…

查看全部问答>

UCGUI中文手册,打包共24个

今天在这里看到一个UCGUI的中文手册,是分开的,要下这个的朋友们可能真有点惨,我这正好有这个,打个包给大家分享…

查看全部问答>