打印
[技术问答]

N76E003发现时钟抖动??

[复制链接]
1404|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 | 只看该作者
你测试一下官方的代码
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2017 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

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

//***********************************************************************************************************
//  File Function: N76E003 Clock Output demo code
//***********************************************************************************************************

#include "N76E003.h"
#include "SFR_Macro.h"
#include "Function_define.h"
#include "Common.h"
#include "Delay.h"

//======================================================================================================

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

    while(1)
    {
        clr_GPIO1;
        Timer0_Delay1ms(500);
        set_GPIO1;
        Timer0_Delay1ms(500);
    }
/* =================== */
}

使用特权

评论回复
5
ztb|  楼主 | 2018-7-31 19:32 | 只看该作者
这么简单功能的功能用汇编做可以排除一切意外因素.是最能说明问题的了.用C语言做实验反倒是有可能被不知道的因素影响.

使用特权

评论回复
6
gejigeji521| | 2018-7-31 20:22 | 只看该作者
看不懂啊。。

使用特权

评论回复
7
ztb|  楼主 | 2018-7-31 21:43 | 只看该作者
mintspring 发表于 2018-7-31 18:53
你测试一下官方的代码

这个例程试过了,也是一样抖动的!
汇编程序14个字节,C语言程序653字节!
所以验证类似的问题还是汇编更高效.

使用特权

评论回复
8
jcdzxh| | 2018-7-31 23:33 | 只看该作者
目前hsi一般全压1%误差,

使用特权

评论回复
9
jcdzxh| | 2018-7-31 23:35 | 只看该作者
你这个抖动(7751-7748)/7748=0.039%,已经很不错了,要求再高用hse

使用特权

评论回复
10
wangshujun| | 2018-8-1 09:01 | 只看该作者
示波器的频率测量不是很精密,不能作为评判标准

使用特权

评论回复
11
ztb|  楼主 | 2018-8-1 19:18 | 只看该作者
wangshujun 发表于 2018-8-1 09:01
示波器的频率测量不是很精密,不能作为评判标准

频率准不准不是我的论题,是通过示波器看见方波的宽度在抖动.

使用特权

评论回复
12
ztb|  楼主 | 2018-8-1 19:23 | 只看该作者
jcdzxh 发表于 2018-7-31 23:35
你这个抖动(7751-7748)/7748=0.039%,已经很不错了,要求再高用hse

无论抖动多少,关键是抖动是因为什么引起的.以前用过几种不同的带内部RC振荡器的单片机这是头一次发现这个问题.
经实验这个抖动与外接电路好像无关且频率较低.难道是像开关电源IC那样用抖动分散频谱以提高EMI性能?

使用特权

评论回复
13
heisexingqisi| | 2018-9-11 22:06 | 只看该作者
这点抖动还算抖动啊。

使用特权

评论回复
14
heisexingqisi| | 2018-9-11 22:07 | 只看该作者
你保证你用于测量的那个时钟准的很?

使用特权

评论回复
15
自己和自己玩| | 2018-9-12 09:36 | 只看该作者
未发现

使用特权

评论回复
16
jekey| | 2018-9-12 10:36 | 只看该作者
1T的51,有的指令周期不确定!

使用特权

评论回复
17
heisexingqisi| | 2018-9-12 11:35 | 只看该作者
汇编比C精度好。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

ztb

138

主题

659

帖子

9

粉丝