[MSP430] 2553 modbus 的3.5t

[复制链接]
 楼主| chuandaoxy 发表于 2024-8-5 08:12 | 显示全部楼层 |阅读模式
在写modbus rtu, 要使用定时器限定每帧数据的时间,现在晶振是1M,波特率9600.3.5t设置在5ms没有问题吧

我找到一个例子如下
void timer0_init()
{
    TACCR0 = 132;    //时钟是32.768K,那么值设为3.5T = 1/9600*11*32768 = 38*3.5 = 132              
    TACTL |= TASSEL_2 + ID_3;//设置SMCLK作为定时器时钟源,八分频
    TACCTL0 |= CCIE;//设置中断使能
}


我是下面这样修改的,是否正确,大家帮忙看看

void timer0_init()
{
    TACCR0 = 4010;    //时钟是1M,那么值设为3.5T = 1/9600*11*1000000 = 1146*3.5 = 4010            
    TACTL |= TASSEL_2 + ID_3;//设置SMCLK作为定时器时钟源,八分频
    TACCTL0 |= CCIE;//设置中断使能
}

dalarang 发表于 2024-8-5 10:02 | 显示全部楼层
5ms没问题,虽然说是3.5T,但实际使用的时候超时时间稍微多一点不要紧的
xionghaoyun 发表于 2024-8-6 08:24 | 显示全部楼层
这主频有些低了 我看不懂51的写法
神奇号 发表于 2024-8-6 10:18 | 显示全部楼层
用的stm32,modbus的3.5t实测通信会出错,后来不管9600还是115200,都设成10毫秒,用了很久。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

855

主题

1044

帖子

4

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