找回密码
 立即注册
查看: 266|回复: 4

modbus通信超时检测由定时器T0改成定时器T3,通信速度变很慢?问题已解决

[复制链接]
  • TA的每日心情
    奋斗
    昨天 06:15
  • 签到天数: 169 天

    [LV.7]常住居民III

    116

    主题

    474

    回帖

    624

    积分

    高级会员

    积分
    624
    发表于 2023-11-27 10:53:43 | 显示全部楼层 |阅读模式
    本帖最后由 380091044 于 2023-11-28 11:27 编辑

    modbus通信超时检测由定时器T0改成定时器T3,通信速度变很慢?


    定时器T0初始化如下:

    //===============T0初始化函数====================
    u8        Timer0_Config(u8 t, u32 reload)        //t=0: reload值是主时钟周期数,  t=1: reload值是时间(单位us)
    {
            TR0 = 0;        //停止计数

            if(t != 0)        reload = (u32)(((float)MAIN_Fosc * (float)reload)/1000000UL);        //重装的是时间(us), 计算所需要的系统时钟数.
            if(reload >= (65536UL * 12))        return 1;        //值过大, 返回错误
            if(reload < 65536UL)        AUXR |= 0x80;                //1T mode
            else
            {
                    AUXR &= ~0x80;        //12T mode
                    reload = reload / 12;
            }
            reload = 65536UL - reload;
            TH0 = (u8)(reload >> 8);
            TL0 = (u8)(reload);

            ET0 = 1;        //允许中断
            TMOD &= 0xf0;
            TMOD |= 0;        //工作模式, 0: 16位自动重装,
            TR0 = 1;                        //开始运行
            return 0;
    }







    定时器T3初始化如下:、




    //===============T3初始化函数====================
    u8        Timer3_Config(u8 t, u32 reload)        //
    {
            //T3为固定16位自动重装;
            T4T3M &= 0xf2;//停止计数, 清除控制位
            if(t != 0)        reload = (u32)(((float)MAIN_Fosc * (float)reload)/1000000UL);        //重装的是时间(us), 计算所需要的系统时钟数.
            if(reload >= (65536UL * 12))        return 1;        //值过大, 返回错误
            if(reload < 65536UL)        T4T3M |= 0x02;//1T mode
            else//reload >= 65536UL)        
            {
                   
            T4T3M &= 0xFD;//12T mode;第一位清零是12T模式,其他保持不变;
            reload = reload / 12;
                   
            }
            reload = 65536UL - reload;
            TH0 = (u8)(reload >> 8);
            TL0 = (u8)(reload);

      T4T3M &= 0xf2;//
            T4T3M |= 0x08;//开始运行
            IE2 |= 0x20;//允许中断
            return 0;
    }


    定时器计算公式影响的?









    定时器T0计算公式..png
    定时器T3计算公式.png
    定时器T3预分频寄存器.png
    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:34
  • 签到天数: 114 天

    [LV.6]常住居民II

    0

    主题

    81

    回帖

    650

    积分

    高级会员

    积分
    650
    发表于 2023-11-30 11:08:21 | 显示全部楼层
    向高手学习
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 06:15
  • 签到天数: 169 天

    [LV.7]常住居民III

    116

    主题

    474

    回帖

    624

    积分

    高级会员

    积分
    624
     楼主| 发表于 2023-11-30 11:17:43 | 显示全部楼层

    相互学习
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 09:59
  • 签到天数: 162 天

    [LV.7]常住居民III

    9

    主题

    128

    回帖

    142

    积分

    注册会员

    积分
    142
    发表于 2023-12-3 21:36:33 | 显示全部楼层
    直接用STC的软件生成就行
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 06:15
  • 签到天数: 169 天

    [LV.7]常住居民III

    116

    主题

    474

    回帖

    624

    积分

    高级会员

    积分
    624
     楼主| 发表于 2023-12-4 09:41:59 | 显示全部楼层
    huhuan 发表于 2023-12-3 21:36
    直接用STC的软件生成就行

    哪个也是过了,已经解决了,感谢
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-19 02:38 , Processed in 0.061197 second(s), 48 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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