×
嵌入式开发 > 详情

ATmega8的模拟比较器的总结

发布时间:2020-07-02 发布时间:
|

1、当ACBG=1时,使用内部能隙基准源(1.23V)做AIN0端的电压,ACME=0、ADEN=0时外界电压作AIN1端的电压。当外界电压小于1.23V时,红灯亮。否则,绿灯亮。模拟比较器段初始化程序设计:
void ac_init(void)
{
//{{WIZARD_MAP(Analog Comparator)
// Interrupt on Output Toggle
// Bandgap Enabled
// Multiplexer Disabled
ACSR = 0x48;
SFIOR |= 0x0;
//}}WIZARD_MAP(Analog Comparator)
}

ISR(SIG_COMPARATOR)
{
// TODO: Add your code here
if(ACSR _BV(ACO))
{
SET_RED_LED;
CLR_GRE_LED;
}
else
{
CLR_RED_LED;
SET_GRE_LED;
}
}

2、不使用内部的能隙基准源模拟比较器的AIN0、AIN1两端口都直接接外界的电压,直接比较外部的两个电压的状况。当AIN0AIN1时,绿灯亮。否则,红灯亮。模拟比较器段初始化程序设计:
void ac_init(void)
{
//{{WIZARD_MAP(Analog Comparator)
// Interrupt on Output Toggle
// Bandgap Enabled
// Multiplexer Disabled
ACSR = 0x08;
SFIOR |= 0x0;
//}}WIZARD_MAP(Analog Comparator)
}

ISR(SIG_COMPARATOR)
{
// TODO: Add your code here
if(ACSR _BV(ACO))
{
SET_RED_LED;
CLR_GRE_LED;
}
else
{
CLR_RED_LED;
SET_GRE_LED;
}
}

3、模拟比较器的AIN0端接外部电压,AIN1端接模数转换的多路输入端,对两端口的状态的比较。模拟比较器负极输入使用参考表:

当AIN0AIN1时,绿灯亮。否则,红灯亮。模拟比较器段初始化程序设计:
void ac_init(void)
{
//{{WIZARD_MAP(Analog Comparator)
// Interrupt on Output Toggle
// Bandgap Enabled
// Multiplexer Disabled
ACSR = 0x08;
SFIOR |= 0x08;
ADCSRA=0x00;
ADMUX=0x00;
//}}WIZARD_MAP(Analog Comparator)
}

ISR(SIG_COMPARATOR)
{
// TODO: Add your code here
if(ACSR _BV(ACO))
{
SET_RED_LED;
CLR_GRE_LED;
}
else
{
CLR_RED_LED;
SET_GRE_LED;
}
}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32 TIMx 配置