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

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

   richfan 
richfan发表的帖子 

 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


发表时间:2006年10月25日14:26:44

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:关于嵌入式modem73M2901CE的初始化设置问题有没有人用过同步modem73M2901CE,
[下一篇帖子]:北京人马科技竭诚为您服务人马科技有限公司在北京地区专业从事电子元件器的采购及配送服务,无论您购买的数