Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
03.07.2007, 00:07
|
|
Частый гость
Регистрация: 10.12.2004
Сообщений: 35
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Как использовать неск устройств с одним параллельным портом?
Здравствуйте
Мне очень нужен совет по такому вопросу. Я хочу соединить несколько самодельных цифровых устройств с одним параллельным портом и общаться с ними через программу. Например, как программировать одно устройство присоединённое к параллельному порту я знаю, но как программировать несколько устройств?
Ведь байт посланный в порт будет передаваться на все устройства присоединённые к порту, а не только в то
устройство которому он предназначен. Как различить разные устройства и добиться чтобы сигнал предназначенный например 3-му устройству только им и воспринимался?
Спасибо всем за внимание.
P.S. Всего нужно использовать примерно 20 разных устройств, таких как цифровые формирователи импульсов и разные АЦП и ЦАП. Программа пишется на C в Linux а пользовательский интефейс в Tcl/Tk.
|
|
|
|
03.07.2007, 01:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Для каждого устройства сделай по линии разрешения и пускай они их опрашивают,но 20 устройств это многовато,поставить можно дешивратор или тому подобное устройство,чтоб меньше понадобилось портов для управления устройствами.
|
|
|
|
03.07.2007, 07:44
|
|
Прописка
Регистрация: 21.09.2006
Сообщений: 195
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Я согласен с этой идеей. Но можно пойти дальше. Пусть на шине выставляется сначала адрес устройства+кол-во байт для передачи. Устройство с таким адресом откликается и принимает заявленное число байт.
Т.о., необходимости в "урезании" информационной емкости порта нет.
|
|
|
|
03.07.2007, 07:47
|
|
Прописка
Регистрация: 21.09.2006
Сообщений: 195
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как использовать неск устройств с одним параллельным пор
Сообщение от VVK
|
Как различить разные устройства и добиться чтобы сигнал предназначенный например 3-му устройству только им и воспринимался?
|
Ведущий интерфейс выставляет адрес устройства, потом ждет н-ое время, потом повторяет и т.д.
А устройство, "увидевшая" шине свой адрес посылает, например, че-нибудь, что ведущим воспринимается как "занятость" линии этим устройством.
|
|
|
|
03.07.2007, 09:44
|
|
Вид на жительство
Регистрация: 23.04.2006
Сообщений: 308
Сказал спасибо: 14
Сказали Спасибо 13 раз(а) в 12 сообщении(ях)
|
Цитата:
|
...примерно 20 разных устройств, таких как цифровые формирователи импульсов и разные АЦП и ЦАП....
|
У всех этих устройств нет интеллекта. Значит каждому из них надо добавить блок, который будет распознавать вызов и отвечать на него. Сложность блока зависит от протокола, по которому он должен работать. Самый простой - схема сравнения. Блок сравнивает адрес, выставленный на шине с заданным и при совпадении подаёт сигнал CS на своё устройство и начинает обмен. А протокол может быть тоже простым - цифровой код, выставленный и удерживающийся на шине более 0,1 с - адрес. Нулевой байт в течении того же времени - конец связи. Нодо только следить, чтобы в при передаче данных информация изменялась быстее, чем 0,1 с.
|
|
|
|
03.07.2007, 10:06
|
|
Частый гость
Регистрация: 10.12.2004
Сообщений: 35
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от ant_
|
Я согласен с этой идеей. Но можно пойти дальше. Пусть на шине выставляется сначала адрес устройства+кол-во байт для передачи. Устройство с таким адресом откликается и принимает заявленное число байт.
Т.о., необходимости в "урезании" информационной емкости порта нет.
|
Спасибо. Только я не знаю как создать адрес устройства (в этих делах я новичок). Например у меня несколько устройств, как каждому из них задать свой адрес, который бы знал мой хост компьютер (откуда и ведётся всё управление)?
|
|
|
|
03.07.2007, 11:21
|
|
Прописка
Регистрация: 28.12.2006
Сообщений: 277
Сказал спасибо: 25
Сказали Спасибо 20 раз(а) в 18 сообщении(ях)
|
Добрый день. Передавать и принимать по ШД в 1 байт это тривиальная задача и была неоднократно описана в различной литературе. Покопайтесь и сами удивитесь. Что касается адресации устройств, тут можно применять различные варианты, ну например использовать РТ-шки. Прошиваете код по принципу обычного дишифратора. У меня в разработке было так: на ШД комп выставляет адрес(использовал 5 бит старшие, но это не важно какие биты использовать), схема дишифрации запрашивает устройство и формирует сигнал для компа (вроде как "готов"), комп выставляет на ШД уже теперь данные и ждет снятия сигнала "готов" от устройства(не от дишифратора). Снятие готовности дает компу сигнал о принятии данных устройством. Для обмена данными комп-устройство-комп, в ЛПТ достаточно выводов для организации практически любого алгоритма работы. А количество внешних устройств, 20 не предел ( у меня было 32). VVK, если не сможете сами найти или нарисовать схему, пишите на майл(kryhtin2005@mail.ru), постараюсь Вам помочь
|
|
|
|
03.07.2007, 11:43
|
|
Прописка
Регистрация: 21.09.2006
Сообщений: 195
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от Faworit
|
А количество внешних устройств, 20 не предел ( у меня было 32).
|
Если Вы обратили внимание на мое предложение, число адресуемых устройств может достигать 255.
Ваш метод вполне прост, хоть и описали Вы его немного запутанно. Думаю, уважаемый VVK, именно по такому пути и надо двигаться.
З.Ы. VVK, адрес- тот же байт на ШД (в нашем случае), который адресуется всем устройствам, и на которое "откликается" только одно (имеющая именно этот адрес).
|
|
|
|
03.07.2007, 13:19
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Сообщение от ant_
|
Сообщение от Faworit
|
А количество внешних устройств, 20 не предел ( у меня было 32).
|
Если Вы обратили внимание на мое предложение, число адресуемых устройств может достигать 255.
Ваш метод вполне прост, хоть и описали Вы его немного запутанно. Думаю, уважаемый VVK, именно по такому пути и надо двигаться.
З.Ы. VVK, адрес- тот же байт на ШД (в нашем случае), который адресуется всем устройствам, и на которое "откликается" только одно (имеющая именно этот адрес).
|
Чем то похоже на i2c шину
|
|
|
|
03.07.2007, 13:22
|
|
Частый гость
Регистрация: 10.12.2004
Сообщений: 35
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от ant_
|
Сообщение от Faworit
|
А количество внешних устройств, 20 не предел ( у меня было 32).
|
Если Вы обратили внимание на мое предложение, число адресуемых устройств может достигать 255.
Ваш метод вполне прост, хоть и описали Вы его немного запутанно. Думаю, уважаемый VVK, именно по такому пути и надо двигаться.
З.Ы. VVK, адрес- тот же байт на ШД (в нашем случае), который адресуется всем устройствам, и на которое "откликается" только одно (имеющая именно этот адрес).
|
Вот это как раз непонятный для меня момент (хотя для знающих людей это элементарно). Например, когда мне нужно послать 1 в параллельный порт, я использую адрес параллельного порта 378h принятый по умолчанию, и пишу в проге
outb(1, 0x37
а как адресовать самодельные устройства? 8O
А к как
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:07.
|
|