查看: 1457|回复: 18
|
单晶片和两架电脑做联接
[复制链接]
|
|
请问单晶片要和两架电脑该如何做联接。。。。
以下的方法可以吗。。。。
谢谢。。。。 |
|
|
|
|
|
|
|
发表于 28-4-2006 10:40 AM
|
显示全部楼层
你的方法不可以。两个PC的TXD会conflict。
可以先清楚地说你的应用吗?为什么要2个PC?
谁是Master?谁是Slave?或大家都是Master?
如果要multidrop,可以用RS485,但只可以有一个是Master 。 |
|
|
|
|
|
|
|
楼主 |
发表于 28-4-2006 11:56 AM
|
显示全部楼层
是这样的。。。。
两架PC大约分开10METER,单晶片和两架PC大约分开10METER。
PC1和PC2是同步的,就是说PC1里的资料如果是“1”,PC2马上就要更改资料至“1”
相反的PC2里的资料如果是“2”,PC1马上就要更改资料至“2”
基本操作。。。
当PC1传送信号至单晶片时,单晶片执行工作,然后再传送信号至PC2。。
当PC2传送信号至单晶片时,单晶片执行工作,然后再传送信号至PC1。。
我也不懂该谁是Master谁是Slave。。。。。
前辈有更好的建议吗。。。。
谢谢。。。。 |
|
|
|
|
|
|
|
发表于 28-4-2006 12:31 PM
|
显示全部楼层
单晶片扮演什么角色?单晶片执行什么特别的工作/运算?
为什么PC1不直接的接去PC2?或通过LAN连接?
PCI 和PC2都是Master, 单晶片是Slave。
如果PCI 和PC2要同时send data,就有问题了 (Collosion)。
如果你硬要这样做,比较简单的是你的单晶片要有两个(hardware/software)USART,分别接去PC1和PC2。
你还没说是什么应用(Application),我想象不到,不能建议你什么。 |
|
|
|
|
|
|
|
楼主 |
发表于 28-4-2006 03:38 PM
|
显示全部楼层
单晶片扮演什么角色?单晶片执行什么特别的工作/运算?
整个工作的情况如下:
PC1和PC2里有计数器程式(VB),两架PC共用一个LED Display,铃声,灯等等。。。。。
如果启动PC1里的计数器显示001,那么LED Display就要显示001,同时PC2的计数器也会显示001。
如果启动PC2里的计数器显示002,那么LED Display就要显示002,同时PC2的计数器也会显示002。
单晶片是被动的,只须操作LED Display,铃声,灯等等。。。
为什么PC1不直接的接去PC2?或通过LAN连接?
其实PC1直接去PC2也可以,但是单晶片应该如何处理呢。。。
我只想到方法A和B,那个会比较理想呢。。。。
开始时有考虑用LAN,不过用COM PORT比较理想。。。。
PCI 和PC2都是Master, 单晶片是Slave。
如果PCI 和PC2要同时send data,就有问题了 (Collosion)。
如果你硬要这样做,比较简单的是你的单晶片要有两个(hardware/software)USART,分别接去PC1和PC2。
PC1和PC2都有同时转送资料的可能性,所以程式和单晶片要花多点时间。。
不过首先要解决该如何连接才行。。。 |
|
|
|
|
|
|
|
发表于 28-4-2006 06:49 PM
|
显示全部楼层
原来你要做的是Queue Counter?
接法如下:
方法1:Sw1 ,Sw2 可以是relay, Mosfet 或IC 4066 电子开关。
方法2:两个RXD在MCU。
单晶片是Master, 两个PC是Slave。
单晶片要定时Polling 两个PC的个别地址(Address)。
[ 本帖最后由 pic 于 29-4-2006 09:06 AM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 29-4-2006 10:51 AM
|
显示全部楼层
谢谢您的回复。。。。
如果SW1和SW2是RELAY,那么该怎样启动SW1和SW2的RELAY呢。。。
如果使用这方法,应该是PC先启动RELAY,然后才传送信号。。
因为这是电脑操作,所以在外接按钮来启动RELAY不是很理想。。。
我还想不到解决的方法。。。。
谢谢。。。 |
|
|
|
|
|
|
|
发表于 29-4-2006 04:23 PM
|
显示全部楼层
不,switch 应该是由MCU 控制,是MCU(Master)主动向PC连接,PC(Slave)是被动的。
好处是不会有data collision。
=================================
Start:
MCU-〉 On Sw1-> Send request to PC1-> PC1 reply (ACK or Value + ACK)-> Turn off Sw1 ,Done
MCU-〉 On Sw2-> Send request to PC2-> PC2 reply (ACK or Value + ACK)-> Turn off Sw2 ,Done
Loop to Start
=================================
如果你要用PC来启动RELAY (我不建议), 可以利用Comport 的 RTS signal。
坏处是当两架PC同时send data,会有data collision。
PC-〉 Set RTS high, On Sw1-> wait 100ms-〉Send request to MCU-> set RTS Low,Turn off Sw1 ,Done
=================================
如果是我做同样的project, 我不会选用PC。
如果硬要用PC,我会用Method 2。
如果硬要用Method 1,我会用电子开关,而不是relay.
你用什么编号的单晶片? |
|
|
|
|
|
|
|
楼主 |
发表于 30-4-2006 07:09 PM
|
显示全部楼层
原帖由 pic 于 29-4-2006 04:23 PM 发表
如果是我做同样的project, 我不会选用PC。
如果硬要用PC,我会用Method 2。
如果硬要用Method 1,我会用电子开关,而不是relay.
我也觉得选用PC不是很理想,可惜不是我话事。。。。
我是使用8051,不用Method 2是因为我功力不够深,不知道Method 2的程式该怎样写。所以为有选择Method 1的方法。。。。
努力思考解决问题中。。。。 |
|
|
|
|
|
|
|
发表于 1-5-2006 03:55 AM
|
显示全部楼层
你的MCU除了handle RS232
还有别事做吗?
要控制7segment display, Bell? |
|
|
|
|
|
|
|
发表于 1-5-2006 08:38 AM
|
显示全部楼层
pkl0001,
建议你用 method 2。
原因:
1。method 2 很简单而已。
2。project 就是要挑战自己,提升自己。选容易的途径永远不能进步。
method 2:
1。写一个 interrupt handle,在 program memory location 0004H, 好像 call subroutine 一样, 但不用 RETURN, 而是用 RETFIE
2。set & enable interrupt
3。在 interrupt handle subroutine 里, 用 fixed timing 来读每一个bit。
4。不要忘了 save register information。 PIC mcu datasheet interrupt section 里有sample code
就是这么简单。
[ 本帖最后由 GeMan 于 1-5-2006 08:46 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 1-5-2006 01:28 PM
|
显示全部楼层
原帖由 pkl0001 于 30-4-2006 07:09 PM 发表
我也觉得选用PC不是很理想,可惜不是我话事。。。。
我是使用8051,不用Method 2是因为我功力不够深,不知道Method 2的程式该怎样写。所以为有选择Method 1的方法。。。。
努力思考解决问题中。。。。
你是设计师,你应该向客户/上司痛陈利害。
Project,最重要的就是Practical,实用,适用,能升级,所以一开始的设计概念很重要。
比如,突然你要增加到十个以上的input(PC),办得到吗?或到时再打算?等等。。。
功能,成本价格预算,开发时间都要考量。
功力不深,就要练,学习,最重要的是要明白你所做的,不要知其然而不知所以然。
其实还有Method 3,可以用RS485, 直接Multidrop。
RS485 可以用MAX483, SN75176, 或用现成的RS232 to RS485 converter。
依你的预算而定。 |
|
|
|
|
|
|
|
楼主 |
发表于 1-5-2006 03:52 PM
|
显示全部楼层
原帖由 ychenfei 于 1-5-2006 03:55 AM 发表
你的MCU除了handle RS232
还有别事做吗?
要控制7segment display, Bell?
对,8051除了要处理RS232,还有处理7段显示器,铃声和灯等等。。。 |
|
|
|
|
|
|
|
楼主 |
发表于 1-5-2006 03:57 PM
|
显示全部楼层
原帖由 GeMan 于 1-5-2006 08:38 AM 发表
pkl0001,
建议你用 method 2。
原因:
1。method 2 很简单而已。
2。project 就是要挑战自己,提升自己。选容易的途径永远不能进步。
看到您的回复,让我恢复冲劲,谢谢。。。。 |
|
|
|
|
|
|
|
楼主 |
发表于 1-5-2006 04:03 PM
|
显示全部楼层
原帖由 pic 于 1-5-2006 01:28 PM 发表
功力不深,就要练,学习,最重要的是要明白你所做的,不要知其然而不知所以然。
我会多翻书,多上网找资料的,谢谢您的回复。。。 |
|
|
|
|
|
|
|
楼主 |
发表于 1-5-2006 04:24 PM
|
显示全部楼层
突然有个想法,不知道可否行的同。就是在8051经过MAX232然后再到PC。。。。
各位前辈觉得如何。。。。
|
|
|
|
|
|
|
|
发表于 1-5-2006 05:53 PM
|
显示全部楼层
加了 IC MAX232 的确很好。
但 IC MAX232 至 单晶片的电路,还是要依照 pic大大的 method 1 或 method 2; 尤其是 IC MAX232 的 R1OUT 及 R2OUT 不能 parallel 同一条线。 |
|
|
|
|
|
|
|
发表于 1-5-2006 05:57 PM
|
显示全部楼层
原帖由 pkl0001 于 1-5-2006 03:52 PM 发表
对,8051除了要处理RS232,还有处理7段显示器,铃声和灯等等。。。
没看到你是用 intel 8051 。microchip 的 interrupt programming information 你可以忘掉吧。 |
|
|
|
|
|
|
|
发表于 2-5-2006 12:52 AM
|
显示全部楼层
原帖由 pkl0001 于 1-5-2006 04:24 PM 发表
突然有个想法,不知道可否行的同。就是在8051经过MAX232然后再到PC。。。。
各位前辈觉得如何。。。。
不可以,如GeMan讲的,R1OUT 及 R2OUT 不能接同一条线。(Conflict)
就像你不能接两个Logic gate的output。 (想象如果一个是‘0’,一个是‘1’,会有什么后果) |
|
|
|
|
|
|
| |
本周最热论坛帖子
|