1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
早上好,我正在使用PIC33EP512MC806,我正在开发一个应用程序,我需要计算OC1模块产生的脉冲数。该模块采用timer4作为时基,初始化代码如下:WriteTimer4(0);IFS1bits.T4IF=0;//Reset标记int定时器4ConfigIntTimer4(T4_INT_OFF&T4_INT_PRIOR_7);OpenTimer4(T4_ON&T4_IDLE_CON&T4_GA)。TE_OFF&T4_PS_1_1&T4_SOURCE_INT,60);T4CONbits.T32=0;OC1CON1=0;/*初始清除控制位*/OC1CON2=0;OC1CON1 bits.OCTSEL=0b010;/*选择TIMER4作为OC模块*/OC1R=0;/*的时钟输入,这只是一个典型的数字,用户名。必须基于波形要求和系统时钟*/OC1RS=2000;/*确定周期*/OC1CON1bits.OCM=6;/*这选择边缘对齐PWM模式*/OC1CON2bits.SYNCSEL=0x1F;/*没有选择触发器或同步源*/我看到的问题是生成的PWM模式*/OC1CON1bits脉冲数不同于我在程序中计数的脉冲数。我发现的原因,但我不确定,显示在附件的示波器图中。紫色通道显示OC1中断功能中的周期被调用,而黄色通道是PWM脉冲。如您所见,有时OC1中断不触发作为PWM脉冲(更确切地说,当我改变责任和周期),因此我松了一些在计数。你有什么想法?谢谢您。
|
|
相关推荐
7个回答
|
|
这张照片有PPS。选择OC1引脚asPin任何计时器/计数器和计数…-)
|
|
|
|
你好,Batgoy,是的,这是一个可行的解决方案,我会记住它是最终的解决方案,Smile:。我的目标,至少目前,包括两个OCx输出,可以独立改变十分之二Hz和200kHz之间的频率。所以我用一个定时器作为PWM的基本计数器,我应该用另一个计时器来计算脉冲。另外,我正在使用另一个定时器来每隔10m s更新一次频率。总的来说,我应该使用5个定时器,考虑到将来我还会添加其他功能,这些定时器很多。你有没有使用过PWM,当你在运行时改变它的频率时,OCxInter.就不会发生如示波器所示的UR?正常吗?谢谢你的回答。
|
|
|
|
什么是紫色通道切换到ISR?”OC1中断函数中的“周期”不能很好地解释它。在您的作用域的屏幕截图中,我看不到任何丢失的脉冲。我只看到它变形,可能是因为其中一个中断被延迟了。如果你放大,就容易多了。
|
|
|
|
你好,NorthGuy,谢谢你的回答。紫色的功能基本上是改变每个OC1中断的管脚LATD1;void_.((inter.,auto_psv))_OC1Inter.(void){LATDbits.LATD1=!LATDbits.LATD1;IFS0bits.OC1IF=0;PWMInterrupt(&m1);}关于示波器图片,附图中的图片显示了更好的问题。正如您所说,可能的原因是我在中断内使用PWMInterrupt函数进行了太多的操作。HSPWM模块工作得很好,但是当我修改它以使用OC1模块(为了达到更低的频率)时,我开始有这个问题。它们之间的唯一区别是如何确定PWM频率,因为对于OC1,我必须同时改变周期和预分频器值。我用来每隔1ms改变频率的函数如下:if(freq>0){.(1){if(Fcy/(pre caler*freq)-1<0xFFFFFFFF)/*Fcy=60000,freq是kHz*/{/*中的浮点数,如果它到达这里,我们发现一个可能的预调频器值*/周期=Fcy/(pre caler*freq)-1;T4CONbits.TCKPS=pre calerR例如,OC1Rs=周期;OC1R=100;中断;否则,如果(预分频器和LT;256){(预分频器=1)预分频器=8;否则,(预分频器=8)预分频器=64;否则预分频器=256;PrasCaleReg + +;/*这是在预分频器寄存器*/}中写入的实际值{OC1R= 0;;C1Rs=2000;断裂;} }您认为OC1中断功能在其他几件事情中是否太多?你能建议我怎么做吗?谢谢您。
|
|
|
|
P.S.我明确地认为问题在于代码部分,因为计算公式“Fcy/(pre caler*freq)-1”只有一次(上面计算两次),所以误差减小。不过,我需要简化它,谢谢。请再帮帮我。
|
|
|
|
看起来你的中断时间比定时器周期要长。一旦发生这种情况,中断就会被推迟,你也可能会失去一些。试着在中断开始时打开LATD1,在结束时关闭LATD1。然后用范围观察它。这样,你就会看到中断所花费的时间。你会看到这个时间有时比PWM周期长。
|
|
|
|
你好,北佬,我把PWM周期计算移到定时器里面更新频率,看起来问题解决了。非常感谢你。
|
|
|
|
只有小组成员才能发言,加入小组>>
5242 浏览 9 评论
2031 浏览 8 评论
1955 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3207 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2256 浏览 5 评论
778浏览 1评论
669浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
596浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
678浏览 0评论
577浏览 0评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 16:26 , Processed in 1.489008 second(s), Total 90, Slave 74 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号