⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 说明.txt

📁 AVR模拟比较器(mega16系列单片机)
💻 TXT
字号:
/*
程序测试:

       VCC      VCC
        |        |
       | |      | |               
 AIN0--|W|      |W|--AIN1  PB0---R---LED--
       | |      | |                       |
        |        |                        |
       GND      GND                      GND

两个电位器,一端接VCC,一端接地,构成电位器分压电路
AIN0和AIN1都分别接到电位器的中心抽头。
PBO输出串电阻驱动LED,高电平有效。
然后分别旋转电位器,增减抽头的电压,将会发现PB0的输出(LED0)会根据 AIN0/AIN1的电压关系变动
由于电源纹波,IO电流及外界干扰的影响,当电压差接近0V时,模拟比较器会产生临界抖动,AIN0/AIN1对地并上小电容可以改善这种情况。

只有一个电位器时,可以变通
1 可以使能ACBG,利用1.23V内部能隙基准源代替AIN0作模拟比较器的正输入端。
ACSR=(1<<ACIE)|(1<<ACBG);
2 可以使能ADC的内部2.56V电压基准,然后把AIN0或AIN1连接到pin32 AREF脚。
ADCSRA=(1<<ADEN); //需要打开ADC
ADMUX=(1<<REFS1)|(1<<REFS0);

模拟比较器控制和状态寄存器-ACSR

Bit 7 – ACD: 模拟比较器禁用
模拟比较器上电默认是已经工作中的,跟其他的模块有所不同
ACD置位时,模拟比较器的电源被切断。可以在任何时候设置此位来关掉模拟比较器。
这可以减少器件工作模式及空闲模式下的功耗。
改变ACD位时,必须清零ACSR 寄存器的ACIE位来禁止模拟比较器中断。否则ACD改变时可能会产生中断

Bit 6 – ACBG: 选择模拟比较器的能隙基准源
ACBG 置位后,模拟比较器的正极输入由1.23V能隙基准源所取代。否则, AIN0 连接到模拟比较器的正极输入。

Bit 5 – ACO: 模拟比较器输出
模拟比较器的输出经过同步后直接连到ACO。同步机制引入了1-2 个时钟周期的延时。

Bit 4 – ACI: 模拟比较器中断标志
当比较器的输出事件触发了由ACIS1 及ACIS0 定义的中断模式时,ACI 置位。
如果ACIE 和SREG 寄存器的全局中断标志I 也置位,那么模拟比较器中断服务程序即得以执行,同时ACI 被硬件清零。
ACI 也可以通过写"1” 来清零。

Bit 3 – ACIE: 模拟比较器中断使能
当ACIE 位被置"1” 且状态寄存器中的全局中断标志I 也被置位时,模拟比较器中断被激活。
否则中断被禁止。

Bit2 – ACIC: 模拟比较器输入捕捉使能
这个功能用于检测一些微弱的触发信号源,节省一个外部运放。
ACIC置位后允许通过模拟比较器来触发T/C1 的输入捕捉功能。
此时比较器的输出被直接连接到输入捕捉的前端逻辑,从而使得比较器可以利用T/C1 输入捕捉中断逻辑的噪声抑制器及触发沿选择功能。
为了使比较器可以触发T/C1 的输入捕捉中断,定时器中断屏蔽寄存器TIMSK 的TICIE1 必须置位。
ACIC 为"0” 时模拟比较器及输入捕捉功能之间没有任何联系。

Bits 1, 0 – ACIS1, ACIS0: 模拟比较器中断模式选择
这两位确定触发模拟比较器中断的事件。
ACIS1 ACIS0 中断模式
0 0 比较器输出变化即可触发中断
0 1 保留
1 0 比较器输出的下降沿产生中断
1 1 比较器输出的上升沿产生中断
需要改变ACIS1/ACIS0 时,必须清零ACSR 寄存器的中断使能位来禁止模拟比较器中断。否则有可能在改变这两位时产生中断。
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -