用户可通过对SFIOR、ACSR这两个寄存器相关位的设置来实现对模拟比较器控制。
1.特殊功能I/O寄存器——SFIOR
寄存器SFIOR中的第3位ACME为模拟比较器多路使能控制位。当该位为逻辑“1”,并且模数转换(ADC)功能被关闭(ADCSRA寄存器中的ADEN使能位为“0”)时,ADC多路复用器为模拟比较器选择负极输入。当此位为“0”时,AIN1连接到比较器的负极输入端。
2.模拟比较器控制和状态寄存器——ACSR
ACSR是模拟比较器主要的控制寄存器,其中各个位的作用如下:
(1)位7——ACD:模拟比较器禁止
ACD置位时,模拟比较器的电源被切断。可以在任何时候设置此位来关掉模拟比较器。这可以减少器件工作模式及空闲模式下的功耗。改变ACD位时,必须清零ACSR寄存器的ACIE位来禁止模拟比较器中断。否则ACD改变时可能会产生中断。
(2)位6——ACBG:模拟比较器的能隙参考源选择
ACBG置位后,模拟比较器的正极输入由能隙基准源所取代。否则,AIN0连接到模拟比较器的正极输入。
(3)位5——ACO:模拟比较器输出
模拟比较器的输出经过同步后直接连到ACO。同步机制引入了1~2个时钟周期的延时。
(4)位4——ACI:模拟比较器中断标志位
当模拟比较器的输出事件符合中断触发条件时(中断触发条件由ACIS1和ACIS0定义),ACI由硬件置“1”。若ACIE位置“1”,且状态寄存器中的I位为“1”时,MCU响应模拟比较器中断。当转入模拟比较中断处理向量时,ACI被硬件自动清空。此外,也可使用软件方式清零ACI,对ACI标志位写入逻辑“1”来清零该位。(www.xing528.com)
(5)位3——ACIE:模拟比较器中断允许
当ACIE位设为“1”,且状态寄存器中的I位被设为“1”时,允许模拟比较器中断触发。当ACIE被清“0”时,模拟比较器中断被禁止。
(6)位2——ACIC:模拟比较器输入捕获允许
当该位设置为“1”时,定时计数器1的输入捕获功能将由模拟比较器的输出来触发。在这种情况下,模拟比较器的输出直接连到输入捕获前端逻辑电路,从而能利用定时器/计数器1输入捕获中断的噪声消除和边缘选择的特性。当该位被清零时,模拟比较器和输入捕获功能之间没有联系。要使能比较器触发定时器/计数器1的输入捕获中断,定时器中断屏蔽寄存器(TIMSK)中的TICIE1位必须被设置。
(7)位1、0——ACIS1、ACIS0:模拟比较器中断模式选择
这2位决定哪种模拟比较器的输出事件可以触发模拟比较器的中断。不同的设置参见表9-1。
表9-1 模拟比较器中断模式选择
注意:当要改变ACIS1、ACIS0时,必须先清除ACSR寄存器中的中断允许位,以禁止模拟比较器中断;否则,当这些位被改变时,会发生中断。
3.模拟比较器的多路输入
ADC复用器可用来完成这个功能。当然,为了使用这个功能首先必须关掉ADC。如果模拟比较器复用器使能位(SFIOR中的ACME)被置位,且ADC也已经关掉(ADCSRA寄存器的ADEN为0),则可以通过ADMUX寄存器的MUX[2∶0]来选择替代模拟比较器负极输入的管脚,如表9-2所示。如果ACME被清零,或ADEN被置1,则AIN1仍将为模拟比较器的反向输入端。
表9-2 模拟比较器多路输入选择
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。