导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→PIC18与51单片机在串口收发机制上的微小区别[richfan]

 *第43993篇: PIC18与51单片机在串口收发机制上的微小区别

  
楼 主:richfan 2006年10月25日14:26
 PIC18与51单片机在串口收发机制上的微小区别
下面讲讲PIC18与51单片机的一点区别,区别很细微,但差点毁掉一个公司。还是先把技术说清,然后讲讲事件经过:

虽然都是串口,但在这两款CPU上有一点区别。51单片机发送数据时的结束位留的比较长,大约是1个bit的宽度。发完这个结束位之后,内部才会报告“发送缓冲区空”。而PIC18系列单片机则不是,发送结束位的同时就开始报告“发送缓冲区空”。richfan78@hotmail.com

这点区别会带来什么不同呢?当用在全双工通讯时(如RS232)或者单工通讯时,两者没有区别,甚至PIC18的速度更快一些,因为结束位与起始位重合在一起了。richfan78@hotmail.com

当用在半双工通讯时(如RS485)就不一样了。一般在RS485总线上,设备发送完数据后会马上将状态切换为接收(通过控制485收发芯片的状态)。如果CPU是51单片机,那么好,数据在被完全发出去后还要跟上结束位,然后向CPU的程序报告“发送缓冲区空”,这时CPU将485芯片状态切换至接收。整个通讯非常正常。  如果CPU是PIC18系列单片机,那么数据在发出去之后在发送结束位的同时,CPU就向程序报告“发送缓冲区空”了,程序如果此时立即转换485的芯片状态,则会导致结束位只发出去了一点点。结果总线上的侦听端没有收到结束位,还在那里傻等呢。使用PIC18单片机进行485操作的正确做法是——程序收到“发送缓冲区空”的报告后,延时一个bit的时间,再去转换485芯片的状态。richfan78@hotmail.com

别看这个小区别,差点毁了一个公司呢。以前我工作的一家公司为了适应市场需要,进行了新产品研发,而将一部分设备的CPU从51单片机换成了PIC18,把以前的程序拿过来改吧改吧就给客户跑上了。结果原来能够达到3600米的通讯距离,变成了最远1100米,而且还老丢数。这种情况持续了一年,客户意见老大了。而且这个客户是公司的最重要支柱,他们几次威胁要拆掉我们的系统,弄得老板很头大。后来,我接手了这项任务,经过仔细研究波形终于发现了这个小区别,在CPU里加了一条延时指令后,通讯又回到了以前3600米的稳定水平,老板的脸上又恢复了笑容。hiahia...richfan78@hotmail.com


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:关于嵌入式modem73M2901CE的初始化设置问题

[下一篇主题]:北京人马科技竭诚为您服务