极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 26212|回复: 10

冷知识-你不知道的arduino第三个外部中断 库文件提供下载 原创

[复制链接]
发表于 2014-11-7 01:15:01 | 显示全部楼层 |阅读模式
本帖最后由 mylife1213 于 2014-11-7 15:53 编辑

        
           今天给大家分享的是基于Atmega328P arduino的(UNO,duemilanove ,nano,mini)一个硬件(. 英文名叫"Analog Comparator" 翻译过来的意思就是模拟比较器,
  下面这张图就是328P内建的模拟比较器架构图;


   对应的引脚是arduino 的PIN D6 ,D7 .
比较器大家都比较熟悉,常用的比较器型号像LM393分正反馈与负反馈,328P片上集成的也是一样有正负反馈. D6是正反馈,D7是负反馈. D6正反馈可以通过寄存器操作与能隙基准源连接,D6引脚会被释放成普通引脚
   模拟比较器可以配置中断源,下图是系统全部的中断源
   
ANALOG COMP就是模拟比较器的中断源,这次要用到的就是这个让我们可以配置第三个外部中断!

用到的原理是把D6正反馈通过寄存器配置到能隙基准源,D7负反馈作为中断引脚,如果D7的电压大于能隙基准源
那么比较器输出低电平,如果小于能隙基准源比较器输出高电平(因为D7是负反馈),比较器输出的电平变化是在
内部完成,不会通过引脚输出! 我们可以配置下图ACSR寄存器选择是上升沿中断还是下降沿中断!
      


原理就介绍到这里,熬夜写帖子有点困,下面就进行库文件的介绍,可能大多数朋友比较喜欢下面的环节,简单实用

  晚上编写库的时候为了让大家比较好上手,函数基本和官方中断差不多,只是前面加了字母区别官方中断


  1. #include<ACD.h>
  2. int pin = 13;
  3. volatile int state = LOW;

  4. QUN M; //你要做的只是添加上这个

  5. void setup()
  6. {
  7.   pinMode(pin, OUTPUT);
  8.   M.attachInterrupt(blink, M_CHANGE); //格式是:M.attachInterrupt(blink, M_CHANGE);
  9.                                       //blink是要执行的函数,  
  10.                                      // M_CHANGE 当引脚电平发生改变时,触发中断
  11.                                      // M_RISING 当引脚由低电平变为高电平时,触发中断
  12.                                      // M_FALLING 当引脚由高电平变为低电平时,触发中断
  13. }

  14. void loop()
  15. {
  16.   digitalWrite(pin, state);
  17. }

  18. void blink()
  19. {
  20.   state = !state;
  21. }
复制代码


使用模拟比较器中断库你只要添加QUN M; 然后格式是:M.attachInterrupt(blink, M_CHANGE); 和官方比少了中断端口!
D7就是中断端口, M_CHANGE   M_RISING  M_FALLING 是选择上升沿还是下降沿或者电平变化产生中断 .

剩下的就明天在继续编辑

下面是库文件
如果要转载请注明链接地址,熬夜写贴不易啊


   

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2014-11-7 23:50:56 | 显示全部楼层
Thank you very much
回复 支持 反对

使用道具 举报

发表于 2014-12-26 17:06:46 | 显示全部楼层
讲解得很有用。定时器一直是个头痛的问题,在有的情况下用定时器,与之关联的接口往往无法正常工作。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-26 18:57:57 | 显示全部楼层
leicheng 发表于 2014-12-26 17:06
讲解得很有用。定时器一直是个头痛的问题,在有的情况下用定时器,与之关联的接口往往无法正常工作。

谢谢,共勉  (字数补丁)
回复 支持 反对

使用道具 举报

发表于 2015-1-19 12:07:14 | 显示全部楼层
谢谢,讲的很清楚
回复 支持 反对

使用道具 举报

发表于 2015-4-23 10:33:04 | 显示全部楼层
很专业啊,新手向楼主学习了
回复 支持 反对

使用道具 举报

发表于 2015-11-26 20:15:58 | 显示全部楼层
感谢楼主的分析,不过楼主也是很懒的人啊,库文件没有改名字
回复 支持 反对

使用道具 举报

发表于 2016-1-23 13:47:59 | 显示全部楼层
这个不错,好好学习下。
回复 支持 反对

使用道具 举报

发表于 2016-6-16 15:27:05 | 显示全部楼层
有用,收藏
回复 支持 反对

使用道具 举报

发表于 2016-6-19 22:33:00 | 显示全部楼层
支持支持支持
回复 支持 反对

使用道具 举报

发表于 2016-8-8 11:23:40 | 显示全部楼层
很不错,Arduino又多了个中断可用,正好适合我的项目!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-25 18:06 , Processed in 0.046037 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表