历史上的今天
返回首页

历史上的今天

今天是:2024年11月25日(星期一)

正在发生

2021年11月25日 | ATmega32 复位与中断处理

2021-11-25 来源:eefocus

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

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


推荐阅读

史海拾趣

Artaflex公司的发展小趣事

面对全球电子市场的不断扩张,Artaflex公司制定了全球化的发展战略。公司通过设立海外分支机构、拓展国际市场、参与国际展会等方式,不断提升品牌知名度和市场份额。同时,公司还积极引进国际先进技术和管理经验,提升自身的竞争力。这一战略的实施使得Artaflex在全球电子行业中占据了重要地位。

HANA Micron公司的发展小趣事

为了更好地服务全球客户,Hama积极实施国际化战略,在全球范围内设立了多家子公司。这些子公司不仅负责当地市场的销售和服务工作,还积极参与技术研发和产品创新活动。通过全球子公司的协同作战,Hama成功实现了资源的优化配置和市场的深度覆盖。目前,Hama在全球拥有约2500名员工、5亿欧元的业务和19家全球子公司,已成为国际知名的电子配件供应商之一。未来,随着全球市场的不断变化和发展,Hama将继续加强全球子公司的建设和布局,为公司的长远发展奠定坚实基础。

思瑞浦微电子科技(3PEAK INCORPORATED)公司的发展小趣事

随着线上及线下业务的快速增长,Hama面临着交货时效性的巨大挑战。为了应对这一挑战,公司决定在蒙海姆总部建造一座集仓储、拣选与发货一体的物流中心。该物流中心采用了先进的自动化和人工子系统相结合的设计方案,大大提高了物流运作的效率。新系统的启用使得Hama每天能够处理数以万计的订单,确保了产品的及时交付,进一步提升了客户满意度和品牌影响力。

北京人民电器厂公司的发展小趣事

近年来,随着新能源产业的快速发展,北京人民电器紧跟时代步伐,在新能源领域取得了重要突破。公司推出的真安型零飞弧直流断路器,解决了直流低压系统中长期存在的外喷电弧问题,为新能源行业的发展提供了重要的技术支持。这一创新成果不仅得到了行业的广泛认可,也为公司在新能源领域的发展打开了新的局面。

这五个故事只是北京人民电器在电子行业发展历程中的一部分,但它们足以展现出公司在技术创新、产品应用、生产自动化、人才队伍建设以及新能源领域发展等方面的努力和成就。这些故事不仅记录了北京人民电器的成长轨迹,也见证了中国电子行业的蓬勃发展。

艾迪沃德公司的发展小趣事
定期检查电源线、插头等连接部位是否牢固可靠,避免松动或接触不良。
统宇电研(Coilmaster)公司的发展小趣事

随着电子行业的快速发展,统宇电研始终保持着技术创新的步伐。公司不断投入研发资源,积极引进先进技术和设备,提升产品性能和质量。同时,统宇电研还与多所高校和研究机构建立合作关系,共同开展前沿技术研究。这些努力使得统宇电研在行业内树立了技术创新的标杆,引领着行业的发展方向。

问答坊 | AI 解惑

HDL设计探究

一.可移植性编码1.只使用IEEE标准类型(VHDL):(1)使用STD_LOGIC类型,而不是STD_ULOGIC类型;(2)设计中不要创建过多的的子类型;(3)不要使用BIT和BIT_VECTOR类型。2.不使用立即数:在设计中,不要使用立即数(但作为例外,可使用0和1),推 ...…

查看全部问答>

PIC单片机开发的若干问题

PIC单片机开发的若干问题 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~该贴不属于此版块,过两天移走! [ 本帖最后由 youki12345 于 2010-5-8 10:49 编辑 ]…

查看全部问答>

LCD驱动问题

我换了一块LCD屏,也修改了相应的驱动,现在的显示不正常,就是一竖条一竖条的东西,各种颜色都有,没有规律。 不知道各位有没有遇到过这种情况,我可以确认LCD的各个信号线都有信号,该配置的寄存器也都配置过了,只是不知道在哪里疏忽了。…

查看全部问答>

现在用得比较多的8位单片机是什么型号的?

现在用得比较多的8位单片机是什么型号的?需要价格比较便宜一点的,带A/D的,I/O比较多的.…

查看全部问答>

关于液晶屏的驱动问题求助?

我有一块ARM7 S3C44B0的开发板,我最近买了一个320X240的液晶屏。 商家提供了320X240.bin的驱动,但是我不知道怎么把驱动加载到开发板的系统中。 我刚开始学这个,我想检验一下这块屏能不能正常使用。哪位高人能不能详细解释一下??…

查看全部问答>

求救:YLP2410的usb鼠标在wince下有时用不了?

我前不久从深圳优龙公司买了一块YLP2410开发板,发现在WINCE下usb鼠标有时能用,有时又用不了(移动鼠标,光标没有反应)。用不了的时间占多数。开始我还怀疑是我的WINCE操作系统定制的有问题,但后来我使用他们配套光盘里的NK_shp640.nb0,还是一样, ...…

查看全部问答>

请教linux下并口的操作的问题

我向请教下一个问题: 我想对PC机并口进行操作,操作步骤是这样的; 先用ioperm(0x378,3,1);取得控制权,然后 _outp(0x378,0x55); 但是用_inp(0x378)读出的数据是255,是我哪地方用的不对的吗? …

查看全部问答>

Cortex-M3与ARM7TDMI-S内核MCU运算性能比较

还是21IC人气旺,转一篇我在EDN的博文:http://blog.ednchina.com/htjgdw/140162/message.aspx自从STM32推出后,我对它很感兴趣,由于它采用了ARM的Cortex-M3内核,所以很想了解一下其性能和ARM7相比究竟如何?很巧的机会知道了EDNCHINA,参加了EDN ...…

查看全部问答>

用ST的CORTEX-M3,感觉如行云流水阿

                                 IAR + FWLib 那是相当顺手…

查看全部问答>

DAC0809.

本帖最后由 paulhyde 于 2014-9-15 03:59 编辑 DAC0809.  …

查看全部问答>