完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我试图在PIC18F中设置一个10mS“心跳”计时器。这个想法是计时器每10mS触发一个中断,ISR将增加一个中断安全变量,以便其他代码通过调用集中的、中断安全的函数来获得时间戳。这在多个平台上,包括最近的PIC24F。但是现在,在PIC18F上,我找不到一个可以预装的16位定时器(!)?!)定时器2和4具有Microchip所称的“周期寄存器”,但这个和计时器只有八位。当与预分频器和后分频器结合时,最大除数是64K,不足以将16MHzTcy划分为10mS周期。唯一具有足够分辨率的定时器是T1和T3。但是它们没有预加载/周期寄存器,这意味着ISR必须预加载它们。好的。。。但是,当计时器寄存器被写入时,预分频器被清除(!)?!)因此,你被保证失去同步,这将是一个累积问题,因为无论在预定标器中累积了多少计数,每次中断都会被丢弃。更糟的是,如果系统中有多个中断,那么数量将根据您在主代码或ISR中的位置而变化。如果定时器中断发生时您正忙于服务另一个中断事件,则预加载定时器之前的指令周期数目是不确定的。我发现创建实际的自预加载定时器的唯一方法是浪费ECCP模块并使用它的“特殊事件触发器”来指定o在计时器上进行比较,当达到计数时重置,并触发ECP中断的ISR。不清楚ECCP定时器重置是否也重置了定时器的预分频器,但是由于它发生在硬件中,周期损失将最小。在PIC18F中的八位定时器?或者,你真的必须浪费一个完整的ECP模块来完成这个非常基本的操作吗?谢谢!
|
|
相关推荐
4个回答
|
|
这是一个有20年历史的遗漏。硅的成本较高,时钟频率降低4~8MHz。这给了你100毫秒加上定时器2。他们可以放入32定时器,当然。但我认为市场营销并没有感觉到需求。看看PIC32,它有16位定时器,可以将其链接到32位。那是怎么回事?
|
|
|
|
我想这就是“这个线索的要点”:答案已经给出:你没有遗漏任何显而易见的东西,这是不能做的,硬件不是这样做的,抱怨在微芯片部分的设计选择将无济于事。是的,他们可以用这样的方式建造计时器,不,他们没有。
|
|
|
|
对。那真是太糟糕了。希望在K40:)@ OP:你可以在不干扰预定标器的情况下向定时器的高字方向移动。读取数据表。外部时钟也可以工作。
|
|
|
|
胜于无事:
|
|
|
|
只有小组成员才能发言,加入小组>>
5082 浏览 9 评论
1956 浏览 8 评论
1891 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3119 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2190 浏览 5 评论
636浏览 1评论
518浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
376浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
541浏览 0评论
442浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-3 09:06 , Processed in 1.517685 second(s), Total 83, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号