完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我用PIC18f26K22工作,我需要做一些精确的计时。在Pinguino项目中,我有一个U32系统时钟计数器,每隔107秒左右翻转。它以时钟速度的1/2更新。这是系统。GETCP0CONT。有什么类似的东西可以用在我的芯片上吗?如果不是,我能做一个不被任务和中断打断的吗?
|
|
相关推荐
14个回答
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
不行。只要你不写到定时器寄存器,它就保持计数,没有滴答声损失。通常把重新加载值写到定时器寄存器,试图将翻转周期设置为小于完整的16位翻转计数。这会导致不精确,因为它会重置任何预分频器,并且取决于如何重置,这会由于中断延迟而给计数值增加抖动。
|
|
|
|
|
|
这个解释真的帮助我解决了一些其他问题,谢谢。
|
|
|
|
|
|
跟踪计时器1翻转并不像看上去那么简单。参见PIC16F1938——将捕获扩展到32位
|
|
|
|
|
|
KiloOne:你一定是想张贴一个含有超级禁词的东西。带有商标的设备名称,它以“i”开头,并且由带有被咬水果标志的科技公司所有,导致您的帖子消失。如果你不能理解这个冒犯性的单词(而且它可以在一个较长的单词里面),把帖子作为一个文本文件附加,而不是张贴它!
|
|
|
|
|
|
哇,刚刚失去了一个小时,撰写,这是一个有点缩短,但比较后的记忆。我想我会用Notepad++撰写文章,从现在开始粘贴:(我想我已经掌握了链接的要点,当在多个滚转中使用多个CCP和TMR组合时,以及涉及到非常高的精度和可靠性时,这似乎是一个主要问题。我没有看到关于这个问题的全面解决方案(虽然我很可能把它拼在一起)。最后一篇文章似乎甚至可能给出了一个没有评论的主要备选方案。虽然这个问题可能不会影响我需要的精度,但我确实有两个rpm类型的信号,需要在10ms到1000ms周期内监控。我的总体游戏计划已经整理好了):我已经建立了6个PIC18液晶显示电路板,假设我将使用引脚RB6和RB7上的IOC来监控这些rpm信号,我不期待任何“挂线”来使CCP方法工作。我可以在每秒1/2秒左右更新我的液晶显示器上的RPM值。这个pcb的用途是作为我的电动拉扎尔飞机的座舱显示器,它有两个电机和两个12电池,需要监测连同几个温度等。这是我的第二代显示器,第一代是更复杂的Pinguino供电的。我开始相信我可以把我的TMR2用于最初的(和硬件存在的)IOC rpm概念。自启动以来,我使用MILIS变量保持绝对时间。我的TMR2被设置为980us,而不是1000us,这样我就可以通过使用.s>>8(在运行中,这个方法显示63600个‘处理器秒’(.s>>8)获取63640?电话秒,所以MLLIS & GT;GT;8工作。这足够接近我的“秒”,因为引导需要。为了快速地将事件定时到“最接近ms”的精确度(就像我对这篇文章的rpm需要),我想我可以只使用u32毫秒变量,而不必处理CCP和“挂线”。在我的例子中,我没有看到毫秒滚动,因为处理器“会话”永远不会长于50小时左右(毫秒滚动大约是1200小时)。我对这个方法有一个问题,我需要指导。在这两个电池中,每个电池都有~12ms的串行数据比特流,我必须每秒解析一次(它们报告电池电压)。不幸的是,我没有一个时钟线来解析这些。这些12ms突发的比特是32兆宽的。有12组32位,每组32位的第一位总是高,每组的最后6位总是低。对于这些组,我最初的无定时器的解析概念是这样的(其中bval是输入端口的当前状态):不幸的是,我认为,转t键如果我把我的IOC/TMR2概念用于rpm读数,他每隔500ms中断12ms就可能使rpm读数搞砸。我想我陷入了困境,因为我假设我有一个系统时钟计数器,就像我使用Pinguino一样(我相信它对中断是否打开没有影响)。有人看到我自己挖洞的路,或者是坟墓?哇,那个被禁止的词真是折磨人。我在这个帖子上花了好几个小时编写第一个版本,它只是消失了。我超级疯狂,没有警告等!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!我真的很想从它真正帮助我理清我心中关于我项目的想法后第一回的文本,它只是被永远抹去吗??????????????????????
|
|
|
|
|
|
最后,它是一段时间内的脉冲。或脉冲的时间周期。设置计时器,只要你能,直到半秒。除非你做了其他事情,否则你的系统时钟会很快。然后用你选择的方式来计数脉冲。轮询、中断、计数器、COP、IOC。当时间点击保存,清除,并设置一个标志,以便主知道更新。
|
|
|
|
|
|
我想保持我的时钟快,直到我知道我真的不需要它。我还有很多代码要写。此外,它弥补了我在编写高效代码方面缺乏经验(我真的没说过我这么做了吗?)我想我可以把我的~12ms的中断解析OFF例程调整到11.76ms。这样我就可以在每次~12ms的解析结束时将.s变量增加12,然后再打开中断。这使我的时间保持正确。我假设如果我只是在中断之外asm("di")和asm("ei"),那么所有的定时器都会从中断的地方开始计时,如果这是不正确的,请告诉我。如果我只是不更新RB6和RB7的国际奥委会中断中的rpm值,如果12ms解析,我想我可以保持rpm的正确。NG已经发生(或正在发生)之间的当前RPM脉冲和开始的最后一个。我可能仍然活着:
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1123浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1095浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
873浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 01:44 , Processed in 1.091289 second(s), Total 100, Slave 82 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1120