完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好。我遇到过用pic 18f13k22产生线性调频信号(线性频率增加)的问题。为此,我基于定时器2初始化PWM。我使用定时器0中断来计算频率变化之间的时间。所以每次定时器0溢出时,我减少一个CCPR1寄存器,减少一个PR2寄存器。但有时,在信号的中间,PWM好像在..jpg中是断开的。你能帮我弄清楚吗?如果需要的话,我可以分享代码。谢谢你,杰弗里。
|
|
相关推荐
11个回答
|
|
两个函数使用相同的定时器要干净得多。这样,每个周期只更改一次PR2,并且更容易确保从不将PR2设置为小于当前计数。
|
|
|
|
你如何降低CCPR1?您不能自动减少整个16位寄存器,因此必须确保不向两个寄存器写入中间0。
|
|
|
|
好的,但是我必须使用Time0,因为我需要一个持续600秒的信号,这个信号在600秒期间从40到100 kHz。所以我使用Time0来对PR2和CPR1的每一个变化进行计数。我没有说,但是我需要有50%个占空比。
|
|
|
|
这里是我的代码:在中断中。
|
|
|
|
我不认为这是你的问题的原因,但你应该减少CCPR1L,而不是CCPR1。在PWM模式中不使用CCPR1H。但似乎你允许CCPR1L进入0。
|
|
|
|
好的,我试着在代码中使用CCPR1L而不是CPR1,它没有改变任何东西。你还有别的想法吗?谢谢您。
|
|
|
|
|
|
还有其他一些微妙之处。占空比更新直到下一个PWM周期才生效,但是PR2更新立即生效。如果PR2被重写为比TMR2的当前值低的值,那么当定时器2环绕时,PWM输出将发生严重故障。如果你想要一个无故障啁啾,你必须推迟PR2更新到下一个PWM周期后,你改变占空比,并且必须使用定时器2ISR来更新两者。
|
|
|
|
CCPR1L不能启动到0,因为起始值是50,I减去仅23倍(频率希望数)。
|
|
|
|
我认为我的问题不是因为PR2更改:我从代码中删除了行:CCPR1,并且不再有问题。所以问题不会因为PR2更改而出现,而是因为CCPR1更改。有什么办法解决吗?
|
|
|
|
有什么想法吗?
|
|
|
|
只有小组成员才能发言,加入小组>>
5250 浏览 9 评论
2037 浏览 8 评论
1958 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3219 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2266 浏览 5 评论
791浏览 1评论
682浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
613浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
686浏览 0评论
585浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 18:10 , Processed in 1.166682 second(s), Total 96, Slave 80 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号