простые последовательные

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Nickita A Startcev! You wrote in conference fido7.ru.embedded to snipped-for-privacy@fk0.pp.ru on Wed, 27 Dec

2006 16:18:16 +0300:

NA> В (самых) дешевых тиньках ничего нет, нужно эмулировать программно NA> и/или аппаратно. Так что, наверное, нечто и2ц образное выйдет. NA> (недостаток СПИ - куча линий чип_селект.)

Реализовать программный iic можно фактически только используя прерывание по изменению порта, а это часто вступает в конфликт с другим использованием выводов этого порта. Адресация же устройств с таким образом написанным iic ничем не проще чем при помощи UART, только с UART все гибче и аппаратно он много где реализован. Сделать же на его базе шину - и вовсе тривиально, причем достаточно одного (не считая общего) провода.

dima

formatting link

Reply to
Dmitry Orlov
Loading thread data ...

Здравствуйте, Уважаемый Nickita!

Wed Dec 27 2006 16:18, Nickita A Startcev wrote to snipped-for-privacy@fk0.pp.ru:

NAS> (недостаток СПИ - куча линий чип_селект.)

Это не совсем так. Одного CS хватит на все slave. Просто, первым байтом в пакете должен быть адрес моторчика и бит операции WR/RD. Hе свои пакеты моторчик игнорирует.

Всего Вам Хорошего Ольга

Reply to
Olga Nonova

Здравствуйте, Уважаемый Dmitry!

Wed Dec 27 2006 16:29, Dmitry Orlov wrote to Olga Nonova:

ON>> В Вашем варианте я бы делала на I2C. Для одного управляющего ON>> master и многих моторчиков как slave -это самое простое и ON>> гибкое в доработках.

DO> UART - куда более распространенная периферия, чем i2c-slave и программно DO> реализуется проще.

Для связи узлов _внутри _одного _корпуса самое простое- это SPI или I2C. Они, собственно, для этого и были созданы. Вот, если выходить наружу ящика, то Вы правы.

Всего Вам Хорошего Ольга

Reply to
Olga Nonova

Привет, Rifkat !

27 Dec 06 , 09:20 Rifkat Abdulin писал к Vitaly Nasennik:

RA> CAN - все же скорее тот же RS485 в многомастерном режиме и в RA> аппаратной поддержке функций адресов, CRC и пр. Hу и возможность RA> работы при отрыве одной из линий. I2C - это межмикросхемный интерфейс RA> в пределах одной платы. Выносить его меж блоками - ловить все помехи, RA> тем более от движков.

полметра э.. витой четверки проводов - это 'выносить меж блоками', или таки 'в пределах одного блока'?

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... купается с круглыми утками

Reply to
Nickita A Startcev

Привет, Kirill !

27 Dec 06 , 13:45 Kirill Frolov писал к Nickita A Startcev:

KF> А uart рассчитан на соединения точка-точка.

KF> Если у MCU есть набортные SPI или I2C (вариант: SMBUS) их и стоит KF> использовать. Если упирается в скорость, то SPI.

в слейвов, по идее, ложится что-то типа аттини12, никакими готовыми интерфейсами там и не пахнет, значит надо программную часть делать полностью вручную. а раз полностью вручную - то можно и протокол 'подобрать' поприятнее.

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... Главное в жизни - эмоциональная окраска, все остальное - лишь средство.

Reply to
Nickita A Startcev

Привет, Alex !

27 Dec 06 , 20:14 Alex Mogilnikov писал к Nickita A Startcev:

KF>>> А uart рассчитан на соединения точка-точка.

KF>>> Если упирается в скорость, то SPI.

NS>> (недостаток СПИ - куча линий чип_селект.)

AM> Можно устройства включать в кольцо, то есть вход от предыдущего, AM> выход - к следующему.

Если в кольце N устройств, то для передачи байта последнему придется передать N-2 байт шита всякого? А для обмена типа "устройство номер А, что у тебя в регистре Б?" придется передавать не менее 2N байт и иметь секс с 'кто и где потерял один бит (синхронизации)'.

AM> Тогда для SPI достаточно одного провода на всех AM> ("начало посылки"),

плюс провод данных.

AM> а для UART вообще ничего не надо.

но два провода данных.

AM> У нас таким образом к одному устройству модули расширения AM> подключаются: каждый может соединяться с двумя другими,

Rx налево, Tx направо, все в кольцо? :)

AM> а UART задействован только один.

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... Международная туристическая организация Аль-Каида

Reply to
Nickita A Startcev

Привет, Rifkat !

27 Dec 06 , 19:15 Rifkat Abdulin писал к Nickita A Startcev:

RA> I2C - много писали про его гемморойность в программной реализации RA> (тайминг и пр.). Попробуйте.

с таймингом (если я ничего не путаю) там все не так уж и плохо, а запутанность скорее на логическом уровне.

RA> Проще и быстрее UART в виде 485го

второй чип, 4кондера, удвоение-упятерение цены простейшего слейва. Это уже крайний случай.

кстати, подумалось: если взять 'аппаратный уровень' как у и2ц, те же самые 'start' и 'stop' условия, тот же способ ередачи отдельного бита и поправить все остальное - то вроде как вполне нормально получается, особенно в моем ограниченном случае:

- мастер один, вся инициатива исходит от мастера

- клок генерирует мастер, данные генерирует передатчик

- формат посылки, например, <start><addr8><r/w><reg8><err><data8><err><data8><err>...<stop>

то есть, мастер формирует старт, выдает адрес устройства, выдает бит чтение/Запись, выдает номер регистра в слейве, выдает такт синхронизации, убеждается что слейв передал неошибочный бит, выдает такты синхронизации для приема или передачи N байт, выдает состояние <stop>

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... А как выглядит щенок сфинкса?

Reply to
Nickita A Startcev

Привет, Michael !

27 Dec 06 , 20:43 Michael Belousoff писал к Nickita A Startcev:

NS>> выйдет. (недостаток СПИ - кyча линий чип_селект.)

MB> А если маненько подyмать и отказаться от MB> чип селекта в пользy некоего пpотокольчика MB> повеpх SPI, с адpесацией слэйвов, а? ;-)

А соединять слейвов последовательно или параллельно? :) Может лучше взять аппаратный уровень не от СПИ, а от И2Ц? :)

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... Условно весёлые друзья

Reply to
Nickita A Startcev

Привет, Dmitry !

27 Dec 06 , 21:15 Dmitry Orlov писал к Nickita A Startcev:

NA>> В (самых) дешевых тиньках ничего нет, нужно эмулировать NA>> программно и/или аппаратно. Так что, наверное, нечто и2ц образное NA>> выйдет. (недостаток СПИ - куча линий чип_селект.)

DO> Реализовать программный iic можно фактически только используя DO> прерывание по изменению порта, а это часто вступает в конфликт с DO> другим использованием выводов этого порта.

лишние прерывания можно 'игнорировать' если хранить предыдущее и смотреть текущее состояние порта.

DO> Адресация же устройств с DO> таким образом написанным iic ничем не проще чем при помощи UART,

можно взять честный и2ц аппаратный уровень и переделать 'под свои задачи' программный.

DO> только с UART все гибче и аппаратно он много где реализован.

В самых дешевых тиньках его нет. все равно что-то свое руками программировать, а если программировать - то можно и 'конькретно под задачу' протокол извратить.

DO> Сделать DO> же на его базе шину - и вовсе тривиально, причем достаточно одного (не DO> считая общего) провода.

собрать в общую кучу прием и передачу, а разделять программно?

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... выкинуть ящик с трубадурами

Reply to
Nickita A Startcev

Привет!

Thu Dec 28 2006 09:26, Olga Nonova wrote to Nickita A Startcev:

NAS>> (недостаток СПИ - куча линий чип_селект.) ON> Это не совсем так. Одного CS хватит на все slave. Просто, первым ON> байтом в пакете должен быть адрес моторчика и бит операции WR/RD. ON> Hе свои пакеты моторчик игнорирует.

Т.е. вы описываете интерфейс I2C :-) Там как раз и есть: "первым байтом в пакете должен быть адрес моторчика и бит операции WR/RD". Если же говорить о SPI, то там каждое устройство должно иметь свою линию CS/, т.к. никаких "адресов" там нет :-) Кстати, в этой шине есть один интересный момент: некоторые операции выполняются когда линия CS/ выключается.

А вообще такая задача проще всего решается по однопроводной линии (типа 1-wire) или по двум проводам, вроде I2C или последовательного интерфейса. Тем более, что автор сообщения говорил, что каких-то сильных наводок не предполагается.

Юргис

Reply to
Jurgis Armanavichius

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Olga Nonova! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Thu, 28 Dec

2006 06:26:04 +0000 (UTC):

ON>>> В Вашем варианте я бы делала на I2C. Для одного управляющего ON>>> master и многих моторчиков как slave -это самое простое и гибкое ON>>> в доработках.

DO>> UART - куда более распространенная периферия, чем i2c-slave и DO>> программно реализуется проще.

ON> Для связи узлов _внутри _одного _корпуса самое простое- это SPI или ON> I2C. Они, собственно, для этого и были созданы. Вот, если выходить ON> наружу ящика, то Вы правы.

Это так, когда iic slave или spi реализованы аппаратно. UART в мелких контроллерах встречается чаще, чем iic, а когда его нет, реализуется проще.

dima

formatting link

Reply to
Dmitry Orlov

Какова схема подключения? ОК? Диодное или? Или просто на резисторах? Есть ли какой нибудь серьезный опыт по такому использованию УАРТ как внутренней шины?

Reply to
Arcady Schekochikhin
*** Ответ на письмо из carbonArea (carbonArea).

Привет, Rifkat !

27 Dec 06 , 19:15 Rifkat Abdulin писал к Nickita A Startcev:

RA> "вы просто не умеете их готовить".

;)

RA> Можно и без чип-селекта работать. RA> Основный недостаток - малейший сбой на 1 бит синхронизации - по петле RA> ползет кака. А чтобы слейву передать мастеру, что он принял каку - RA> нужно принимать следующую посылку от мастера. Кака, в-общем.

Вот-вот. Кака.

RA> I2C - много писали про его гемморойность в программной реализации RA> (тайминг и пр.). Попробуйте.

RA> Проще и быстрее UART в виде 485го

не хочу вторую микруху в тупые оконечные устройства ставить.

. С уважением, Hикита. ... waitfor afterdark (c) QNX

Reply to
Nickita A Startcev

JA> NAS>> (недостаток СПИ - куча линий чип_селект.) ON>> Это не совсем так. Одного CS хватит на все slave. Просто, первым ON>> байтом в пакете должен быть адрес моторчика и бит операции WR/RD. ON>> Hе свои пакеты моторчик игнорирует.

JA> Т.е. вы описываете интерфейс I2C :-) Там как раз и есть: "первым JA> байтом в пакете должен быть адрес моторчика и бит операции WR/RD". JA> Если же говорить о SPI, то там каждое устройство должно иметь свою JA> линию CS/, т.к. никаких "адресов" там нет :-) Кстати, в этой шине JA> есть один интересный момент: некоторые операции выполняются когда JA> линия CS/ выключается.

На пике 8720 работаю без чип-селектов, именно с адресом в преамбуле. Именно по SPI. Все работает как надо

Reply to
Rifkat Abdulin

Здравствуйте, Уважаемый Jurgis!

Thu Dec 28 2006 10:07, Jurgis Armanavichius wrote to Olga Nonova:

NAS>>> (недостаток СПИ - куча линий чип_селект.) ON>> Это не совсем так. Одного CS хватит на все slave. Просто, первым ON>> байтом в пакете должен быть адрес моторчика и бит операции WR/RD. ON>> Hе свои пакеты моторчик игнорирует.

JA> Т.е. вы описываете интерфейс I2C :-) Там как раз и есть: "первым JA> байтом в пакете должен быть адрес моторчика и бит операции WR/RD". JA> Если же говорить о SPI, то там каждое устройство должно иметь свою JA> линию CS/, т.к. никаких "адресов" там нет :-) Кстати, в этой шине JA> есть один интересный момент: некоторые операции выполняются когда JA> линия CS/ выключается.

Hет, я описываю именно master SPI в микроконтроллере, который у меня работает по одному CS со многими FPGA как SPI-slave. CS один на всех нужен только для отметки начала и конца пакета обмена. Исполнение операции управления в FPGA происходит как раз, когда CS/ выключается. SPI проигрывает I2C только в необходимом количестве линий. Для описанной здесь задачки с моторчиками и каким-нибудь tiny в качестве их драйвера- это существенно.

JA> А вообще такая задача проще всего решается по однопроводной линии JA> (типа 1-wire) или по двум проводам, вроде I2C или последовательного JA> интерфейса. Тем более, что автор сообщения говорил, что каких-то JA> сильных наводок не предполагается.

Проще всего на стороне моторчиков использовать кристалл со встроенным HW I2C или SPI. И не тратить время на изобретение велосипедов.

Всего Вам Хорошего Ольга

Reply to
Olga Nonova

Здравствуйте, Уважаемый Dmitry!

Thu Dec 28 2006 11:20, Dmitry Orlov wrote to Olga Nonova:

ON>> Для связи узлов _внутри _одного _корпуса самое простое- это SPI или ON>> I2C. Они, собственно, для этого и были созданы. Вот, если выходить ON>> наружу ящика, то Вы правы.

DO> Это так, когда iic slave или spi реализованы аппаратно. UART в мелких DO> контроллерах встречается чаще, чем iic, а когда его нет, реализуется DO> проще.

Если нет аппаратных i2c но есть uart, то Вы правы. Однако, если нет и аппаратного uart, то из трех вариантов программной реализации: i2c,spi,uart

-,мне представляется, меньше сил и времени уйдет на spi. Да и стабильность с воспроизводимостью окажется выше.

Всего Вам Хорошего Ольга

Reply to
Olga Nonova

Привет!

Thu Dec 28 2006 11:59, Olga Nonova wrote to Jurgis Armanavichius:

JA>> Т.е. вы описываете интерфейс I2C :-) Там как раз и есть: "первым JA>> байтом в пакете должен быть адрес моторчика и бит операции WR/RD". JA>> Если же говорить о SPI, то там каждое устройство должно иметь свою JA>> линию CS/, т.к. никаких "адресов" там нет :-) Кстати, в этой шине JA>> есть один интересный момент: некоторые операции выполняются когда JA>> линия CS/ выключается. ON> Hет, я описываю именно master SPI в микроконтроллере, который у меня ON> работает по одному CS со многими FPGA как SPI-slave. CS один на всех ON> нужен только для отметки начала и конца пакета обмена.

Так вы просто напросто сочинили свой гибрид I2C-SPI :-) Потому, что никакого адреса в первом байте не содержится, туда помещается команда SPI-устройству. Полностью согласен, что самопальные решения имеют свое право на жизнь.

JA>> А вообще такая задача проще всего решается по однопроводной линии JA>> (типа 1-wire) или по двум проводам, вроде I2C или последовательного JA>> интерфейса. Тем более, что автор сообщения говорил, что каких-то JA>> сильных наводок не предполагается. ON> Проще всего на стороне моторчиков использовать кристалл со встроенным ON> HW I2C или SPI. И не тратить время на изобретение велосипедов.

Программная реализация I2C - тривиальнейшая вещь. Я ее использую даже тогда, когда аппаратный I2C есть. Просто чтобы не заморачиваться с переделкой давно отлаженных программных кусочков :-)

Юргис

Reply to
Jurgis Armanavichius

Привет!

Thu Dec 28 2006 11:49, Rifkat Abdulin wrote to Jurgis Armanavichius:

JA>> Т.е. вы описываете интерфейс I2C :-) Там как раз и есть: "первым JA>> байтом в пакете должен быть адрес моторчика и бит операции WR/RD". JA>> Если же говорить о SPI, то там каждое устройство должно иметь свою JA>> линию CS/, т.к. никаких "адресов" там нет :-) Кстати, в этой шине JA>> есть один интересный момент: некоторые операции выполняются когда JA>> линия CS/ выключается. RA> Hа пике 8720 работаю без чип-селектов, именно с адресом в преамбуле. RA> Именно по SPI. Все работает как надо

Хм... А если этот адрес совпадёт с какой-нибудь из SPI-команд? Или ты тоже, как коллектив авторов, применяешь нестандартное решение собственного сочинения? Тогда другое дело. Hо в этом случае I2C все-равно рулит, т.к. требует на один провод меньше :-)

Юргис

Reply to
Jurgis Armanavichius

Пpивет, Jurgis!

*** 28 Dec 06 13:08, Jurgis Armanavichius wrote to Olga Nonova:

JA>>> в этой шине есть один интересный момент: некоторые операции JA>>> выполняются когда линия CS/ выключается. ON>> Hет, я описываю именно master SPI в микроконтроллере, который у ON>> меня работает по одному CS со многими FPGA как SPI-slave. CS ON>> один на всех нужен только для отметки начала и конца пакета ON>> обмена.

JA> Так вы просто напросто сочинили свой гибрид I2C-SPI :-) Потому, что JA> никакого адреса в первом байте не содержится, туда помещается команда JA> SPI-устройству.

Или адрес. Hапример, трансиверы Chipcon - типично первый байт содержит адрес и признак R/W. Hекоторые адреса представляют из себя "стробы", но в основном - именно адреса внутренних регистров. Hо - это все в пределах одного кристалла.

JA> Программная реализация I2C - тривиальнейшая вещь. Я ее использую даже JA> тогда, когда аппаратный I2C есть. Просто чтобы не заморачиваться с JA> переделкой давно отлаженных программных кусочков :-)

I2C master - тривиально. А вот слейв - очень даже нет.

с уважением Владислав

Reply to
Vladislav Baliasov

JA>>> Т.е. вы описываете интерфейс I2C :-) Там как раз и есть: "первым JA>>> байтом в пакете должен быть адрес моторчика и бит операции WR/RD". JA>>> Если же говорить о SPI, то там каждое устройство должно иметь свою JA>>> линию CS/, т.к. никаких "адресов" там нет :-) Кстати, в этой шине JA>>> есть один интересный момент: некоторые операции выполняются когда JA>>> линия CS/ выключается. RA>> Hа пике 8720 работаю без чип-селектов, именно с адресом в преамбуле. RA>> Именно по SPI. Все работает как надо

JA> Хм... А если этот адрес совпадёт с какой-нибудь из SPI-команд? Или JA> ты JA> тоже, как коллектив авторов, применяешь нестандартное решение JA> собственного JA> сочинения? Тогда другое дело. Hо в этом случае I2C все-равно рулит, JA> т.к. JA> требует на один провод меньше :-)

Что значит команды SPI? Протокол обмена я сам регламентирую. UART еще более рулит - геммороя меньше ;-)

Reply to
Rifkat Abdulin

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.