1

我正在使用 PIC24F16KA101 读取 ADC。Adc 信号将随机出现,因此我将 MCU 置于睡眠模式。我喜欢在信号超过阈值时唤醒单片机。当我用谷歌搜索这个时,我发现了很多与此相关的主题,但我想在这个问题上得到澄清。我找到了一些解决这个问题的方法,但我想要一个功耗最小的解决方案。

  1. 以最大频率采样 ADC(因为信号是随机的高频脉冲)。在 MCU 唤醒时使用基于系统时钟的 Adc 时钟(我使用 32MHz FRCPLL),并在它进入睡眠状态之前更改为 ADRC 内部时钟,以便 adc 将在睡眠模式下进行采样。这样,我希望,当阈值较高时,我可以唤醒模块(通过设置 ADC 中断优先级大于 CPU 优先级)。但为此,我必须使用 adc 不断采样。

  2. 向比较器模块提供相同的 Adc 输入,并使 MCU 在不处理时进入睡眠模式并关闭 adc。当输入高于比较器阈值时,模块可以唤醒并启动 adc。我认为,在这种情况下,比较器将在睡眠模式下工作。但我担心我可能会错过一些重要的信号信息(因为在比较器中断后打开 adc 需要时间)。

  3. 另一种是使用定时器以指定的时间间隔对 adc 进行采样,但由于信号是随机的,因此可能会错过信号。

哪个会更好,或者有其他解决方案吗?请帮助我.... 另外,我想知道内部 ADRC 振荡器的频率。

4

1 回答 1

0

方法二可能会起作用,具体取决于您需要转换的信号的长度。您可以查看数据表以了解转换所需的时间。

至于你的 ADRC 振荡器的频率,这取决于你。AD1CON3 的第 15 位允许您选择内部振荡器或外部振荡器。如果您选择内部,您可以通过设置位 5:0 使其成为 CPU 频率的倍数。

于 2014-06-12T23:48:41.053 回答