设备:CPU+16C554+16C554+RAM,扩展8个串口,串口用485方式输出!
原来做485时一般用TX取反控制485的发送方向,但一直认为这是一种不正规的方式,还是用独立的控制比较好,但用独立的控制同时又带来一个问题,那就是485发送结束时,怎么去切换485的发送方向?
51单片机不存在这个问题,因为有发送结束中断,但16C554却存在问题,它只有发送寄存器空中断,但实际上这个时候还有一个字符没有发送结束——说白了就是16C554(16C550也一样,PIC单片机、LPC213X系列的ARM都有这个问题,别的CPU没研究过不知道)就没有一个能产生中断的方式来准确的告诉CPU串口已经发送结束!除了一个可供查询的标志位......可查询必然会带来延时,尤其是CPU需要处理比较多的事务的时候!
难道要开个定时器,每几十个微秒就去查询一下,而且要保证所有的通信不会在几十微秒内有数据返回???
兄弟们还有什么好办法么? |