mylife1213 发表于 2014-11-7 01:15:01

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

本帖最后由 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寄存器选择是上升沿中断还是下降沿中断!
      


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

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


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

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

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

void loop()
{
digitalWrite(pin, state);
}

void blink()
{
state = !state;
}

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

剩下的就明天在继续编辑

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


   

kwleung 发表于 2014-11-7 23:50:56

Thank you very much

leicheng 发表于 2014-12-26 17:06:46

讲解得很有用。定时器一直是个头痛的问题,在有的情况下用定时器,与之关联的接口往往无法正常工作。

mylife1213 发表于 2014-12-26 18:57:57

leicheng 发表于 2014-12-26 17:06 static/image/common/back.gif
讲解得很有用。定时器一直是个头痛的问题,在有的情况下用定时器,与之关联的接口往往无法正常工作。

谢谢,共勉(字数补丁)

xuzhongyu 发表于 2015-1-19 12:07:14

谢谢,讲的很清楚

从小就很黑 发表于 2015-4-23 10:33:04

很专业啊,新手向楼主学习了

GrayPillow 发表于 2015-11-26 20:15:58

感谢楼主的分析,不过楼主也是很懒的人啊,库文件没有改名字

老胖熊 发表于 2016-1-23 13:47:59

这个不错,好好学习下。

geek-r 发表于 2016-6-16 15:27:05

有用,收藏

原野动力 发表于 2016-6-19 22:33:00

支持支持支持

164335413 发表于 2016-8-8 11:23:40

很不错,Arduino又多了个中断可用,正好适合我的项目!
页: [1]
查看完整版本: 冷知识-你不知道的arduino第三个外部中断 库文件提供下载 原创