我正在尝试在PIC18F46K22上使用两个比较器模块,其中一个比较器不断产生中断。
我们的想法是在改变模拟输入时唤醒程序。两个DAC提供的参考值略高于模拟输入值,略低于模拟输入值。它们连接到比较器的正极引脚。模拟输入是负极引脚。
当在中断程序中发生比较器的中断时,我禁用比较器模块和比较器中断并清除中断标志。
在我的主线中,我将模拟输出值采样到两个参考DAC,然后重新启用比较器和比较器中断。
问题在于,每次执行此操作时,比较器会立即生成中断,因此程序永远不会休眠。我尝试增加DAC的参考值,但仍然会发生中断。
有谁知道为什么会这样?
答案 0 :(得分:0)
我曾经遇到过同样的问题。如果使用中断标志检查比较器中断,例如:if(pir1.cmif==1){....}
中断继续发生。我使用比较器输出状态在中断例程中检查它,如:if(cmcon0.cout==1){...}else{...}
。这对我很有用(按照寄存器可能不同的方式,图片是12f683)。