[技术问答] N76E003发现时钟抖动??

[复制链接]
1926|16
 楼主| ztb 发表于 2018-7-31 17:54 | 显示全部楼层 |阅读模式
本帖最后由 ztb 于 2018-7-31 21:24 编辑

就是一个最简单的程序产生7.75K的方波,从示波器上看时钟在不停的抖动.使得频率在7.748--7.751之间跳动.
换一个单片机也是这样.
分析,由于程序非常简单,导致输出抖动的原因就只能是Fsys在抖动了!如此16位PWM的精度如何保证?
程序如下:


$NoMod51                                                ; 不使用标准MCS-51单片机的定义
$INCLUDE (N76E003.INC)                          ; 定义N76E003单片机的所有寄存器


        cseg at 0                                           ; 定义汇编首地址为0x0000
        using 0
main:
        mov        P0M2,#00100001b                ; 设置IO口模式
        mov        P0M1,#10011000b
        clr           ea                                       ; 关中断
loop:
        djnz        r0,loop                                 ;256次R0-1,不是0就循环,延时
        cpl          p0.5                                    ; 使得 P0.5 输出状态反向
        sjmp       loop                                    ; 跳转到 loop 循环
        ;
        end


 楼主| ztb 发表于 2018-7-31 17:58 | 显示全部楼层
补充:抖动频率肉眼可见大约在5hz以内,电源3.3V,Vcc滤波良好.
mintspring 发表于 2018-7-31 18:53 | 显示全部楼层
看不懂汇编啊。。。
mintspring 发表于 2018-7-31 18:53 | 显示全部楼层
你测试一下官方的代码
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* Copyright(c) 2017 Nuvoton Technology Corp. All rights reserved.                                         */
  4. /*                                                                                                         */
  5. /*---------------------------------------------------------------------------------------------------------*/

  6. //***********************************************************************************************************
  7. //  Nuvoton Technoledge Corp.
  8. //  Website: http://www.nuvoton.com
  9. //  E-Mail : MicroC-8bit@nuvoton.com
  10. //  Date   : Apr/21/2017
  11. //***********************************************************************************************************

  12. //***********************************************************************************************************
  13. //  File Function: N76E003 Clock Output demo code
  14. //***********************************************************************************************************

  15. #include "N76E003.h"
  16. #include "SFR_Macro.h"
  17. #include "Function_define.h"
  18. #include "Common.h"
  19. #include "Delay.h"

  20. //======================================================================================================

  21. void main(void)
  22. {
  23.        
  24.     /* Note
  25.        MCU power on system clock is HIRC (16.0000MHz), if need change Fsys source pleaes copy hange system closk source demo
  26.     */
  27.    
  28.                 Set_All_GPIO_Quasi_Mode;                    //in Function_define.h
  29.     set_CLOEN;                                  //System Clock Output Enable
  30. //     Please measure P1.1 (CLO) pin for system clock output, it should as system clock;

  31.     while(1)
  32.     {
  33.         clr_GPIO1;
  34.         Timer0_Delay1ms(500);
  35.         set_GPIO1;
  36.         Timer0_Delay1ms(500);
  37.     }
  38. /* =================== */
  39. }

 楼主| ztb 发表于 2018-7-31 19:32 | 显示全部楼层
这么简单功能的功能用汇编做可以排除一切意外因素.是最能说明问题的了.用C语言做实验反倒是有可能被不知道的因素影响.
gejigeji521 发表于 2018-7-31 20:22 | 显示全部楼层
看不懂啊。。
 楼主| ztb 发表于 2018-7-31 21:43 | 显示全部楼层
mintspring 发表于 2018-7-31 18:53
你测试一下官方的代码

这个例程试过了,也是一样抖动的!
汇编程序14个字节,C语言程序653字节!
所以验证类似的问题还是汇编更高效.
jcdzxh 发表于 2018-7-31 23:33 来自手机 | 显示全部楼层
目前hsi一般全压1%误差,
jcdzxh 发表于 2018-7-31 23:35 来自手机 | 显示全部楼层
你这个抖动(7751-7748)/7748=0.039%,已经很不错了,要求再高用hse
wangshujun 发表于 2018-8-1 09:01 | 显示全部楼层
示波器的频率测量不是很精密,不能作为评判标准
 楼主| ztb 发表于 2018-8-1 19:18 | 显示全部楼层
wangshujun 发表于 2018-8-1 09:01
示波器的频率测量不是很精密,不能作为评判标准

频率准不准不是我的论题,是通过示波器看见方波的宽度在抖动.
 楼主| ztb 发表于 2018-8-1 19:23 | 显示全部楼层
jcdzxh 发表于 2018-7-31 23:35
你这个抖动(7751-7748)/7748=0.039%,已经很不错了,要求再高用hse

无论抖动多少,关键是抖动是因为什么引起的.以前用过几种不同的带内部RC振荡器的单片机这是头一次发现这个问题.
经实验这个抖动与外接电路好像无关且频率较低.难道是像开关电源IC那样用抖动分散频谱以提高EMI性能?
heisexingqisi 发表于 2018-9-11 22:06 | 显示全部楼层
这点抖动还算抖动啊。
heisexingqisi 发表于 2018-9-11 22:07 | 显示全部楼层
你保证你用于测量的那个时钟准的很?
自己和自己玩 发表于 2018-9-12 09:36 | 显示全部楼层
未发现
jekey 发表于 2018-9-12 10:36 | 显示全部楼层
1T的51,有的指令周期不确定!
heisexingqisi 发表于 2018-9-12 11:35 | 显示全部楼层
汇编比C精度好。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

ztb

139

主题

660

帖子

9

粉丝
快速回复 在线客服 返回列表 返回顶部