X-Virus-Scanned: amavisd-new at bezeqint.net
Hello, Nickita A Startcev! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Thu, 28 Dec
2006 09:58:16 +0300:
NA>>> В (самых) дешевых тиньках ничего нет, нужно эмулировать программно NA>>> и/или аппаратно. Так что, наверное, нечто и2ц образное выйдет. NA>>> (недостаток СПИ - куча линий чип_селект.)
DO>> Реализовать программный iic можно фактически только используя DO>> прерывание по изменению порта, а это часто вступает в конфликт с DO>> другим использованием выводов этого порта.
NA> лишние прерывания можно 'игнорировать' если хранить предыдущее и NA> смотреть текущее состояние порта.
Можно, я не говорю, что нельзя. Я говорю, что это сложней. А используя внешнее прерывание и таймер программный uart можно еще более быстрый сделать, чем используя только таймер. Только программный uart мы тут летом обсосали и он уже реализован, а iic (причем не стандартный, а только похожий на него) еще делать надо...
DO>> Адресация же устройств с таким образом написанным iic ничем не DO>> проще чем при помощи UART,
NA> можно взять честный и2ц аппаратный уровень и переделать 'под свои NA> задачи' программный.
Зачем?
DO>> только с UART все гибче и аппаратно он много где реализован.
NA> В самых дешевых тиньках его нет. все равно что-то свое руками NA> программировать, а если программировать - то можно и 'конькретно под NA> задачу' протокол извратить.
Причем протокол - uart. Впрочем, можно конечно и его нестандартным делать, и передавать не 8-9битные данные, а сколько нужно, только при этом возрастают требования к точности синхронизации. А можно кстати и наоборот поступить и тем самым требования снизить.
DO>> Сделать же на его базе шину - и вовсе тривиально, причем достаточно DO>> одного (не считая общего) провода.
NA> собрать в общую кучу прием и передачу, а разделять программно?
При программной реализации ничего никуда собирать не надо, нужна одна ножка и внешний pull-up, лучше в виде источника тока, но можно и просто резистором (одним или несколькими). Хотя если связь внутри одной pcb, то можно и встроенным pull-up'ом обойтись. Передача и прием естественно разнесены по времени, ну так они и в iic разнесены. Причем эта разнесенность еще и упрощает конечный автомат программного uart'а и избавляет от необходимости свое же эхо фильтровать, как в случае аппаратного uart'а. В качестве бесплатного бонуса - возможность легко подключить готовый host pc вместо центрального контроллера для отладки и/или расширения функциональности.
dima
formatting link