Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: COM-порт. Параллельный вывод информации.
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
Toni Gard
Доброго времени суток! Хочу спросить: как можно выводить информацию с COM порта параллельно, а не последовательно? Просто нужно вывести информацию на аналогово-цифровой преобразователь КР572ПА2. Не обращайте внимание на то что он 12-разрядный))

Цифро-аналоговый конечно же...))
CodeWarrior1241
В принципе можно поставить ИС типа 16550 - см. тут даташит - http://depositfiles.com/files/1050457. Такие схемы созданы для интерфайса COM-порта с шиной проца. Поскольку Вы будите двигать инфо только в одном направлении, можно большенство контрольных сигналов с параллельной стороны прибить или к земле, или к 5В, в соответствии с даташитом. Хорошо было бы воспользоватся дополнительным сигналом от COM-порта: CTS (clear to send), поскольку 16550 провел бы этот сигнал на параллельную сторону, и это был бы готовый индикатор для Вашего ЦАП что надо начинать перевод (conversion).

Это решение имеет смысл для пользователя который не хочит воспользоватся МК, и делать для него прошивку. Бесспорно, любой дешевый PIC или AVR справился бы с такой задачей куда оперативнее бы, но если начинающий не хочит с этим морочить себе голову (прошивка, компилятор/ассемблер, программатор, дебаггинг), решение с готовой схемой есть вариант.
Toni Gard
Если честно, то я не совсем понял описание, которое вы мне скинули. Наверное по местным меркам я вообще супер-новичек. Я так понял это некоторая интегральная схема? Короче, неважно.
Объясню-ка я задачу, для которой мне все то нужно(Она довольно абстрактная).
Мне нужно на компе программо генерировать случайное число и выводить его на COM-порт. От порта оно должно передаваться на ЦАП и на вольтметре должно показаться некое напряжение).
ALexx
А почему бы Вам не посмотреть в сторону LPT-порта?
Там все готово: параллельная шина+ квитирующие сигналы.

Но если уж использование СОМ-порта - обязательное условие - можно предложить экзотическое решение. Состоит оно в следующем:

Рядом с ЦАПом ставите сдвиговый регистр (навскидку - 74НС164)
С СОМ-порта берете два выходных сигнала (например DTR и RTS ), приводите их к CMOS (TTL)-уровням и подаете на входы данных и синхронизации соответственно.

Теперь дело за программной реализацией, заключающейся в управлении данными выводами порта в соответствии с временными диаграмами и таблицей истинности сдвигового регистра. Или, выражаясь простым языком, "дергать ножками", выдавая на линию данных биты выдвигаемого байта (слова), а на линию синхронизации перепады 0-1-1-0 (синхроимпульсы)

Это один из вариантов... Не самый удачный.
Как было справедливо замечено, микроконтроллер справился бы тут лучше и решение было бы изящней.
rezident
Ваша задача довольно легко реализуется почти на любом микроконтроллере. Вы курсовую делаете что ли?
Toni Gard
Про LPT сразу подумал, но оставим этот вариант как резервный, ибо я пока не знаю как в Delphi реализовать вывод на него.
Кстати 74НС164 это не тоже самое, что и К561ИР2? И подойдет ли К561ИР2? А сколько стоит 74НС164? Я просто зверский новичек! smile.gif

Нет, мы еще даже электронику не начинали проходить. Просто вот у меня сессия как-то очень быстро закончилась и я решил заняться практикой. Вот куратор и задал задание.

Ах да, скажите пожалуйста, что такое микроконтроллер (очень или не очень сложное это устройство и сколько оно примерно может стоить) и какой лучше всего подойдет в данном случае?
rezident
Цены можете узнать например в поисковике efind.ru. Даташиты (описания/спецификации) там же или поисковиком типа Google. Если нужен сдвиговый регистр, то я бы рекомендовал использовать вместо 74HC164 другой (более продвинутый) 74HC595. Однако еще раз повторяю, что реализовать вашу задачу проще, взяв микроконтроллер с аппаратным UART и достаточным для управления ЦАПом количеством выводов (GPIO).
Toni Gard
...когда увидел цены, непроизвольно улыбнулся

74HC595D-----------6.99 руб

Жесть
А я почему-то думал о сумме рублей в 600))
CodeWarrior1241
Цитата(Toni Gard @ Jun 19 2007, 09:55) *
Если честно, то я не совсем понял описание, которое вы мне скинули. Наверное по местным меркам я вообще супер-новичек. Я так понял это некоторая интегральная схема? Короче, неважно.
Объясню-ка я задачу, для которой мне все то нужно(Она довольно абстрактная).
Мне нужно на компе программо генерировать случайное число и выводить его на COM-порт. От порта оно должно передаваться на ЦАП и на вольтметре должно показаться некое напряжение).

Ok, могу попроще. Если Вы еще не изучали электронику, Вам будет сложно заниматся программными микросхемами без какой то начальной помощи. На то и советую пользоватся готовой ИС типа 16550.

У вас есть серийный поток (от COM порта) который Вам надо превратить в параллельный, и загрузить его в ЦАП. До этого Вам надо сделать ЦАП готовым к приему новой параллельной инфо. В COM-порте кроме Tх и Rx линий есть еще и status линии, ведь интерфайс перваночально создан для работы с модемами. Я предлагаю использовать схему с первой страницы даташита который я Вам дал выше. Но, та конкретная схема создана для общения процессора с COM-портом. Процессор способен принимать и посылать инфо параллельно, но Ваш ЦАП может только принимать. Соответственно, Вам нужно заставить 16550 только принимать инфо, и загружать ЦАП, предварительно дернув за load линию ЦАPa.
rezident
Цитата(CodeWarrior1241 @ Jun 19 2007, 21:57) *
Ok, могу попроще. Если Вы еще не изучали электронику, Вам будет сложно заниматся программными микросхемами без какой то начальной помощи. На то и советую пользоватся готовой ИС типа 16550.

Этот совет из серии вредных! М/с UART типа 16550 предназначена для работы с параллельной шиной в составе устройства с каким-нибудь процессором. Для того чтобы она могла хотя бы принимать ее нужно сконфигурировать для этого. Чем, спрашивается, Toni Gard будет ее конфигурировать? С помощью ЦАП? И каким образом передавать принятые от 16550 данные в ЦАП? Автомат, формирующий циклы чтение/записи, реализовывать? На рассыпухе? На CPLD? на FPGA?
Проще будет не геммороиться с предложенной CodeWarrior1241 м\с UART, а взять МК со встроенным аппаратным UART. В третий раз предлагаю! twak.gif .
Хотя если уж так хочется обойтись без процессора или МК вообще, то напомню, что в СССР выпускалась м/с аппаратного UART типа КР581ВА1А, которая вообще не требовала программирования ее регистров каким-либо CPU и имела параллельную 8-ми разрядную шину данных. Режим ее работы задавался конфигурацией внешних управляющих сигналов (перемычками). Ее, кстати, до сих пор еще можно купить.
Shakhtyor
А какую микросхему ЦАП форумисты посоветуют для работы с параллельным портом ПК? Нужно что-то попроще.
CodeWarrior1241
Цитата(rezident @ Jun 19 2007, 13:39) *
Этот совет из серии вредных! М/с UART типа 16550 предназначена для работы с параллельной шиной в составе устройства с каким-нибудь процессором. Для того чтобы она могла хотя бы принимать ее нужно сконфигурировать для этого. Чем, спрашивается, Toni Gard будет ее конфигурировать?

Не надо горичится. Для чего сделан 16550, и почему МК был бы лучше, я тоже написал. Единственное предполажение которое я сделал было то что 16550 чип имеет defaults в своей конфигурации с которыми он включается, и если соответствуще выставить пины он свободно будет принимать инфо. Посмотрел на даташит, кажется что это не так, скорость/partity, итд надо выставлять самому... Естессно я не знал про существование ИС типа КР581ВА1А о которой говорите Вы, но в принципе я хотеь превратить 16550 именно в функциональный аналог КР581ВА1А.

Можно сделать еще проще - нужно взять простую схему типа serial2parallel, а потом подвести 8 выходов на дешевый DAC, типа DAC0808. Я копировал эту схему с книги Mazidi and Mazidi, и с DAC0808 получился простой генератор синусов. Таже схема пользованья DAC0808 можно найти в даташите на него.
Omen_13
Вопрос форумчанам: Может склепать пару-тройку примитивных примеров для задач подобной этой на различной элементной базе (регистры, процы и т.д.)? Может подобных вопросов меньше станет
Shakhtyor
Цитата(Omen_13 @ Jun 19 2007, 21:59) *
Вопрос форумчанам: Может склепать пару-тройку примитивных примеров для задач подобной этой на различной элементной базе (регистры, процы и т.д.)? Может подобных вопросов меньше станет

Замечательная инициатива. Я думаю, что никто возражать против этого не будет.
rezident
Цитата(Omen_13 @ Jun 20 2007, 00:59) *
Вопрос форумчанам: Может склепать пару-тройку примитивных примеров для задач подобной этой на различной элементной базе (регистры, процы и т.д.)? Может подобных вопросов меньше станет

Примеры проектов сделать можно, но только не для того, чтобы вопросы не возникали. Вопросы нужно задавать. Вопросы полезно задавать. Без возникновения вопросов творчество и дальнейшее развитие личности я даже не представляю. Только с развитем личности должно расти качество вопросов.
P.S. если Toni Gard разрешит убрать какой-либо из двух его основных факторов (COM-порт и КР572ПВ2), то можно будет порекомендовать что-либо из готовых примеров от производителей ЦАП и МК.
Toni Gard
У-а-а-а! Сколько всего! У меня просто вчера инет закончился - поэтому я выключился из обсуждения.
Я так понял варианта осталось всего два:
rezident с КР581ВА1А и CodeWarrior1241 со схемой и DAC0808.
В связи с этим у меня возникло несколько вопросов:
к rezident'у,
- Насколько я знаю UART - это микросхема, которая используется в компьютерах для конвертирования сигнала из параллельного (в проце) в последовательный? А как обратно? А есть ли описание к КР581ВА1А? И то есть мне ее (КР581ВА1А) надо будет подцепить к где-то между портом и ЦАП?
к CodeWarrior1241'у,
- Ту схему, которую вы прикрепили в вашем посте, нельзя сразу использовать? Я имею в виду сразу же к выходам SN74LV8153 подрубить КР572ПА2? И что такое SN74LV8153? Какой-то преобразователь? Как будто он увеличивает количество выходов.)) А можно вместо SN74LV8153, какой-нибудь другой, на 12-разрядов?
ALexx
Можете приятно удивить преподавателя устройством, работающим от USB smile.gif

Есть микросхемы - мосты USB-FIFO (параллельный код).
Со сторны компьютера видятся они как последовательный порт.
Упрощенно: отсылаете байт в порт, он появляется на выводах D0-D7 микросхемы.
Кроме того, присутствуют квитирующие сигналы, т.е. можете передавать несколько байт, записывая их в параллельные регистры, соединенные с ЦАПом.

Информация : http://ftdichip.com/Documents/DataSheets/DS_FT245R.pdf
Toni Gard
Круто! Тоже возможный вариант. Только я не представляю себе как FT245QR или FT245RL к USB можно подсоединить...(( Хотя в принципе если бы узнал, то задача уже фактически бы решилась.
ALexx
Цитата(Toni Gard @ Jun 20 2007, 09:52) *
Круто! Тоже возможный вариант. Только я не представляю себе как FT245QR или FT245RL к USB можно подсоединить...(( Хотя в принципе если бы узнал, то задача уже фактически бы решилась.


Не совсем понял в чем проблема? Как подсоединить? В упомянутом документе начиная со стр. 19 идут схемы подключения данного устройства.
Если смущают корпуса с малым расстоянием между выводами (что понятно для начинающего), то существуют готовые модули со всей необходимой обвеской:

Вот, например:
http://ftdichip.com/Products/EvaluationKits/UM245R.htm
Toni Gard
Все, до меня доперло. Спасибо про ссылку на стр 19. (просто я очень плохо понимаю пока все эти даташиты). Про модуль тоже тема, но он дорогой 20$. Все равно спасибо за мощную подсказку! Теперь осталось дождаться ответов на мои вопросы ...
rezident
Цитата(Toni Gard @ Jun 20 2007, 11:46) *
Я так понял варианта осталось всего два:

Нет, вариантов больше чем два.
Цитата(Toni Gard @ Jun 20 2007, 11:46) *
- Насколько я знаю UART - это микросхема, которая используется в компьютерах для конвертирования сигнала из параллельного (в проце) в последовательный? А как обратно? А есть ли описание к КР581ВА1А? И то есть мне ее (КР581ВА1А) надо будет подцепить к где-то между портом и ЦАП?

Я конечно могу ошибаться, т.к. имел дело с КР581ВА1А лет 12 назад, но по-моему у нее раздельные 8-ми разрядные шины входа для передатчика и выхода для приемника. Описания для нее у меня, к сожалению, нет.
Toni Gard
Цитата
Я конечно могу ошибаться, т.к. имел дело с КР581ВА1А лет 12 назад, но по-моему у нее раздельные 8-ми разрядные шины входа для передатчика и выхода для приемника. Описания для нее у меня, к сожалению, нет.

Ну и бог с ней )) Я тоже описания к ней не нашел. А какую тогда микросхемку использовать?
rezident
Цитата(Toni Gard @ Jun 20 2007, 15:17) *
Ну и бог с ней )) Я тоже описания к ней не нашел. А какую тогда микросхемку использовать?

Вам COM-порт именно как UART нужно (поставлена так задача) использовать или просто как внешний порт, имеющийся в составе PC?
Toni Gard
Насколько я понимаю, скорее всего второе - просто как внешний порт ПК.

Ну и LPT только не подходит, наверное. Я уже давненько его на компах не видел. Исчезает он.
rezident
Цитата(Toni Gard @ Jun 20 2007, 15:49) *
Ну и LPT только не подходит, наверное. Я уже давненько его на компах не видел. Исчезает он.

Фу-ты-ну-ты! Дык вы определитесь уж в конце-концов. А то может действительно мост USB-COM или USB-SPI (как вам уже предложили) стоит использовать?
Цитата(Toni Gard @ Jun 20 2007, 15:49) *
Насколько я понимаю, скорее всего второе - просто как внешний порт ПК.
Если изучение работы UART не входит в вашу задачу, то можно использовать сигналы COM-порта как просто дискретные сигналы. И реализовать на них синхронный интерфейс, который преобразовать в параллельный с помощью уже упоминавшихся 74HC595.
SergVZ
Если обезательно нужен СОМ порт, то поглядите в сторону CDP6402 ( 1002хл1) и max232.
Toni Gard
Цитата
Фу-ты-ну-ты! Дык вы определитесь уж в конце-концов. А то может действительно мост USB-COM или USB-SPI (как вам уже предложили) стоит использовать?

Я бы с удовольствием использовал USB. Но у меня есть две проблемы:
1. Я не знаю как работать с USB-портами программно(но это 1/10 проблемы).
2. Микросхемы довольно дороговато стоят.

Цитата
Если изучение работы UART не входит в вашу задачу, то можно использовать сигналы COM-порта как просто дискретные сигналы. И реализовать на них синхронный интерфейс, который преобразовать в параллельный с помощью уже упоминавшихся 74HC595.

Про UART куратор ничего не говорил, следовательно можно считать, что это не входит в поставленную задачу.)) А как сделать с 74HC595(Alexx писал, но я не понял)? Может какой-нибудь схема есть или чертеж?
CodeWarrior1241
Цитата(Toni Gard @ Jun 20 2007, 01:46) *
- Ту схему, которую вы прикрепили в вашем посте, нельзя сразу использовать? Я имею в виду сразу же к выходам SN74LV8153 подрубить КР572ПА2? И что такое SN74LV8153? Какой-то преобразователь? Как будто он увеличивает количество выходов.)) А можно вместо SN74LV8153, какой-нибудь другой, на 12-разрядов?
SN74LV8153 дествительно преобразователь, серийный к 9-разрядному параллельному. Посмотрите сюда, может страницы по-русски от TI тоже о нем есть. Прелесть сие ИС то что она создана специально для поддержки стандартного 8N1 серийного потока, как от Вашего Com-порта. Разрядность увеличить вряд ли можно, ведь COM-порт способен пересылать только по байту каждый раз. Откуда можно найти дополнительные 4 байта ? На то я и предложил 8-битовый ЦАП.

Другое дело то что многие ЦАП требуют, кроме сигнал передачи инфо, еще и дополнительные контрольные сигналы, про КР572ПА2 не знаю. Посмотрите на любой ЦАП, ну скажем AD5424, на стр. 7 даташита даются значения пинов. Так кроме data pins (8) есть и /CS, и /RW. Без /CS не обойдетесь, надо опускать до того как записивать новое число для пробразованья, и поднимать /CS что бы начать преобразованья. С COM-портом Вы это не реализуете, поэтому я предложил (достаточно старый) DAC0808 от national semiconductor, у кторого контрольных сигналов нет - надо соблюдать время перед очередной записью. Эти ограничения COM-порта и есть причина почему вэтой ветке Вам советуют воспользоватся программным микроконтроллером.
ALexx
Цитата(Toni Gard @ Jun 20 2007, 14:46) *
Я бы с удовольствием использовал USB. Но у меня есть две проблемы:
1. Я не знаю как работать с USB-портами программно(но это 1/10 проблемы).
2. Микросхемы довольно дороговато стоят.
Про UART куратор ничего не говорил, следовательно можно считать, что это не входит в поставленную задачу.)) А как сделать с 74HC595(Alexx писал, но я не понял)? Может какой-нибудь схема есть или чертеж?


1. При использовании моста FT245R работа с ЮСБ ни чем не отличается от работы с обычным СОМ-портом
2. Бесплатно сейчас даже 155ЛА3 не найдете - все уже давно выпаяно wink.gif

А вообще... Посмотрите на данную ветку форума и послушайте совет на будущее:
Формулируйте задачу максимально точно, тогда ответы будут соответствующие.

А для начала определитесь, наконец с необходимым типом интерфейса (COM, USB, LPT). Перебрали мы уже все эти интерфейсы, поэтому время принять решение.
Тогда и о схемных решениях можно будет говорить
Toni Gard
я за COM-порт, однако
upc2
И еще надо определиться с разрядностью ЦАП.Все советы сводятся к 8, но 8 и 12 - небо и земля.
ALexx
Цитата(Toni Gard @ Jun 20 2007, 15:44) *
я за COM-порт, однако


Окончательно и бесповоротно? Если да, продолжаем.
Имеется у вас ЦАП 572ПА2.
Он уже на плате, есть его обвязка (компоненты, необходимые для его работы) ?

Если нет, то необходимо ознакомиться со схемами подключения:

http://radioam.nm.ru/sprav_dac.html#572pa2

http://www.alfarzpp.lv/rus/sc/572pa2.pdf

Таким образом, на данном этапе Вам надо озадачиться поиском собственно ЦАПа и внешних необходимых ему компонентов + блок питания.
Mike18
Cовет из серии самых вредных! smile.gif Практики в освоении микроконтроллеров, ЦАП или регистров сдвига он точно не прибавит.
Это скорее из области "Очумелые ручки". smile.gif

Если задача поставлена так, что требуется просто вывод на внешний вольтметр некоторого "случайного", но прогнозируемого напряжения и временные рамки фиксации или обновления его значения не критичны, то можно обойтись простым включением пассивного НЧ фильтра на один из выходов COM порта (RC цепочка - один резистор и один конденсатор). При этом программа должна посылать на выбранный выход непрерывный поток данных реализующий режим ШИМ.
Для LPT этот вариант с одним выводом и симуляцией ШИМ тоже работает, но программно на LPT проще организовать статический вывод, подключив на линии данных матрицу R-2R.
muravei
Цитата(upc2 @ Jun 20 2007, 16:57) *
И еще надо определиться с разрядностью ЦАП.

Если 8 , то можно ничего не делать - купить несколько резисторов R-2R поточнее , напаять на выходы преобразоателя и наслаждаться.
rezident
Вот такую примерно простенькую схему преобразования сигналов COM-порта в параллельную шину могу предложить.
Сигнал DTR управляет входом последовательных данных SER,
сигнал RTS управляет входом синхронного тактового входа SRCLK,
сигнал TXD управляет входом синхронной защелки выходных сигналов RCLK.
Нужно реализовать временную диаграмму синхронной записи 16-битного слова. Для защелкивания этого слова нужно передать через COM-порт любой байт на любой скорости, но желательно что-то типа 0x00. Естественно перед записью следующего 16-битного слова нужно дождаться когда передача этого байта закончится. Для контроля этой передачи можно соорудить "эхо", соединив 2 и 3 выводы разъема DB9F.
P.S. схема прошла конвертацию в PCAD2004, поэтому уж не обессудьте за ее качество.
ALexx
Цитата(rezident @ Jun 20 2007, 17:27) *
Вот такую примерно простенькую схему преобразования сигналов COM-порта в параллельную шину могу предложить.
Сигнал DTR управляет входом последовательных данных SER,
сигнал RTS управляет входом синхронного тактового входа SRCLK,
сигнал TXD управляет входом синхронной защелки выходных сигналов RCLK.
Нужно реализовать временную диаграмму синхронной записи 16-битного слова. Для защелкивания этого слова нужно передать через COM-порт любой байт на любой скорости, но желательно что-то типа 0x00. Естественно перед записью следующего 16-битного слова нужно дождаться когда передача этого байта закончится. Для контроля этой передачи можно соорудить "эхо", соединив 2 и 3 выводы разъема DB9F.
P.S. схема прошла конвертацию в PCAD2004, поэтому уж не обессудьте за ее качество.


Скромненько и со вкусом! a14.gif
Я бы, правда, перестраховался. Между портом и регистрами такие вот цепи поставил бы (см. рисунок)

Цитата(Mike18 @ Jun 20 2007, 17:11) *
Cовет из серии самых вредных! smile.gif Практики в освоении микроконтроллеров, ЦАП или регистров сдвига он точно не прибавит.
Это скорее из области "Очумелые ручки". smile.gif


Зря Вы так. Практики в освоении микроконтроллеров действительно не прибавит... Ибо их тут нет по условию :-)
А вот с работой ЦАПа и сдвиговых регистров человек разберется хорошо (если, конечно, будет желание)

Цитата(Mike18 @ Jun 20 2007, 17:11) *
Если задача поставлена так, что требуется просто вывод на внешний вольтметр некоторого "случайного", но прогнозируемого напряжения и временные рамки фиксации или обновления его значения не критичны, то можно обойтись простым включением пассивного НЧ фильтра на один из выходов COM порта (RC цепочка - один резистор и один конденсатор). При этом программа должна посылать на выбранный выход непрерывный поток данных реализующий режим ШИМ.
Для LPT этот вариант с одним выводом и симуляцией ШИМ тоже работает, но программно на LPT проще организовать статический вывод, подключив на линии данных матрицу R-2R.


Вы внимаетельно читали задачу? Человеку надо вывести данные на ЦАП !!!
Конечно, можно сделать как Вы предлагаете, но это уже, извините, другая область.
Поэтому как раз Ваш совет можно назвать если не "вредным", то "сбивающим с пути" smile.gif
rezident
Цитата(ALexx @ Jun 20 2007, 20:59) *
Скромненько и со вкусом! a14.gif
Я бы, правда, перестраховался. Между портом и регистрами такие вот цепи поставил бы (см. рисунок)

Примерно такое же согласование стоит в схеме BSL MSP430 из slaa096. У нас по этой схеме (BSL) собрано около 8 преобразователей, с помощью которых мы программируем MSP430 и LPC213x. Нареканий нет (по входу RS-232 ни один из строя не выходил), кроме того, что с одним ноутбуком этот интерфейс не хочет работать. Я подозреваю, что там COM-порт в паузах в shutdown уходит и поэтому программирование не получается.
Можно конечно сделать и без применения 74HC14, чисто на транзисторах, как это в PonyProg реализовано.
ALexx
Цитата(rezident @ Jun 20 2007, 18:10) *
Примерно такое же согласование стоит в схеме BSL MSP430 из slaa096. У нас по этой схеме (BSL) собрано около 8 преобразователей, с помощью которых мы программируем MSP430 и LPC213x. Нареканий нет (по входу RS-232 ни один из строя не выходил), кроме того, что с одним ноутбуком этот интерфейс не хочет работать. Я подозреваю, что там COM-порт в паузах в shutdown уходит и поэтому программирование не получается.
Можно конечно сделать и без применения 74HC14, чисто на транзисторах, как это в PonyProg реализовано.


Все верно, работать будет, только обращу внимание на наличие защитных диодов в приведенных Вами схемах бутлоадера и ПониПрога. Оные диоды отсутствуют в предложенной Вами схеме со сдвиговыми регистрами.
Mike18
Цитата(ALexx @ Jun 20 2007, 18:59) *
Зря Вы так. Практики в освоении микроконтроллеров действительно не прибавит... Ибо их тут нет по условию :-)
А вот с работой ЦАПа и сдвиговых регистров человек разберется хорошо (если, конечно, будет желание)
...
Вы внимаетельно читали задачу? Человеку надо вывести данные на ЦАП !!!
Конечно, можно сделать как Вы предлагаете, но это уже, извините, другая область.
Поэтому как раз Ваш совет можно назвать если не "вредным", то "сбивающим с пути" smile.gif
Так я же не про Ваш совет высказался, а про свой! К нему и smile.gif smile.gif относились. Извините, если неправильно был понят beer.gif . Во втором сообщении автора появился уточняющий термин -"задача абстрактная", а потом и LPT проявился...
Цитата
Объясню-ка я задачу, для которой мне все то нужно(Она довольно абстрактная).
Мне нужно на компе программо генерировать случайное число и выводить его на COM-порт. От порта оно должно передаваться на ЦАП и на вольтметре должно показаться некое напряжение).

А ШИМ с фильтром - это тот же ЦАП smile.gif .
rx3apf
Цитата(ALexx @ Jun 21 2007, 11:02) *
Все верно, работать будет, только обращу внимание на наличие защитных диодов в приведенных Вами схемах бутлоадера и ПониПрога. Оные диоды отсутствуют в предложенной Вами схеме со сдвиговыми регистрами.

Зато там присутствуют 74HC14. Которые уже имеют оные защитные диоды на входах. И 74HC к "тиристорному эффекту" не склонна. И при выбранных номиналах токоограничительных резисторов никаких проблем вызвать не может. Нет, в принципе-то может быть звон в линии, вызывающий паразитное тактирование, поэтому по-хорошему согласующую RC-цепочку я бы поставил...

Цитата(Mike18 @ Jun 20 2007, 18:11) *
Если задача поставлена так, что требуется просто вывод на внешний вольтметр некоторого "случайного", но прогнозируемого напряжения и временные рамки фиксации или обновления его значения не критичны, то можно обойтись простым включением пассивного НЧ фильтра на один из выходов COM порта (RC цепочка - один резистор и один конденсатор). При этом программа должна посылать на выбранный выход непрерывный поток данных реализующий режим ШИМ.

Тогда уж именно данные через TxD. Гоним блок из 128 байтов - имеем PWM 115200 (ну не то чтобы совсем "честный", но старт-стопные биты мешать не должны), 10 битов.
upc2
Цитата(muravei @ Jun 20 2007, 17:13) *
Если 8 , то можно ничего не делать - купить несколько резисторов R-2R поточнее , напаять на выходы преобразоателя и наслаждаться.


Можете уточнить? Куда и чего в СОМ-порту паять?C порта выходит цифра, а не аналог.И куда все это
присоединить к ЦАПу?
Toni Gard
Цитата
Вот такую примерно простенькую схему преобразования сигналов COM-порта в параллельную шину могу предложить. Сигнал DTR управляет входом последовательных данных SER,сигнал RTS управляет входом синхронного тактового входа SRCLK,сигнал TXD управляет входом синхронной защелки выходных сигналов RCLK.Нужно реализовать временную диаграмму синхронной записи 16-битного слова. Для защелкивания этого слова нужно передать через COM-порт любой байт на любой скорости, но желательно что-то типа 0x00. Естественно перед записью следующего 16-битного слова нужно дождаться когда передача этого байта закончится. Для контроля этой передачи можно соорудить "эхо", соединив 2 и 3 выводы разъема DB9F.P.S. схема прошла конвертацию в PCAD2004, поэтому уж не обессудьте за ее качество.


Вообще тема! Спасибо большое! А не могли бы вы скинуть схемку из PCAD?

Цитата
Я бы, правда, перестраховался. Между портом и регистрами такие вот цепи поставил бы (см. рисунок)


А что это за цепь?
ALexx
Цитата(Toni Gard @ Jun 22 2007, 12:15) *
А что это за цепь?


Преобразователь уровня RS232 (то, что из СОМ-порта выходит) в CMOS (то, что необходимо сдвиговым регистрам)

Диод обрезает сигналы отрицательной полярности, транзистор выполняет роль буфера, 74НС14 - для увеличения крутизны фронтов поучаемого сигнала.
Toni Gard
А без него устройство не будет работать?

Цитата
Нужно реализовать временную диаграмму синхронной записи 16-битного слова

То есть программно мне нужно выводить на порт сигнал в режиме синхронной передачи? А почему нельзя передавать в асинхронном?
rezident
Цитата(Toni Gard @ Jun 22 2007, 16:23) *
А почему нельзя передавать в асинхронном?

Патамучто biggrin.gif
Потому, что для приема асинхронной передачи нужен соответствующий приемник (UART) от которого вы отказываетесь, т.к., например, 16500 чем-то нужно программировать для приема, на КР581ВА1А вы не можете найти описания, а использовать микроконтроллер со встроенным UART для вас вообще непосильная задача wink.gif
Toni Gard
А временная диаграмма синхронной записи 16-битного слова - это в смысле вывод 2 раза по 8 байт без перерыва?
rezident
Цитата(Toni Gard @ Jun 22 2007, 17:42) *
А временная диаграмма синхронной записи 16-битного слова - это в смысле вывод 2 раза по 8 байт без перерыва?

Это означает что нужно передать 16-разрядное слово, т.е. для 74HC595 необходимо 16 раз
- установить бит данных на входе SER,
- сформировать строб SRCLK
Затем один раз сформировать строб записи RCLK.
Информация появится на входах ЦАП. Но для записи в сам ЦАП нужно сформировать стробы записи управляющих сигналов самого АЦП. Для этого нужно выполнить запись в 74HC595 как минимум дважды, меняя в записываемом 16-и разрядном слове, только те биты, который соответствуют разрядам управляющих сигналов ЦАП.
Toni Gard
Цитата
А временная диаграмма синхронной записи 16-битного слова - это в смысле вывод 2 раза по 8 байт без перерыва?

Ох, я ошибься, хотел написать по 8 бит.))

Цитата
Это означает что нужно передать 16-разрядное слово, т.е. для 74HC595 необходимо 16 раз - установить бит данных на входе SER,- сформировать строб SRCLKЗатем один раз сформировать строб записи RCLK.Информация появится на входах ЦАП. Но для записи в сам ЦАП нужно сформировать стробы записи управляющих сигналов самого АЦП. Для этого нужно выполнить запись в 74HC595 как минимум дважды, меняя в записываемом 16-и разрядном слове, только те биты, который соответствуют разрядам управляющих сигналов ЦАП.


Жесть. Прочитал два раза и абсолютно не воспринял. Что такое Строб? Это от английского strobe signal - "отпирающий импульс"? Чем он отличается от других? Тем, что это обыкновенный бит, просто идущий по другой линии?

А что там насчет PCAD'овского файла?

P.S. Гм, я только что заметил, что мы с вами земляки: я тоже из Перми. Вы случайно в ВУЗ'е никаком ни преподаете? А то окажется, что я сейчас с куратором общаюсь:D

Ну ладно, я пошел, у меня гроза начинается...
rezident
Цитата(Toni Gard @ Jun 22 2007, 19:02) *
Ох, я ошибься, хотел написать по 8 бит.))
Жесть. Прочитал два раза и абсолютно не воспринял. Что такое Строб? Это от английского strobe signal - "отпирающий импульс"? Чем он отличается от других? Тем, что это обыкновенный бит, просто идущий по другой линии?

Вы уж скажите сразу тогда в какой терминологии с вами разговаривать, если вы обычных терминов не понимаете? smile.gif
Цитата(Toni Gard @ Jun 22 2007, 19:02) *
А что там насчет PCAD'овского файла?

Эту схему можно нарисовать за 40-50 минут, включая время на создание символьных элементов. Не ленитесь!
Цитата(Toni Gard @ Jun 22 2007, 19:02) *
P.S. Гм, я только что заметил, что мы с вами земляки: я тоже из Перми. Вы случайно в ВУЗ'е никаком ни преподаете? А то окажется, что я сейчас с куратором общаюсь:D

Нет, но знакомые преподаватели в ПГУ имеются. biggrin.gif
Цитата(Toni Gard @ Jun 22 2007, 19:02) *
Ну ладно, я пошел, у меня гроза начинается...

Закончилась уже вроде.
sensor_ua
Решил взглянуть на КР581ВА1А - погуглил аналог - нашёл (на первой странице) TR1602A, ну и дэйташит на неё по первому же линку http://www.datasheet4u.com/html/T/R/1/TR16...igital.pdf.html
Симпатичная старушка. Ещё припоминается, что раньше у Mototrola был приёмник адресуемый (типа enhanced UART), но как звать уж не помню.
По вопросу. Может, не мучаться и применить ЦАП другой - с последовательной загрузкой, например, DAC7612 http://focus.ti.com/docs/prod/folders/print/dac7612.html. А управлять, например, можно ногодрыганием DTR, RTS, а защёлкивать передачей 0xFF или 0x00 по TXD. В качестве преобразователей уровня можно применить старую добрую DS14C89A http://www.national.com/pf/DS/DS14C89A.html, или чего по-свежее - MAX3243, например, или вааще на 3-х транзисторах, а то и на резисторах со стабилитронамиwink.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.