发 帖  
原厂入驻New
[问答]

pic cpu不能在外部振荡器上运行怎么办

196 PIC LED
分享
我对PIC18F27 J53有一个问题。我已经浏览过数据表一百次了。我已经看过振荡器的流程图,所有的东西都应该设置为从外部晶体流出,但它在内部振荡器上运行。我有一个20mhz的水晶连接,并尝试了usb(工作良好),但有一个循环计数至100万,打开一个LED,然后计数至1000000和关闭它。当我将内部振荡器设置为3KHz时,LED保持大约3秒,关闭大约3秒。当我改变信息时,它会改变LED闪烁速度。所以它必须运行代码。我只是不能为我的生活找出原因。我试图控制一些WS28 12B在我的最终代码,这是相当困难的内部振荡器速度。所以让它从外部运行是必要的。下面是用于测试振荡器速度的简单代码IM,我希望能了解一下我的错误所在。
0
2020-5-12 10:10:15   评论 分享淘帖 邀请回答

相关问题

19个回答
在这些配置行之前是否包括XC.H?(你应该)一旦你加入了XC.H,你就不需要包括P18F27 J53。
2020-5-12 10:29:21 评论

举报

我使用mcc18编译器。我已经把include<p18cxxx.h>放在代码的顶部(在语用之上),并注释掉了\include<p18f27j53.h>所有仍在内部振荡器上运行的内容
2020-5-12 10:42:41 评论

举报

你有它的注册副本吗?否则,你最好远离长期被遗弃的过时编译器。如果不被C18世界所束缚,XC8有很多优点。
2020-5-12 10:57:25 评论

举报

我没有挂号的复印件。只是习惯于使用它。最初我用这个评价来做几个引导加载程序。我尝试编译到XC8,但仍然得到相同的结果。我从图中读回了代码,最后几个字节(应该是配置字节)与应该能够作为时钟源进行结晶的设置相匹配。我认为微控制器本身没有问题,因为我试过在我制造的两个不同的板上,这两个板上的晶体接近微针,两个板都使用18f27j53。我倾向于赞成特定的PIC,因为它的PPS特征和CCP输出的丰富性。但是我仍然不明白为什么我不能使它比内部振荡器运行得更快。我的理解是,进入usb块的输出应该是48mhz,应该能够被路由到cpu,这应该决定代码运行的速度。但是,如果它运行在48 MHz,我的循环计数到1000000应该跑得如此快,LED将切换到小于1秒。
2020-5-12 11:07:59 评论

举报

为了在3秒内计数到1000000,假设每个计数有15个周期(查看反汇编以获得准确的计数),它是5000000个周期/秒,大约为20MHzFOSC。
2020-5-12 11:23:20 评论

举报

顺便说一下,如果没有使用USB模块,使用ITCOSCPLL模式,PLLDIV=2,48 MHz也是可以实现的。
2020-5-12 11:42:55 评论

举报

嘿,我还没有在usbus最新的mplab x上工作过,它有很好的特性,每个振荡器选择位一个接一个,比如hs1,hs2,而且可能更多地使用晶体振荡器选择会造成问题。
2020-5-12 11:55:33 评论

举报

我认为内部振荡器正在使用的主要原因是当我改变OSCCon值(BITS6—4)时,LED闪烁率发生变化。当我把内部振荡器设置为4 MHL时,它需要大约1秒而不是3秒。这些位应该只改变内部振荡器的后定标器。除非我搞错了,不知何故,外部水晶仍然使用内部后定标器。
2020-5-12 12:11:34 评论

举报

当使用内部振荡器为4MHz时,是否使用了IntoScLL模式?
2020-5-12 12:28:34 评论

举报

不,我把它设置为HSUPLL,就像上面的代码一样。但是,当我把它改为iToSCPLL时,速度保持不变(随音阶变化而变化)。但是,它必须在hs_pll模式下使用晶体,因为当我缩短晶体时,代码停止(但不在intosc_pll模式下)。但我仍然困惑为什么后缩放器在HSL PLL模式中改变速度。
2020-5-12 12:40:50 评论

举报

你能把它设置成HSPL,并编程PIC,然后从Flash中读取配置位,并验证它吗?我认为它可能有什么问题…+ +是否有可能为项目选择另一个PIC?BTW在时钟图中可能有一些故障,对PLL模块的ItoSc应该来自于ItoSc后缩放器…
2020-5-12 12:48:27 评论

举报

经过这么多次,我可以建议:不要计算指令来检查振荡器。使用定时器或UART或一些可以计数和控制引脚的模块。它更容易出错。-保罗
2020-5-12 12:57:22 评论

举报

我已经读取配置位,PLL启用并开启。该图确实显示了来自ItoSc的输入经过后标器,然后进入PLL。所以我认为是正确的。但是我没有选择的iNoSc。我选择了HSL PLL。当我到家的时候,我必须试试这个计时器,看看它是否有效。我没想到
2020-5-12 13:13:11 评论

举报

BoP,啊,这是家里的一个项目。在我的几乎所有项目中,我有一个1ms定时器来运行各种活动。我做的第一件事就是用1ms中断服务例程切换一个PIN。如果我没有看到500赫兹的信号,我首先解决这个问题。你开始看到,你知道你还活着,可以一步一步地从那里开始。当然,在PIC18上,你只能得到两个ISR(高优先级和低优先级,如果你使用优先级)。所以它是一个在各种中断源上测试标志位的大ISR。1ms的定时器只是其中之一。现在等待:如果有人已经没有说,最大水晶可用于这个东西与4X锁相环启用是16MHz。它不会运行在80兆赫(4X 20)。您可能会得到一些模块来运行(几年前我就意外地执行过),但这部分超出了规范。如果你想运行48兆赫,你使用16MHz晶体。在20MHz的晶体上,你只能跑20MHz。祝你好运。-保罗
2020-5-12 13:30:02 评论

举报

我很好奇你打算如何驱动WS28 12B,以及为什么它很难与内部振荡器。我使用PIC16F1类设备,他们似乎能够驱动他们很好地只用内部设备。
2020-5-12 13:46:37 评论

举报

对Ocelo-在PLL之前有一个分频器。我已经设置了5除以给锁相环第四个它需要的,然后被提升到第九个除以2,最后达到48mhz.4usb工作,所以我肯定它必须得到48mhl(除非它以usb低速运行,以较低的速度工作)。对DaviBLIT我打算使用BIT Bang.如果我使用常量,并且在开始传输之前为LED设置2个4位值,它就可以工作。但是如果我从一个数组(每个led一个字节,例如led_.[._.])中取出3个独立的8位(每个颜色1个),那么将3个字节转换为1个变量需要太长时间,并且只有大约10个led响应。如果我使用1变量而不是字节数组,它工作得很好,例如:led_.[1],但是增加到下一个数组字节似乎需要足够长的时间来使ws2812芯片触发复位脉冲。
2020-5-12 14:04:21 评论

举报

1秒-这是关于如何快速增加32位数字1000000次与48兆赫时钟。所以,PLL可能正在工作。我不认为PLL会用PLLDIV=5(如你的语法中所设定的那样)来操作。所以,它不是水晶就是PLLDIV不是5?如果你认为你从IPCOSC获得PLL而不是水晶,请看OSCCon的0…1位。如果将它们设置为0,则PLL的源将由FCOS1值确定。它似乎在你的语用中被正确地设定了。OsCon的其余部分不重要吗?我会从你的程序中读取Ong1L(0x1FFF8)CONT2L(0x1FFFA)来检查它们是什么。
2020-5-12 14:23:06 评论

举报

我从来没有使用过18FXXJXX部分,所以我不知道你在OSC上有更多的选择。我使用的PIC18只有4×PLL,ON或OFF。-保罗
2020-5-12 14:28:43 评论

举报

我刚做了一个程序,设置Time0来中断,并切换A引脚。用引脚连接到我的pickit2(它在技术上不支持18f27j53,但是我把它添加到我的设备文件中,所以它工作),并读取它保持高和低的时间。我在家里没有示波器,所以这应该足够用于IM检查。我使用“MikReleltRoNokk-定时器计算器”来获得设置Time0所需的值,以便得到1ms的时间。我把它设置为48mhz的振荡器,当我应该得到1ms时,我得到了4.8ms,所以我把它设置为20mhz,根据这个计算定时器0值,现在它给出1ms开,1ms关脉冲。所以我猜它用的是水晶,而不是乘法。但是当OSCCon设置为0x00时,它只给出1ms的脉冲。当我将OSCCON设置为0xF0,将比特设置为4-6高(IRCF<2:0>:内部振荡器频率选择比特)时,根据将内部振荡器设置为8mhz的数据表,我得到了.424ms的脉冲,但是振荡器结构的框图显示这不应该影响任何东西。除非内部振荡器被设置,否则它不存在。
2020-5-12 14:41:16 评论

举报

只有小组成员才能发言,加入小组>>

125个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /8 下一条

快速回复 返回顶部 返回列表