瑞萨单片机之外部中断实现频率采集(三)
很多低端MCU没有像STM32 那样拥有强大脉冲捕获测频率,那么MCU只能依靠自身有的资源来实现这个功能,比较通用的方法是使用了外部中断+定时器来实现,该方法经过我在实际项目中的使用来看,频率50/60Hz 完全没问题,最好加个滤波算法,效果会更好。
目录
- 一、实现原理
- 二、具体实现
- 2.1 封装结构
- 2.2 瑞萨单片机定时中断函数
- 2.3 瑞萨单片机外部中断函数
- 2.4 例子
- 2.5 图片
一、实现原理
思路:
- 定时器定时间隔周期512us,外部中断上升沿触发。
- 当第一个上升沿到来时,对计数器清理操作,此时定时器中断就会重新对这个计数器不断计数。
- 当第二个上升到来时,就可很快算出两个上升沿之间的间隔时间,间隔时间=cnt*512 us,从而获得周期,间而获取频率。
二、具体实现
2.1 封装结构
typedef struct GET_FRE
{u32 cnt; /*计数*/u32 cnt_value; /*脉冲计数值*/u16 timeout; /*超时*/u16 fre; /*频率*/u8 flag;
};
2.2 瑞萨单片机定时中断函数
CS+ 中配置定时间隔时间
配置好后,点击生成代码即可
注意:定时器周期512us
__interrupt static void r_tau0_channel0_interrupt(void)
{get_fre.cnt++; /*******2s 内未检测到电平跳变则清零********/get_fre.timeout++; if(get_fre.timeout>=3906){get_fre.timeout=0;get_fre.fre=0;get_fre.cnt=0;}
}
2.3 瑞萨单片机外部中断函数
配置外中断,上升沿触发,最高优先级,最后点击生成代码即可
__interrupt static void r_intc0_interrupt(void)
{get_fre.cnt_value=get_fre.cnt;get_fre.cnt=0; get_fre.timeout=0;get_fre.flag=1;
}
2.4 例子
if(get_fre.flag){get_fre.flag=0;/*频率f=1/t get_fre.cnt_value<<9 =计数值*512us =周期 此时单位是 us,也就是MHzf=1000000/t,1 MHz =1000 000 Hz*/ get_fre.fre =(10000000/(get_fre.cnt_value<<9)); //hz 为提高精度比真数据扩大10 }
2.5 图片
注意:实际程序中加了滤波算法
单片机采集结果:74.9Hz
示波器采集结果:75.08Hz
单片机采集结果:108.3Hz
示波器采集结果:108.2Hz
瑞萨单片机之外部中断实现频率采集(三)相关推荐
- 瑞萨e2studio(15)----外部中断定时器配置输入捕获测量频率
瑞萨e2studio.15--外部中断&定时器配置输入捕获测量频率 概述 视频教学 csdn课程 完整代码下载 样品申请 硬件准备 开发板 新建工程 工程模板 保存工程路径 芯片配置 工程模板 ...
- 瑞萨单片机之定时器中断实现数码管动态扫描(四)
目录 一.实现原理 二.具体实现 三.例子 一.实现原理 数码管的驱动方式很简单,图中的A B C D E F G Dp (8个段 含点)分别代表的数码管的每个段(笔画),需要显示什么就把相应的段点亮 ...
- 【瑞萨RA_FSP】外部中断
文章目录 一.外部引脚中断 二.中断过程 三.按键外部中断 一.外部引脚中断 1. ICU框图 根据ICU的功能框图可以知道,首先需要配置IRQCR寄存器(IRQ Control Register,I ...
- 瑞萨单片机之电压检测器(低压复位)(六)
目录 一.电压检测器的作用 二.电压检测器如何使用 一.电压检测器的作用 顾名思义,电压检测器就是用来检测电压的,电压检测器将检测到的电压与电源电压进行比较,比较完成后执行相应的动作:复位.复位&am ...
- 33、基于CACX和R7F0C004M的瑞萨单片机入门教程
代码资源下载:https://download.csdn.net/download/BaoTTing/58444918 一.开发环境介绍 CS+ for CACX: 瑞萨单片机开发环境,已经停止更新, ...
- 瑞萨单片机CAN口复用唤醒
瑞萨单片机CAN口复用唤醒 瑞萨单片机睡眠模式 CAN总线唤醒的原理 外部GPIO口唤醒步骤 注意事项 目前笔者在公司实习接触到了瑞萨单片机 经过了一个月的踩坑已经对瑞萨单片机的开发有了一定的了解,现 ...
- 瑞萨单片机-硬件I2C从设备
开发环境 1.e2 studio 2.R5F1115AxFL 概述 1.网上关于I2C从机的资料很少,在这里分享下我在瑞萨单片机上实现I2C从机,根据主机发来的数据,从机返回或者保存数据 2.R5F1 ...
- 瑞萨单片机C语言,瑞萨单片机学习笔记(1)基本配置
根据自己的芯片家族选择不同的代码编辑工具及仿真工具 对应78K0系列单片机,推荐的是cubeSuite+集成开发环境,具体使用可以看帮助手册. 有接触过PIC.STC的单片机,瑞萨单片机有其独特的地方 ...
- 瑞萨单片机之开发环境的搭建(一)
目录 一.开发环境搭建 二.开发环境界面设置 三.新建一个demo 四.软件使用(使用发现的功能及坑) 4.1 编译代码后显示当前程序大小 4.2.代码缩进 4.3 代码屏蔽 瑞萨单片机开发环境有三种 ...
最新文章
- R语言使用dplyr将特定的数据列移动到最前面、使用dplyr将特定数据列移动到另一指定数据列的后面、使用dplyr将特定数据列移动到另一指定数据列的前面
- 人脸识别技术新突破,网友:匪徒带着面罩呢?
- js获取网页面的高度和宽度
- python文件处理练习
- Codeup墓地-问题 D: 继续畅通工程
- IOS基础之仿酷狗音乐第1天
- 解读阿里巴巴集团的“大中台、小前台”组织战略
- CouchDB与Couchbase:区别何在,Membase又将如何?
- 在centos服务器上安装配置私人邮箱,并在web端管理邮件
- Go语言标准库之strconv
- kafka to mysql_Flink实现Kafka到Mysql的Exactly-Once
- macbook配置java环境变量_配置java环境变量
- Workstation-CentOS-XShell-YUM源 JAVA大数据Week5-DAY1-linux
- 字符编码:ASCII,Unicode和UTF-8
- 月关“历史网络小说第一人”:第四届橙瓜网络文学奖十佳历史大神
- spring boot中小学餐饮配送系统 毕业设计-附源码645661
- 数据结构与算法之链表结构寻找p、q最近的公共祖先
- C++之相对路径转绝对路径
- C#-快递鸟电子面单打印API
- IPV6重复地址检测(DAD)