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;//设置中断使能
}
5ms没问题,虽然说是3.5T,但实际使用的时候超时时间稍微多一点不要紧的 这主频有些低了 我看不懂51的写法 用的stm32,modbus的3.5t实测通信会出错,后来不管9600还是115200,都设成10毫秒,用了很久。
页:
[1]