AVR 嵌入式单片机芯片的中断系统介绍
body, table{font-family: 微软雅黑; font-size: 13.5pt}
table{border-collapse: collapse; border: solid gray; border-width: 2px 0 2px 0;}
th{border: 1px solid gray; padding: 4px; background-color: #DDD;}
td{border: 1px solid gray; padding: 4px;}
tr:nth-child(2n){background-color: #f8f8f8;}
RESET $000 | INT0 $002 | INT1 $004 | INT2 $024 |
ATmega16的中断控制:
▋AVR响应一个可屏蔽中断源(假定为A中断)的中断的条件是: 响应A中断 = 全局中断允许标志 AND 中断A允许标志位 AND 中断A标志 当某个中断条件成立后,硬件会自动将该中断的标志位置"1",表示中断产生,同时也作为申请中断服务的请求信号。如果该中断的允许位为"1",同时AVR的全局中断允许位 I 也是"1"时,那么MCU在执行完当前一条指令之后就会响应该中断。 ▋AVR复位后,各个中断允许位以及全局中断允许位均被清零,这保证了程序在开始执行时(一般程序开头是对芯片内部以及外围系统的初始化设置)不会受到中断的干扰。 ▋AVR复位后的用户初始化程序中,需要先对需要使用的中断源进行必要的配置,待系统初始化过程结束后在置位 I ,使系统进入正常的工作状态,开始响应中断请求。 |
AVR的中断响应过程:
为了提高中断响应的实时性,AVR在中断响应和返回过程中,硬件上的处理仅仅保护和恢复了中断的断点(PC值)。而对中断现场没有采取任何处理。 因此,中断现场的保护工作需要用户在自己编写的中断服务程序中通过软件完成,以保证主程序在被打断时所使用的标志位和临时寄存器等不会被中断服务程序改变,例如,对状态寄存器SREG的保护等! |
中断服务程序编写:(三个框架)中断向量区部分、主程序部分和中断服务程序部分。
开放中断源本身的中断允许位之前,最好先使用指令将该中断的中断标志位清除,然后马上将中断允许位置“1”。 在开放中断前清楚可能存在的中断标志,保证了中断开放后不会形成一次“多余”的中断,这个“多余”的中断有时会造成致命的错误。因为在对中断源进行设置过程中,或中断源对应的硬件模块在工作中都有可能改变中断标志位。 |
中断服务程序中要考虑被中断现场的保护和恢复问题。中断的产生和响应是随机的,而且在中断服务程序中经常要使用一些寄存器,或对RAM中的变量进行操作,也会有判断和跳转的操作,这些指令可能会改变SREG中的标志位,所以必须确保当从中断服务程序返回时,被中断服务程序改变的现场全部正确的恢复,这样当中断返回后,主程序才能正确继续运行下去。 |
有很多情况下,中断仅仅表示外围设备或内部功能部件的工作过程已经达到某种状态,但不需要马上去处理,或者允许在一个比较充裕的限定时间内处理,这就可以将它们的处理工作放到主程序中完成。在这种情况下,最好的方式就是定义和使用信号量或标志变量,在中断服务程序中只是简单的对这些信号量或标志量进行必要的设置,不做其他处理就马上返回主程序,由主程序中根据这些信号量或表质量的值进行和完成处理工作。 这样做的另一个好处是,可以大大减少中断服务程序中的对中断现场保护和恢复的工作,从而又减少了中断程序的执行时间,同时也节省了堆栈空间和FLASH空间(代码少了)。 |
AVR 嵌入式单片机芯片的中断系统介绍的更多相关文章
- linux下avr单片机开发:中断服务程序
不管是什么单片机程序,中断总是非常重要的一部分 ,linux 下的avr开发,主要是依靠avr-gcc,以及avr-libc,它们对中断程序的格式要求,与window下的icc-avr以及win-av ...
- AVR单片机教程——定时器中断
本文隶属于AVR单片机教程系列. 中断,是单片机的精华. 中断基础 当一个事件发生时,CPU会停止当前执行的代码,转而处理这个事件,这就是一个中断.触发中断的事件成为中断源,处理事件的函数称为中断 ...
- 嵌入式单片机,ATmega328P,外部中断INT0,INT1,INT2,中断标志位介绍
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- 嵌入式单片机STM32应用技术(课本)
目录SAIU R20 1 6 第1页第1 章. 初识STM32..................................................................... ...
- 使用Superprg 下载 AVR/51单片机固件 【worldsing笔记】
progisp 2.0 可以下载avr.51等单片机,单击下载 Superprg 单击下载 Superprg软件志峰公司出的专用软件,配合ZF_209使用, ...
- 2-关于单片机通信数据传输(中断接收,大小端,IEEE754浮点型格式,共用体,空闲中断,环形队列)
上一篇链接 http://www.cnblogs.com/yangfengwu/p/8628219.html 先说明一点这种方式,不光对于单片机类的,,对于上位机接收数据同样适用----不骗人的,自己 ...
- 如何快速上手一款新的嵌入式CPU芯片(记录CC2540开发经历)
新换了工作,需要熟悉新公司的产品开发项目,更新博客就懈怠了,不过环境的不同,也让我对嵌入式开发有了更深刻的理解.在原公司我主要负责在STM32F207芯片平台上, 利用UCOS+LWIP进行嵌入式服务 ...
- 嵌入式单片机之stm32串口你懂了多少!!
stm32作为现在嵌入式物联网单片机行业中经常要用多的技术,相信大家都有所接触,今天这篇就给大家详细的分析下有关于stm32的出口,还不是很清楚的朋友要注意看看了哦,在最后还会为大家分享有些关于stm ...
- AVR/Arduino定时/计数器、中断入门
在Arduino中,可以使用AnalogWrite来使用硬件产生490Hz/980Hz的pwm波,并可根据参数来设定占空比.不了解这个的同学可以去AnalogWrite学习下,SecretsOfArd ...
随机推荐
- Django 安装 创建项目
安装Django: 安装好python 2.7 or 3.5(备注:在环境变量添加C:\Python36\Scripts路径) 然后在cmd窗口使用命令pip,有说明信息则表示pip可以正常使用. 安 ...
- Privoxy教程
简介 Privoxy 是一个 代理软件 简单说,就是进出你电脑的流量守门人.借由 Privoxy,我们可以控制出去的请求,还可以改写返回的响应.不必要的请求 – 比如视频广告的地址.图片广告的地址,我 ...
- DP一下,马上出发
简单DP i.May I ask you for a dance(体舞课软广植入) 这题的状态转移方程为:dp[i][j]=max(dp[i-1][j-1]+a[i][j],dp[i][j-1]);( ...
- Latex 经常见到的问题和解决方法
Latex 经常见到的问题和解决方法 2017-04-10 22:05:48 [资源下载]Texlive 2018 下载地址:http://mirror.lzu.edu.cn/CTAN/system ...
- 在微信小程序中将获取到的经纬度(经度纬度)转地址(地名)
var QQMapWX = require('qqmap-wx-jssdk') var qqmapsdk = new QQMapWX({ key: '填写你的key' // 必填 }) wx.getL ...
- 记 Swagger 2
Maven坐标: <dependency> <groupId>io.springfox</groupId> <artifactId>springfox- ...
- radio(单选框)反复选中与取消选中
做个记录,以便需要拿取 <script type="text/javascript"> $(function(){ 第一种 $('input:radio').click ...
- 爬虫学习笔记(1)-- 利用Python从网页抓取数据
最近想从一个网站上下载资源,懒得一个个的点击下载了,想写一个爬虫把程序全部下载下来,在这里做一个简单的记录 Python的基础语法在这里就不多做叙述了,黑马程序员上有一个基础的视频教学,可以跟着学习一 ...
- 【书】.NET及计算机类相关书籍,持续更新...
一级目录 链接: https://pan.baidu.com/s/1y3osr3YCQ7XlM81RzkN1eQ 提取码: gs3r 二级目录 链接: https://pan.baidu.com/s/ ...
- kotlin 委托
委托模式是软件设计模式中的一项基本技巧.在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理. Kotlin 直接支持委托模式,更加优雅,简洁.Kotlin 通过关键 ...