完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好!
我遇到一个奇怪的问题,用Internal Oscillator 1 ,调用F2806x_SysCtrl.c中 IntOsc1Sel()函数,定时器0的100ms中断里面有个PID调节,最后PID能调节稳定,PID可以使用。但是我用示波器测定时器中断,发现有100多us的误差,即设置的是100ms定时器中断,用示波器实测的话是99.9ms。 我通过外部10M 的有源时钟源给DSP提供时钟,如下图,调用F2806x_SysCtrl.c中的 ExtOscSel();函数,最后发现PID不能稳定下来,震荡,用的是和内部时钟源一样的参数,我用示波器测定时器中断,也是我设置的100ms。 请各位专家分析一下,我就修改一句话,把 ExtOscSel();修改为IntOsc1Sel();系统最后又PID稳定下来,把IntOsc1Sel();修改为ExtOscSel();后PID调节的系统又震荡。我觉得可能是我设置的不对,或者是初始化不对,现在没有找到解决的办法 |
|
相关推荐
7 个讨论
|
|
szbliy 发表于 2018-11-21 07:22 10#您好! 1、我把系统时钟除以4通过GPIO18/XCLKOUT输出后,用内部晶振测得波形图如下图,波形图不是想象的方波,不知道对不?还有测得的方波频率23MHz 用外部时钟源输入到DSP 的GPIO19/XCLKIN 晶振测得波形图如下图,还有测得的方波频率22.5MHz 2、我调节变频器是在100ms定时器中断,每次进入中断,把一个引脚电平翻转,分别采样内部晶振如下图: 采样外部时钟源输入时钟,每次进入100ms中断翻转的电平如下: 可以看出,还是有差别的,但是差别不是很大。 3、硬件上布局如下 4、软件上设置 用DSP内部的晶振调用的函数 void IntOsc1Sel (void) [ EALLOW; SysCtrlRegs.CLKCTL.bit.INTOSC1OFF = 0; SysCtrlRegs.CLKCTL.bit.OSCCLKSRCSEL=0; // Clk Src = INTOSC1 SysCtrlRegs.CLKCTL.bit.XCLKINOFF=1; // Turn off XCLKIN SysCtrlRegs.CLKCTL.bit.XTALOSCOFF=1; // Turn off XTALOSC SysCtrlRegs.CLKCTL.bit.INTOSC2OFF=1; // Turn off INTOSC2 EDIS; ],调用这个函数,系统如上贴所述,最后PID能够达到稳定。 用外部时钟源输入时钟调用如下函数 void ExtOscSel (void) [ EALLOW; SysCtrlRegs.XCLK.bit.XCLKINSEL = 1; // 1-GPIO19 = XCLKIN, 0-GPIO38 = XCLKIN SysCtrlRegs.CLKCTL.bit.XTALOSCOFF = 1; // Turn off XTALOSC(External Crystal Oscillator ) SysCtrlRegs.CLKCTL.bit.XCLKINOFF = 0; // Turn on XCLKIN SysCtrlRegs.CLKCTL.bit.OSCCLKSRC2SEL = 0; // Switch to external clock SysCtrlRegs.CLKCTL.bit.OSCCLKSRCSEL = 1; // Switch from INTOSC1 to INTOSC2/ext clk SysCtrlRegs.CLKCTL.bit.WDCLKSRCSEL = 0; // Clock Watchdog off of INTOSC1 always SysCtrlRegs.CLKCTL.bit.INTOSC2OFF = 1; // Turn off INTOSC2 SysCtrlRegs.CLKCTL.bit.INTOSC1OFF = 0; // Leave INTOSC1 on EDIS; ]最后系统中断里面的PID输出不能稳定,呈现正弦波形式的波动,波动周期有20多秒, 使用DSP内部晶振和外部的晶振唯一的区别就在于如下: 使用外部晶振程序: // IntOsc1Sel(); // IntOsc2Sel(); ExtOscSel(); 使用内部晶振程序: IntOsc1Sel(); // IntOsc2Sel(); //ExtOscSel(); 我使用的外部时钟源是10Mhz的。 现在问题依然存在,使用内部晶振和外部时钟源,最后的效果不一样。应该说外部有源时钟输入比内部晶振精度更高,但是为什么使用内部晶振可以稳定,使用外部有源时钟源就不稳定。 |
|
|
|
|
|
chnq1984 发表于 2018-11-21 07:33 比较明显,是XCLKOUT不准确,如果你确定使用的倍频和分频是相同的,那问题应该在输入的外部时钟上。 建议你再量一下XCLKIN的频率,看看它是不是准确的10Mhz? If a post answers your question, please mark it with the "verify answer" button. |
|
|
|
|
|
szbliy 发表于 2018-11-21 07:22 10#您好! 就这个标题来说,您的回答是详细的,谢谢。 今天下午找到问题所在了,我PWM的频率为1K,通过调节占空比来调节变频器速度。 问题的关键在于这个1K,我用外部有源时钟源输出10M的频率进入DSP的XCLKIN,经过PLL得到系统时钟为90M,通过ePWM模块输出的频率为1.0000K 而我使用内部晶振,内部的晶振频率和温度有关系,随着温度的升高而升高(我还没有做内部晶振频率的补偿),所以我按90M的系统时钟设置ePWM模块,输出的PWM频率为1.0043K,问题就差在这4.3Hz,我把通过调节EPwm3Regs.TBPRD这个寄存器,把输出PWM时钟凑到1.0000K时,出现了和使用外部时钟一样的问题,变频器调速不稳定了,即时我给定一个固定的占空比,变频器调速也不稳定了,来回波动。 我又尝试调节PWM的频率,只要避开1K这个频率,我使用内外时钟效果都是一样的。问题在于变频器在1K不稳定、有可能出现谐振。 |
|
|
|
|
|
yanhui fu: 您好。我的28069系统在使用外部时钟时也碰到问题。主要是GPIO19脚接入时钟不行,只能从GPIO38脚接入。具体情况请看下帖。 http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/52185.aspx 看您的帖子,应该是用GPIO19脚做通了。请问: 我在ExtOscSel()中运行了SysCtrlRegs.XCLK.bit.XCLKINSEL = 1; // 1-GPIO19 = XCLKIN, 0-GPIO38 = XCLKIN 外部时钟输入线默认为GPIO38,要切换到GPIO19除了上述的这行代码,还需要其他的软件或者硬件设置吗? 从现在的情况来看,好像是时钟切换没有生效,系统仍然在在使用GPIO38脚进来的时钟。 谢谢! |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
677 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
599 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1052 浏览 1 评论
736 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
523 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
160浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
124浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
125浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
122浏览 12评论
TPA6304-Q1: TPA6304 两片公用一组I2C的话,其中一片配置不成功怎么办
167浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 21:23 , Processed in 0.975087 second(s), Total 74, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号