佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1457|回复: 18

单晶片和两架电脑做联接

[复制链接]
发表于 27-4-2006 04:47 PM | 显示全部楼层 |阅读模式
请问单晶片要和两架电脑该如何做联接。。。。

以下的方法可以吗。。。。



谢谢。。。。
回复

使用道具 举报


ADVERTISEMENT

发表于 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 编辑 ]
回复

使用道具 举报

Follow Us
 楼主| 发表于 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.


你用什么编号的单晶片?
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 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。。。。
各位前辈觉得如何。。。。

回复

使用道具 举报


ADVERTISEMENT

发表于 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’,会有什么后果)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 23-12-2024 08:36 AM , Processed in 0.110933 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表