为什么PIC单片机上的比较器会不断产生中断

时间:2014-03-18 14:16:58

标签: comparator pic microchip adc

我正在尝试在PIC18F46K22上使用两个比较器模块,其中一个比较器不断产生中断。

我们的想法是在改变模拟输入时唤醒程序。两个DAC提供的参考值略高于模拟输入值,略低于模拟输入值。它们连接到比较器的正极引脚。模拟输入是负极引脚。

当在中断程序中发生比较器的中断时,我禁用比较器模块和比较器中断并清除中断标志。

在我的主线中,我将模拟输出值采样到两个参考DAC,然后重新启用比较器和比较器中断。

问题在于,每次执行此操作时,比较器会立即生成中断,因此程序永远不会休眠。我尝试增加DAC的参考值,但仍然会发生中断。

有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:0)

我曾经遇到过同样的问题。如果使用中断标志检查比较器中断,例如:if(pir1.cmif==1){....}中断继续发生。我使用比较器输出状态在中断例程中检查它,如:if(cmcon0.cout==1){...}else{...}。这对我很有用(按照寄存器可能不同的方式,图片是12f683)。