|
CH554的电压比较器能不能产生中断呢?在PDF里似乎没有明确的描述。CMP0是比较器的输出, CMP_IF这一位能在输出结果改变的时候置1。实验代码如下:
- void main() {
- EA = 0;
-
- P1_DIR_PU &=~ 0x30; // P1.4, P1.5 to open-drain
-
- ADC_CFG |= bCMP_EN | bADC_EN | bADC_CLK; // Enable Comparator
- ADC_CHAN1 = 1; // P1.5 AIN2 + (0V or 5V)
- ADC_CHAN0 = 0;
- CMP_CHAN = 0; // P1.4 AIN1 - (0.55V)
- CMP_IF = 0;
- IP_EX |= bIP_ADC;
- IE_ADC = 1;
-
- EA = 1;
- while(1);
- }
- void ADCInterruptEntry(void) interrupt INT_NO_ADC {
- CMP_IF=0;
- qaq=0;
- }
复制代码
P1.4外部接一个RC分压分得0.55V,P1.5外接一个10k电阻到地,外接一个按钮到Vcc(5V)。当按下按钮时P1.5电压大于P1.4,CMPO和CMP_IF都被置1了,这个验证过,但是并没有触发中断。是硬件根本不支持比较器产生中断还是有其他原因呢?
还有一个问题,CH554的比较器参数如何,比如速度失调电压之类的x
|
|