我正在使用Silicon Labs C8051F120。 下面是我用于比较器的代码。 当我减少电源时,我应该得到一个中断。 但我没有得到中断。 我怀疑初始化程序。 正常电压为5V。当电压降至4.2V时,我应该得到比较器1中断。当电压降至3.V时,我应该得到比较器0中断。 另外我很困惑为什么有两种方法可以启用比较器中断: 1)通过CPTT0MD / CPT1MD:比较器0 /比较器1模式选择 2)EIE1:扩展中断使能1 哪个使用的时间和原因?
#define COMPARATOR_SETTLE 30
void Comp0_Init()
{
char SFRPAGE_SAVE = SFRPAGE;
SFRPAGE = CPT0_PAGE;
CPT0CN = 0x83; // Comparator0 enabled // 20 mV Negative hysteresis
Delay_us (COMPARATOR_SETTLE); // Allow CP0 output to settle for 20 us
CP0RIF = 0;
CP0FIF = 0;
CPT0MD = 0x10;
EIE1 |= 0x10;
SFRPAGE = SFRPAGE_SAVE;
}
void Comp0_ISR(void) interrupt (10)
{
CP0FIF = 0;
comp_flag = 1;
}
void Comp1_Init()
{
char SFRPAGE_SAVE = SFRPAGE;
SFRPAGE = CPT1_PAGE;
CPT1CN = 0x83; // Comparator0 enabled // 20 mV Negative hysteresis
Delay_us (COMPARATOR_SETTLE); // Allow CP0 output to settle for 20 us
CP1RIF = 0;
CP1FIF = 0;
CPT1MD = 0x10;
EIE1 |= 0x40;
SFRPAGE = SFRPAGE_SAVE;
}
void Comp1_ISR(void) interrupt (12)
{
CP1FIF = 0;
comp_flag = 2;
}