chuandaoxy 发表于 2024-8-5 08:12

2553 modbus 的3.5t

在写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毫秒,用了很久。
页: [1]
查看完整版本: 2553 modbus 的3.5t