Страница 1 из 2

Ввод- вывод большого количества сигналов

Добавлено: Пн дек 13, 2010 14:43:12
igor-x
Добрый день

подскажите пож, каким образом лучше организовать Ввод- вывод большого количества сигналов (например 32 на входе и 32 на выходе) , портов ввода- вывода не достаточно (ATMega 8 . ).
(имеется ввиду - схемное решение, с программой надеюсь разберусь... )
--
Спасибо

Re: Ввод- вывод большого количества сигналов

Добавлено: Пн дек 13, 2010 14:44:04
lix
сдвиговые регистры вам в помощь.

Re: Ввод- вывод большого количества сигналов

Добавлено: Пн дек 13, 2010 14:45:13
igor-x
lix писал(а):сдвиговые регистры вам в помощь.
посоветуйте бюджетный вариант?

Re: Ввод- вывод большого количества сигналов

Добавлено: Пн дек 13, 2010 14:47:35
lix
74hc164 и 74hc165
вместо 164 можно 595, у них защелки есть на выходах

Re: Ввод- вывод большого количества сигналов

Добавлено: Пн дек 13, 2010 21:33:28
lsdy
igor-x писал(а):Добрый день

портов ввода- вывода не достаточно (ATMega 8 . ).
(имеется ввиду - схемное решение, с программой надеюсь разберусь... )
--
Спасибо
микросхемы расширители порта,по стандартному spi,однако это резко понизит реакцию системы

Re: Ввод- вывод большого количества сигналов

Добавлено: Пн дек 13, 2010 23:05:04
svs39
lsdy писал(а):
igor-x писал(а):Добрый день
микросхемы расширители порта,по стандартному spi,однако это резко понизит реакцию системы
Входы- 74нс251(n шт), выходы-74нс595(к шт), причем на пины программатора, туда же и 4-битную шину данных ЛСД- такое использую, только пока мега162 и мега32/324

Re: Ввод- вывод большого количества сигналов

Добавлено: Ср янв 26, 2011 08:50:44
igor-x
lsdy писал(а): Входы- 74нс251(n шт), выходы-74нс595(к шт), причем на пины программатора, туда же и 4-битную шину данных ЛСД- такое использую, только пока мега162 и мега32/324
спасибо!
подскажите пож. по 74нс595:
правильно ли я понял назначение выводов? (из даташит)
10 MR - почему master reset, а не просто reset ?
11 SH_CP - фронтом импульса происходит сдвиг из DS
12 ST_CP - фронтом из сдвигового регистра происходит запись в выходной буфер

то есть на ST_CP можно подать постоянно частоту с генератора имп. - чтоб данные были всегда на выходе?

и если не сложно - пример подключения этой МС на пины программатора.

Re: Ввод- вывод большого количества сигналов

Добавлено: Ср янв 26, 2011 10:07:30
Engineer_Keen
igor-x писал(а):10 MR - почему master reset, а не просто reset ?
Какая вам разница :))
igor-x писал(а): 11 SH_CP - фронтом импульса происходит сдвиг из DS
12 ST_CP - фронтом из сдвигового регистра происходит запись в выходной буфер
да
igor-x писал(а): то есть на ST_CP можно подать постоянно частоту с генератора имп. - чтоб данные были всегда на выходе?
Если нужно чтобы на конкретном выходе было конкретное для него значение нужно подать 8 импульсов (16, 32, 1024, смотря сколько каскадов на 595) на SH_CP, а потом 1 импульс на ST_CP. Если подавать импульсы на ST_CP постоянно, как на SH_CP, то сигналы на выходах будут просто бежать, как в елочных гирляндах.
igor-x писал(а): и если не сложно - пример подключения этой МС на пины программатора.
На самом деле подключение 595 регистра, это тот же самый SPI-интерфейс...

Re: Ввод- вывод большого количества сигналов

Добавлено: Ср янв 26, 2011 10:41:48
igor-x
Engineer_Keen писал(а):
igor-x писал(а):10 MR - почему master reset, а не просто reset ?
Какая вам разница :))
хочется знать что же он сбрасывает - только выходной буфер или сдвиговый регистр тоже?

Re: Ввод- вывод большого количества сигналов

Добавлено: Ср янв 26, 2011 10:52:45
Engineer_Keen
MR сбрасывает только сдвиговый регистр.

Re: Ввод- вывод большого количества сигналов

Добавлено: Ср янв 26, 2011 10:57:31
Satyr
igor-x писал(а):Ввод- вывод большого количества сигналов (например 32 на входе и 32 на выходе) , портов ввода- вывода не достаточно (ATMega 8 . ).
Использовать нормальный микроконтроллер, а не из каменного века.

Re: Ввод- вывод большого количества сигналов

Добавлено: Ср янв 26, 2011 11:27:08
Engineer_Keen
Satyr писал(а):Использовать нормальный микроконтроллер, а не из каменного века.
Это какой?
Выбор контроллера зависит от задачи.

Re: Ввод- вывод большого количества сигналов

Добавлено: Ср янв 26, 2011 11:31:35
igor-x
Satyr писал(а):
igor-x писал(а):Ввод- вывод большого количества сигналов (например 32 на входе и 32 на выходе) , портов ввода- вывода не достаточно (ATMega 8 . ).
Использовать нормальный микроконтроллер, а не из каменного века.
а на каком нормальном контроллере можно организовать ввод-вывод 300 и более логических сигналов?

Re: Ввод- вывод большого количества сигналов

Добавлено: Ср янв 26, 2011 11:53:24
Vov123
Вот в вашу копилку-решение увеличения входов/выходов.Кнопок можно гораздо более сделать.Рисовать поленился.Давно это было.

Re: Ввод- вывод большого количества сигналов

Добавлено: Ср янв 26, 2011 12:03:41
avreal
svs39 писал(а):Входы- 74нс251(n шт), выходы-74нс595(к шт), причем на пины программатора,
Входы - 74hc597, "комплементарная" к hc595.
Цоколёвка одинаковая, но логика перезаписи из регистра в регистр другая, поэтому я делал на модуле два строба - hc595 перезапись из поледовательного в пааллельный одним, для hc597 для защёлкивания/перезапси в последовательный - другим.
И перемычки перед сотв. входом. В результате можно сделать в одной петле spi все, а потом по вариантам исполнения паять в нужное место hc595 или hc597 и на том месте перемычку на нужный строб. Ну а входные/выходные цепи уже на той плате, в которую модуль вставляется.
Точнее, у меня так только одну из трёх микросхем в серединке заменить нужно было, на одном краю петли были только входы, на другом - только выходы. Чтобы лишних перемычек не паять. Т.е. кроме ШИМ-ов и АЦП было или 8in/16out или 16in/8out.
Цикл обмена - защёлкнуть входы, прогнать spi_io() по числу подключенных микросхем, защёлкнуть выходы.

Ну а торомзнутость/не тормознутость петли SPI, это смотря как считать и с чем сравнивать.
Пусть даже есть куча портов, вывод из массиа и ввод в массив - это горсть обращений к памяти, для avr - lds+out или lds+in на байт, 4 такта на байт.
Для SPI - lds/sts "растворяются" в обмене по SPI, для тех же AVR получаем 16 тактов на байт плюс чтение из памяти первого байта перед циклом и запись после.. Вроде как аж в четрыре раза медленнее.
Но - пусть у нас таких регистров в петле 32 (256 бит IO).
32*16 - 512 тактов. 64 микросекунды на 8-мегагерцовом процессоре. Не так и много.

Можно расщепить петлю на две ветки, из одной читать вместе с запиисью в другую. Это ускорит в два раза, если число входов и выходов одинаково. Но петля удобна трассировкой, особенно если входы и выходы чередуются.

Re: Ввод- вывод большого количества сигналов

Добавлено: Ср янв 26, 2011 12:04:20
Satyr
Engineer_Keen писал(а):
Satyr писал(а):Использовать нормальный микроконтроллер, а не из каменного века.
Это какой?
Выбор контроллера зависит от задачи.
Вот и я про то. Зачем для задачи, где только ввода-вывода надо 64 ноги брать 28 ногий контроллер. где логика ?

Re: Ввод- вывод большого количества сигналов

Добавлено: Ср янв 26, 2011 12:07:00
Satyr
igor-x писал(а): а на каком нормальном контроллере можно организовать ввод-вывод 300 и более логических сигналов?
Вобще задача стоит о 64 линиях ввода-вывода.

Сходу так могу сказать, где 160 линий есть. Причем корпус еще вполне паяемый (пробовал -)) ), есть в Москве в наличии по 400р в розницу.

Re: Ввод- вывод большого количества сигналов

Добавлено: Ср янв 26, 2011 12:09:32
igor-x
Satyr писал(а):
igor-x писал(а): а на каком нормальном контроллере можно организовать ввод-вывод 300 и более логических сигналов?
Вобще задача стоит о 64 линиях ввода-вывода.
к сожалению задача была озвучена неточно - имелось в виду число выходных сигналов больше числа портов МК

Re: Ввод- вывод большого количества сигналов

Добавлено: Ср янв 26, 2011 12:26:19
Satyr
igor-x писал(а): к сожалению задача была озвучена неточно - имелось в виду число выходных сигналов больше числа портов МК
А частота опроса/изменения состояния какая ?

Re: Ввод- вывод большого количества сигналов

Добавлено: Ср янв 26, 2011 19:30:31
Meteor
Вопрос не в том чем расширить возможности, а в том успеете ли ввести/вывести данные.
Озвучте задачу. Что за сигналы, где, чем и как формируются?
Что является приемником сигналов? Как часто должно меняться?