【问题标题】:Why does the comparator on a PIC microcontroller continually generate interrupts为什么 PIC 单片机上的比较器会不断产生中断
【发布时间】:2014-04-24 07:03:00
【问题描述】:

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

这个想法是在模拟输入发生变化时唤醒程序。两个 DAC 提供比模拟输入值略高和略低的参考值。这些连接到比较器的正极引脚。模拟输入是负引脚。

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

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

问题是每次我这样做时,比较器都会立即产生一个中断,因此程序永远不会休眠。我尝试增加 DAC 的参考值,但仍然出现中断。

有人知道为什么会发生这种情况吗?

【问题讨论】:

  • 问题是由启用比较器模块时生成的虚假中断引起的。我通过在启用比较器和启用比较器输入之间添加延迟解决了这个问题(根据 PIC18(L)F2X/4XK22 数据表 DS41412F-page 314 注 2)。还有一些输入电压不稳定引起的问题,我通过更换电源解决了。

标签: comparator pic microchip adc


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多