AVR单片机ATemga328P中断原理的介绍

news2024/11/28 20:45:08

1、一AVR单片机中断原理的介绍

ATmega328P微控制器具有两个外部中断引脚,分别是INT0和INT1。

  • 外部中断0(INT0):它对应的引脚是PD2(数字引脚2)。INT0可以用于响应外部信号的边沿触发(上升沿、下降沿或任意边沿),并触发相应的中断服务程序。INT0具有附加的可选特性,例如使能/禁用中断、选择触发边沿、使能上拉电阻等。

  • 外部中断1(INT1):它对应的引脚是PD3(数字引脚3)。INT1的功能与INT0类似,它也可以用于响应外部信号的边沿触发,并触发相应的中断服务程序。INT1同样具有附加的可选特性,例如使能/禁用中断、选择触发边沿、使能上拉电阻等。

这两个外部中断引脚提供了一种机制,使得ATmega328P能够在外部事件发生时及时中断当前的程序执行,以处理外部事件或执行其他特定的任务。程序员可以根据应用需求来配置和利用这些外部中断功能。


ATmega328单片机具有26个中断源。每个中断源都有个独立的中断向量作为中断服务程序的入口地址,而且所有的中断源都有自己独立的使能位。如果全局中断I和相应的中断使能位都置位,则在中断标志位置位时将执行中断服务程序。

一个中断产生后,全局中断使能位I将被清零,后续的中断被屏蔽。用户可以在中断服务程序里面对工置位从而开发中断,在中断返回后全局中断位I将重新置位。

ATmega328P单片机中断向量表介绍:

ATmega328单片机具有2个外部中断,分别是INT0(中断号为2),INT1(中断号为1),这2个外部中断都是由单片机的引脚触发。需要注意的是,如果允许外部中断的话,即使是INT0,INT1这2个引脚都设置为输出方式,外部中断也会触发。INT0,INT1外部中断可以选择的触发方式有上升沿触发、下降沿触发以及低电平触发;使用外部中断涉及到的寄存器有:

1.1 外部中断控制寄存器A

EICRA(External Interrupt Control Register A):这是一个8位寄存器,用于配置外部中断的触发方式。它的低两位(ISC01和ISC00)控制INT0的触发方式,而高两位(ISC11和ISC10)控制INT1的触发方式。这些位可用于选择外部中断的触发边沿(上升沿、下降沿或任意边沿)。

ISC11ISC10说明
00INT1引脚为低电平时产生中断请求
01INT1引脚上的任意逻辑电平变化都会产生中断请求
10INT1引脚为下降沿产生中断请求
11INT1引脚为上升沿产生中断请求

ISC01ISC00说明
00INT0引脚为低电平时产生中断请求
01INT0引脚上的任意逻辑电平变化都会产生中断请求
10INT0引脚为下降沿产生中断请求
11INT0引脚为上升沿产生中断请求

1.2 外部中断屏蔽寄存器

EIMSK(External Interrupt Mask Register):这是一个8位寄存器,用于使能/禁用外部中断。它包含两个位用于使能/禁用INT0和INT1外部中断。设置EIMSK寄存器的相应位可以启用对应的外部中断功能。

当 INT1 位被设置1并且状态寄存器SREG中的I位被设置1时,外部引脚中断被启用。 外部中断控制寄存器 A (EICRA) 中的中断检测控制 1 位 1/0(ISC11 和 ISC10)定义外部中断是在 INT1 引脚的上升沿和/或下降沿激活还是在检测到电平时激活。 即使 INT1 配置为输出,一旦引脚电平发生了相应的变化,中断就产生。 外部中断请求1对应的中断从INT1中断向量执行。

当 INT0 位被设置1并且状态寄存器SREG中的 I 位被设置1时,外部引脚中断被启用。 外部中断控制寄存器 A (EICRA) 中的中断检测控制 0 位 1/0(ISC01 和 ISC00)定义外部中断是在 INT0 引脚的上升沿和/或下降沿激活还是在检测到电平时激活。 即使INT0配置为输出,一旦引脚电平发生了相应的变化,中断就产生。 外部中断请求0对应的中断从INT0 中断向量执行。

1.3 外部中断标志寄存器

EIFR(External Interrupt Flag Register):这是一个8位寄存器,用于指示外部中断事件的发生。当外部中断事件触发时,相应的位(INTF0和INTF1)会被置位。在处理完中断后,可以通过清除EIFR寄存器的相应位来复位中断标志。


当INT1引脚上的边沿或逻辑变化触发中断请求时,INTF1变为置位1。 如果 SREG 中的I位和IMSK中的INT1位被置位1,MCU将跳转到相应的中断向量。中断程序执行时该标志被清除。 或者,可以通过向其写入逻辑1来清除该标志。 当 INT1配置为电平中断时,该标志总是被清除。

当INT0引脚上的边沿或逻辑变化触发中断请求时,INTF0变为置位1。 如果SREG中的I位和EIMSK中的INT0位被置位1,MCU将跳转到相应的中断向量。中断程序执行时该标志被清除。 或者,可以通过向其写入逻辑 1 来清除该标志。 当 INT0配置为电平中断时,该标志总是被清除。

二、中断服务函数写法

语法格式:

#pragma interrupt_handler<函数名>:<中断向量号>

例如定义INT0中所服务程序:

#pragma interrupt_handler into_isr: 2
void into_isr(void)
{
	//INTO中断服务函数
}

三、外部中断使用步骤

1、设置外部中断触发方式
2、使能外部中断
3、设置中断管脚(是否需要上拉电阻)
4、打开全局中断
5、选择终端号,编写中断服务函数

#include <avr/io.h>
#include <avr/interrupt.h>

// 外部中断0的中断服务函数
ISR(INT0_vect)
{
    // 在此处编写中断处理代码
    // ...
}

int main(void)
{
    // 配置引脚和外部中断

    // 设置PD2引脚为输入
    DDRD &= ~(1 << PD2);
    // 使能PD2引脚的上拉电阻
    PORTD |= (1 << PD2);

    // 配置外部中断0的触发方式为下降沿触发
    EICRA |= (1 << ISC01);
    EICRA &= ~(1 << ISC00);

    // 使能外部中断0
    EIMSK |= (1 << INT0);

    // 全局使能中断
    sei();//SREG |= (1 << 7);

    while (1)
    {
        // 主循环代码
        // ...
    }

    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/550635.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【服务器】使用Nodejs搭建HTTP web服务器

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 前言 1.安装Node.js环境 2.创建node.js服务 3. 访问node.js 服务 4.内网穿透 4.1 安装配置cpolar内网穿透 4.2 创建隧道映射本地端口 5.固定公网地址 [TOC] 转载自内网穿透…

Unity Addressables学习笔记(1)---创建远程服务器加载资源

例子1&#xff1a;加载一个图片 1.首先创建一个UI Image&#xff0c;空白图片,资源打包方式选择真是部署的 2.修改远程发布和加载配置 Bulid Path选择RemoteBuildPath Load Path我选择了custom,地址是http://localhost:8080/WebGL/ 遇坑1 :最开始我选择的Build Path 是 Loca…

windows安装mysql 5.7.41

前言 要学mysql&#xff0c;肯定得本地装上一个玩一玩啦&#xff0c;下面一起来安装mysql吧 一、下载 https://downloads.mysql.com/archives/community/ 顺便说一下&#xff0c;下载按钮下方有个md5&#xff0c;可以验证下文件是否被篡改&#xff0c;理论上官网下载的应该问…

初识结构体

目录 结构体的声明 结构体的基础知识 结构体的声明 结构体成员的类型 结构体变量的定义和初始化 定义 初始化 结构体成员的访问 结构体变量访问成员 结构体指针访问指向变量的成员 结构体传参 传地址 传结构体 结论 结构体的声明 结构体的基础知识 数组&#xff…

【ChatGPT】IOS如何下载注册使用ChatGPT的APP(教学)

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化 &#x1f449;专__注&#x1f448;&#xff1a;专注主流机器人、人工智能等相关领域的开发、…

iptables 防火墙

iptables概述 Linux系统的防火墙&#xff1a;ip信息过滤系统&#xff0c;它实际上由两个组件netfilter和iptables组成。 主要工作在网络层&#xff0c;针对IP数据包。体现在对包内的IP地址、端口、协议等信息的处理上 netfilter / iptables关系&#xff1a; netfilter:属于…

Electron中如何创建模态窗口?

目录 前言一、模态窗口1.Web页面模态框2.Electron中的模态窗口3.区分父子窗口与模态窗口 二、实际案例使用总结 前言 模态框是一种常用的交互元素&#xff0c;无论是在 Web 网站、桌面应用还是移动 APP 中&#xff0c;都有其应用场景。模态框指的是一种弹出窗口&#xff0c;它…

【TES714】JFM7K325T(复旦微FPGA)+HI3531DV200(华为海思)的综合视频处理平台设计原理图及调试经验

板卡概述 TES714是自主研制的一款5路HD-SDI视频采集图像处理平台&#xff0c;该平台采用上海复旦微的高性能Kintex系列FPGA加上华为海思的高性能视频处理器HI3531DV200来实现。 华为海思的HI3531DV200是一款集成了ARM A53四核处理器性能强大的神经网络引擎&#xff0c;支持多种…

【运维知识进阶篇】集群架构-Nginx动静分离详解

我们先前将静态资源放到NFS&#xff0c;动态资源放到MySQL&#xff0c;一是为了提高我们Web服务器性能&#xff0c;减轻它的压力&#xff0c;另一面如果Web宕机了&#xff0c;我们的静态和动态资源还可以访问到。但是之前方式不管是静态还是动态文件&#xff0c;都是走的代码文…

ssl vpn 与 ipsec vpn 区别

VPN 安全协议有两种主要类型&#xff0c;IPsec 和 SSL&#xff0c;了解它们之间的区别对于确保客户的安全至关重要。在本文中&#xff0c;我们将解释IPsec 和 SSL VPN 协议之间的区别&#xff0c;以及如何选择合适的协议来满足客户的需求。了解更多SSL技术最新信息&#xff0c;…

Linux_证书_Openssl实现对称加密、非对称加密、CA颁布证书

文章目录 OpenSSLopenssl实现对称加密openssl实现非对称加密生成密钥对非对称加密数字签名小结 根据CA颁布证书生成ca私钥和ca证书根据ca生成证书 尾声 OpenSSL 常用证书生成工具包括三个&#xff1a;ssh-keygen、cfssl、openssl。这里介绍 OpenSSL , OpenSSL 是一个开源项目&…

【Python从入门到进阶】20、HTML页面结构的介绍

接上篇《19、Python异常处理》 上一篇我们学习了Python中有关异常&#xff08;捕获异常、处理异常等&#xff09;的知识。从本篇开始&#xff0c;我们进入Python的实战教程&#xff0c;学习爬虫的相关技术&#xff0c;本篇主要讲解要爬取的HTML页面的结构。 一、一个场景 假设…

Godot引擎 4.0 文档 - 入门介绍 - Godot 编辑器

本文为Google Translate英译中结果&#xff0c;DrGraph在此基础上加了一些校正。英文原版页面&#xff1a; First look at Godots editor — Godot Engine (stable) documentation in English Godot的编辑器 本页将为您简要介绍 Godot 的界面。我们将查看不同的主屏幕和停靠栏…

C语言:字符函数和字符串函数详解及部分函数的模拟实现(前篇)

文章目录 求字符串长度strlenstrlen函数的模拟实现: 长度不受限制的字符串函数strcpystrcatstrcmp总结 长度受限制的字符串函数介绍strncpystrncatstrncmp 前言&#xff1a; C语言中对字符和字符串的处理很是频繁&#xff0c;但是C语言本身是没有字符串类型的&#xff0c;字符串…

【LeetCode】382. 链表随机节点

382. 链表随机节点&#xff08;中等&#xff09; 方法一 思路 定义两个链表&#xff0c;一个origin&#xff0c;用于每次调用 getRandom() 时进行初始化&#xff0c;一个 l 用于每次调用 getRandom() 时进行遍历&#xff0c;找到随机选定的元素。首先在 Solution() 的时候&am…

SpringBoot原理——起步依赖与自动装配

文章目录 SpringBoot原理一、起步依赖二、自动配置2.1 概述2.2 工具类准备工作2.2.2 HeaderConfig2.2.3 HeaderGenerator2.2.4 HeaderParser2.2.5 MyImportSelector2.2.6 TokenParser2.2.7 pom.xml文件 2.3 自动配置原理2.3.1 引入工具类2.3.2 案例 &#xff1a; 访问第三方Bea…

GPT专业应用:撰写工作简报

●图片由Lexica 生成&#xff0c;输入&#xff1a;Workers working overtime 工作简报&#xff0c;作为一种了解情况、沟通信息的有效手段&#xff0c;能使上级机关和领导及时了解、掌握所属部门的政治学习、军事训练、行政管理等方面的最新情况&#xff1b;同时&#xff0c;能…

BERT输入以及权重矩阵形状解析

以下用形状来描述矩阵。对于向量&#xff0c;为了方便理解&#xff0c;也写成了类似(1,64)这种形状的表示形式&#xff0c;这个你理解为64维的向量即可。下面讲的矩阵相乘都是默认的叉乘。 词嵌入矩阵形状&#xff1a;以BERT_BASE为例&#xff0c;我们知道其有12层Encoder&…

记录--Vue中如何导出excel表格

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 一、导出静态数据 1、安装 vue-json-excel npm i vue-json-excel注意&#xff0c;此插件对node有版本要求&#xff0c;安装失败检查一下报错是否由于node版本造成&#xff01; 2、引入并注册组件(以全…

【CSS语法应用在Qt中的QSS和文本】第一天

CSS语法应用在Qt中的QSS和文本 【1】CSS语法【1】QSS使用以上CSS语法【1.1】QTextBrowser设置样式表【1.2】QTextBrowser使用CSS语法设置文本样式 【1】CSS语法 &#x1f49b;&#x1f49b;&#x1f49b;&#x1f49b;&#x1f49b;&#x1f49b;&#x1f49b;&#x1f49b;&am…