我正在使用PIC18F4680,在以HSPLL模式在40 MHz外部时钟源或10 MHz晶振上运行时遇到问题。在HS模式下使用10 MHz晶振似乎还可以,在HSPLL模式下使用5 MHz晶振也可以。
发生的情况是,PIC启动,工作了几秒钟,然后关闭了一段时间,然后再次启动。该周期的总时间约为5秒,其中PIC会在第二秒的早期停止工作。
我还注意到,有时当我在面包板的电源总线上添加足够大的放电电容器时,PIC会正常工作。有趣的是,只有在PIC已经运行的情况下添加电容器时,才会发生这种情况。如果我在那里用面包板为面包板供电,或者我将电容器没有完全放电,问题仍然存在。
我在一些站点上读到,由于PIC在更高频率和最低最低工作电压下的功耗增加,可能会发生与我类似的问题。在这些情况下,如果电源上存在一些短电压降,则它们很可能在该频率上达到PIC的最低工作电压,因此,最好在面包板上增加电容器以解决该问题。由于在40 MHz的满负载下,整个电路使用大约64 mA的电流,所以我的第一个想法是放置大约钽电容器,希望它们足够大并且具有足够低的ESR以解决问题。 。一个没有帮助,第二个也没有帮助。因此,我添加了一个铝质电容器,但这也没有帮助。100 μ ˚F铝电容器无效。最后,我添加了一个1 mF的铝电解电容器,然后第一次电路工作正常,直到关闭并打开电源。我还应注意,出于测试目的,我使用5.5 V的Vcc,这是该微控制器的最高额定电压。这应该给我留出一些空间,直到4.2 V(40 MHz的最低工作电压)为止。
接下来,我读到有时浮空的输出可能会引起毛刺,因此我在所有未使用的引脚上放置了下拉电阻,但这两个都没有帮助。之后,我已经读到,有时如果振荡器输入悬空,则可能会出现问题,因此我尝试使用大约电阻将它们连接至GND ,但这没有帮助。10 中号Ω
由于从振荡器的输出到PIC的振荡器的输入的线长,我预料会有问题,但我没想到与PIC上的振荡器引脚非常接近的10 MHz晶振会出现问题。同样对于晶体,如果由于面包板引起的振荡器信号失真是问题所在,我也希望在HS模式下也会出现问题,但是在HS模式下,PIC可以正常工作。
我通常使用33 pF的晶体电容器,但我也尝试使用15 pF的电容器,但无法检测到任何变化。
我还要注意,该PIC具有故障安全时钟监视器和内部/外部振荡器切换功能。我尝试启用它们两个,希望它们至少可以确认问题出在振荡器上,但是它们对解决问题没有帮助。它们是打开还是关闭没有区别。
为了测试目的,我还禁用了看门狗定时器,掉电复位和堆栈上溢/下溢复位。我认为我已关闭了该芯片的所有复位源。而且程序处于无限循环中,所以它没有结束。
PCF8583没有任何问题,即使PIC自身复位,PCF8583仍可以正常工作,但另一方面,它的最低电压要低得多。
不幸的是,我没有示波器,但是我使用声音(96 kHz采样率)卡进行了一些测试,并且我注意到RTC开启时,电源线上存在25 Hz的噪声。我正在使用的程序报告峰峰值在300 mV左右,但是我不知道有多少值得信赖,也不知道这是否足以对PIC造成任何问题。当一切都关闭时,噪声的峰峰值之间约为100 mV,因此应该没问题。
如果有帮助,请看以下面包板本身的图片:(右键单击->查看完整尺寸的图片)
有人知道这里发生了什么吗?
最后,我可以只在20 MHz下运行PIC,但是如果我需要更多的处理能力,我希望能够在40 MHz下运行。
更新
我在面包板本身上放置了另一个稳压器,现在声卡拾取的噪声要低得多(峰峰值之间约为50 mV),但这并没有影响主要问题。