查看: 3614|回复: 6

[其他] 倍频后的定时问题

[复制链接]

该用户从未签到

19

主题

68

帖子

0

注册会员

Rank: 2

积分
188
最后登录
1970-1-1
发表于 2010-7-6 15:00:58 | 显示全部楼层 |阅读模式
我用的CPU是MC9S08DZ60,外部晶振8MHz,寄存器配置后升频为32MHz。但我设定定时器定时1分钟,但计时本该是1分钟的时间却只有半分钟。定时器采用总线频率,大家看看我的配置哪不对?下面是我的程序。
 //********************MCU初始化函数********************
//函数定义:void MCG_Init(void)
//描述:
//参数: 无
//返回值: 无
//备注:
//********************************************************
void MCG_Init(void)
{ MCGC1=0B10010011;
MCGC2=0B00110101;
MCGC3=0B00000001;
while(!(MCGSC&0x02)); //OCS初始化
SOPT1=0B11100000;
SOPT2=0B00000000;
SPMSC1=0X1C;
SPMSC2=0X00; }
/**********************************************
                          定时器初始化
**********************************************/
void TPM1_Init(void)
{ TPM1SC=0X00;
TPM1SC=0B01001001;//定时器
1 TPM1MODH=0XC3;
TPM1MODL=0X50;     //0XC350=0D50000次,1us*50000=50ms,定时50ms中断发生一次
}
我知道答案 目前已有5人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-7-6 15:56:19 | 显示全部楼层

    RE:倍频后的定时问题

    TPM1SC=0B01001001;
    0 1 0 01 001
    001=时钟分频2,也就是时钟总线/2=16M,目前你的定时器时钟是16M。
    该会员没有填写今日想说内容.

    该用户从未签到

    19

    主题

    68

    帖子

    0

    注册会员

    Rank: 2

    积分
    188
    最后登录
    1970-1-1
     楼主| 发表于 2010-7-6 16:12:01 | 显示全部楼层

    回复:倍频后的定时问题

    回复第 2 楼 安 于2010-07-06 07:56:19发表:
    TPM1SC=0B01001001;
    0 1 0 01 001
    001=时钟分频2,也就是时钟总线/2=16M,目前你的定时器时钟是16M。 

    我用的CPU是MC9S08DZ60,外部晶振8MHz,寄存器配置后升频为32MHz。好像我的倍频就没有起作用,没有升频到32MHz,所以定时也就不正确,请再给我看看。下面是我的程序。
     //********************MCU初始化函数********************
    //函数定义:void MCG_Init(void)
    //描述:
    //参数: 无
    //返回值: 无
    //备注:
    //********************************************************
    void MCG_Init(void)
    { MCGC1=0B10010011;
    MCGC2=0B00110101;
    MCGC3=0B00000001;
    while(!(MCGSC&0x02)); //OCS初始化
    SOPT1=0B11100000;
    SOPT2=0B00000000;
    SPMSC1=0X1C;
    SPMSC2=0X00; }
    /**********************************************
                              定时器初始化
    **********************************************/
    void TPM1_Init(void)
    { TPM1SC=0X00;
    TPM1SC=0B01001010;//定时器1      
    TPM1MODH=0XC3;
    TPM1MODL=0X50;     //0XC350=0D50000次,0.25us*50000=12.5ms,定时12.5ms中断发生一次
    }
  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-7-6 16:51:31 | 显示全部楼层

    RE:倍频后的定时问题

    你如何确认没有升到32M?
    该会员没有填写今日想说内容.

    该用户从未签到

    19

    主题

    68

    帖子

    0

    注册会员

    Rank: 2

    积分
    188
    最后登录
    1970-1-1
     楼主| 发表于 2010-7-7 08:31:23 | 显示全部楼层

    回复:倍频后的定时问题

    定时器不对,定时1分钟,只有半分钟,定时器选用的是总线时钟。我之前没有升频定时一分钟准确,升频后定时器没变,那么定时器定时应该减少四分之三的时间。
  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-7-7 09:26:14 | 显示全部楼层

    RE:倍频后的定时问题

    你可以将TPM1SC=0B01001000;试一下。
    该会员没有填写今日想说内容.

    该用户从未签到

    3

    主题

    33

    帖子

    0

    新手上路

    Rank: 1

    积分
    58
    最后登录
    1970-1-1
    发表于 2010-8-7 14:00:23 | 显示全部楼层

    RE:倍频后的定时问题

    你先把计数器寄存器清0,再写模数寄存器才对。  另外测试倍频对不对可用串口与上位机通信试试,串口时钟要选择总线时钟,如果串口调试助手收发数据正确那就表示你倍的32M是正确的。
    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 07:01 , Processed in 0.094722 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表