|
本帖最后由 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_RISING M_FALLING 是选择上升沿还是下降沿或者电平变化产生中断 .
剩下的就明天在继续编辑
下面是库文件
如果要转载请注明链接地址,熬夜写贴不易啊
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|