реклама на сайте
подробности

 
 
6 страниц V  « < 2 3 4 5 6 >  
Reply to this topicStart new topic
> Первые шаги с AVR, Есть идея и желание, но нет опыта
IgorKossak
сообщение Jul 18 2007, 19:02
Сообщение #46


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(SpyBot @ Jul 18 2007, 20:57) *
А если сначало передавать адрес нужного устройства? 1111493779.gif

В стандартный SPI эта фича не входит, а значит к существующим устройствам (часы, DataFlash, ...) не применима.
Это можно сделать если по SPI общаться между МК, знакомыми с данным протоколом.
Go to the top of the page
 
+Quote Post
WHALE
сообщение Jul 18 2007, 19:55
Сообщение #47


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



Цитата(IgorKossak @ Jul 18 2007, 23:02) *
В стандартный SPI эта фича не входит, а значит к существующим устройствам (часы, DataFlash, ...) не применима.
Это можно сделать если по SPI общаться между МК, знакомыми с данным протоколом.

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


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 18 2007, 22:07
Сообщение #48


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(IgorKossak @ Jul 18 2007, 20:43) *
Применив 150 линий chip select. cool.gif

Цитата
Если постараться , может хватить 8.

Ключевое слово "постараться" ;>
Вот вот.. И вся "гибкость" масштабирования летит в тар-тарары.

Может GM что-то другое имел в виду.. С интересом жду что он скажет.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 19 2007, 21:22
Сообщение #49


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(defunct @ Jul 18 2007, 22:07) *
Может GM что-то другое имел в виду.. С интересом жду что он скажет.

Ого, сколько понаписали, сегодня целый день в разъездах был, не было возможности ответить.

Well to the question. Для начала, например, можно соединить SPI выход первого слейва со входом второго, а его выход с входом третьего, ну и так далее...Очень просто, как говорит мой босс, но проблемо(:-).


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 19 2007, 22:20
Сообщение #50


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(=GM= @ Jul 20 2007, 00:22) *
Для начала, например, можно соединить SPI выход первого слейва со входом второго, а его выход с входом третьего, ну и так далее...Очень просто, как говорит мой босс, но проблемо(:-).

Как всегда очень оригинально ;> но действительно проблемно.. smile.gif
Клок как передавать? CS?
И проводов не три а хм.. 150 + 1 (это если клок "расшарить").
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 20 2007, 09:45
Сообщение #51


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(defunct @ Jul 19 2007, 21:20) *
Как всегда очень оригинально ;> но действительно проблемно.. smile.gif Клок как передавать? CS? И проводов не три а хм.. 150 + 1 (это если клок "расшарить").

Ну, не очень это и оригинально, всё до меня уже сделали и все пользуются, в частности, вы, только не задумываетесь об этом. Грубо говоря, у многих коллег шоры на глазах, находятся в плену, так сказать, имбеддерских предрассудков(:-)...

Клок надо передавать всем одновременно, т.е. параллельное подключение. А CS вообще не нужен по большому счёту.

И, если только передавать, то нужно всего два провода.

Что касается "проблемно" - сможете подключить 150 иис устройств к одной шине? Получите ба-а-а-льшую проблему...


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 20 2007, 11:54
Сообщение #52


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(=GM= @ Jul 20 2007, 12:45) *
И, если только передавать, то нужно всего два провода.

Давайте не будем урезать функциональность, ок?
Вы ж решили оспорить простоту масштабирования I2C, а значит ваше решение должно быть не хуже по функциональности.

Для полноценного обмена вашим методом надо построить кольцо.
1->2->3->4 ..... ->N -> 1
Это накладно как с т.з. железа так и т.з. протокола.

Цитата
Что касается "проблемно" - сможете подключить 150 иис устройств к одной шине?

К I2C 150-нет, а 128 запросто, она для этого и создана.

Цитата
Получите ба-а-а-льшую проблему...

Если добавить еще одну шину и мост - 254 устройства к вашим услугам.
Проблем с обменом - никаких. Арбитраж выполняется аппаратно.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 20 2007, 16:14
Сообщение #53


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(defunct @ Jul 20 2007, 10:54) *
Давайте не будем урезать функциональность, ок? Вы ж решили оспорить простоту масштабирования I2C, а значит ваше решение должно быть не хуже по функциональности.

Не то, чтобы очень хотел, просто надо по справедливости. Если вы говорите, что дополнительное I2C-устройство легко подключить к двум проводам, то я говорю, что в этом смысле так же легко подключить дополнительное SPI устройство к 3 проводам. Нету разницы большой в подключении двух проводов или трёх, надеюсь вы с этим согласитесь?

В вашем посте мысль о гибкости масштабирования системы, т.е. то, что можно получить с помощью I2C, вы возвели в ранг чего-то недосягаемого для SPI
Цитата(defunct @ Jul 20 2007, 10:54) *
1) Гибкость масштабирования системы (легко можно добавить новый модуль(и)).

А это, по большому счёту, не так.

Если уж говорить о гибкости, из SPI модуля МК можно легко соорудить I2C-протокол, а вот наоборот - вряд ли получится! И это будет настоящая гибкость, а не высосанная из пальца. Я уж не говорю про скорость обмена, которая будет в ДЕСЯТЬ раз выше!
Цитата(defunct @ Jul 20 2007, 10:54) *
Для полноценного обмена вашим методом надо построить кольцо. 1->2->3->4 ..... ->N -> 1
Это накладно как с т.з. железа так и т.з. протокола.

Да ну ладно вам. SPI спокойно можно включать звездой, никаких проблем! Снимите наконец розовые очки: SPI - это вещь! Правда, для многих это вещь в себе(:-).

Цитата(defunct @ Jul 20 2007, 10:54) *
К I2C 150-нет, а 128 запросто, она для этого и создана. Если добавить еще одну шину и мост - 254 устройства к вашим услугам. Проблем с обменом - никаких. Арбитраж выполняется аппаратно.

Положим, это уже не так просто осуществить, поскольку нужны дополнительные чипы, и вся гибкость исчезнет. Хотя, справедливости ради, на 100 бодах вполне можно будет обмениваться.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 20 2007, 17:40
Сообщение #54


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(=GM= @ Jul 20 2007, 19:14) *
Да ну ладно вам. SPI спокойно можно включать звездой, никаких проблем!
Можно подробнее - как при включении "звездой" без CS раздать нескольким (пусь будет двум для простоты) SPI-слейвам разную информацию. И главное, как при подключении звездой без CS или при соединении их последовательно (ваше первое предложение) получить ответ от всех устройств?
Цитата(=GM= @ Jul 20 2007, 19:14) *
Снимите наконец розовые очки: SPI - это вещь!
С этим никто не спорит, только эта вещь для несколько, гм, другого.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 20 2007, 18:50
Сообщение #55


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(=GM= @ Jul 20 2007, 19:14) *
Не то, чтобы очень хотел, просто надо по справедливости.

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

Цитата
Если вы говорите, что дополнительное I2C-устройство легко подключить к двум проводам, то я говорю, что в этом смысле так же легко подключить дополнительное SPI устройство к 3 проводам.

Есть разница. Вы не можете просто так взять и подключить новое устройство к трем проводам без модификации либо схемы либо программы. А в случае с I2C - можете.

Цитата
Нету разницы большой в подключении двух проводов или трёх, надеюсь вы с этим согласитесь?
Абсолютно. Лишь бы эти провода не пришлось разъединять и добавлять новые. Как пример шины PCI/ISA - проводов больше чем у SPI, но тем не менее гибкость масштабирования систем на их основе - выше.

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

Да все верно. Вы правильно поняли мою мысль. Для SPI - гибкость подключения устройств на столько же недосягаяема в сравнении с I2C, на сколько для I2C недосягаема возможность получения 8Mbit/s в подключении точка-точка.

Цитата
А это, по большому счёту, не так.

Это ваше мнение. Несомневаюсь, что когда вам понадобится соединить около 100 MK между собой в одну систему - вы выберете SPI.

Цитата
Если уж говорить о гибкости, из SPI модуля МК можно легко соорудить I2C-протокол, а вот наоборот - вряд ли получится!

Я говорил не об I2C модуле и не о SPI модуле, а об абстрактном модуле который выполняет определенную целевую функцию в системе - будь то датчик, клавиатура или LCD экран.

Цитата
И это будет настоящая гибкость, а не высосанная из пальца. Я уж не говорю про скорость обмена, которая будет в ДЕСЯТЬ раз выше!

Особенно в кольце из 150 устройств.. Вы представляете сколько ресурсов уйдет на ретрансляцию сообщений?

Цитата
SPI - это вещь!
Не спорю. Конечно вещь, для соединений "точка-точка".
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 20 2007, 21:53
Сообщение #56


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Сергей Борщ @ Jul 20 2007, 17:40) *
Можно подробнее - как при включении "звездой" без CS раздать нескольким (пусь будет двум для простоты) SPI-слейвам разную информацию. И главное, как при подключении звездой без CS или при соединении их последовательно (ваше первое предложение) получить ответ от всех устройств?

1) Последовательное соединение мастера и двух слейвов. Посылаете два байта, возникают два прерывания в обоих слейвах. Первое игнорируется, по второму забирается информация обоими слейвами и заносится два ответа. Далее варианты такие, либо мастер получает ответ при следующем цикле обмена, либо посылает два пустых байта и забирает ответ.

2) Параллельное соединение мастера и двух слейвов. Посылаете два байта, первый - адрес, второй - данные. Слейв с соответствующим адресом отвечает, другой слейв молчит.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 21 2007, 00:09
Сообщение #57


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(=GM= @ Jul 21 2007, 00:53) *
1) Последовательное соединение мастера и двух слейвов. Посылаете два байта, возникают два прерывания в обоих слейвах. Первое игнорируется, по второму забирается информация обоими слейвами и заносится два ответа. Далее варианты такие, либо мастер получает ответ при следующем цикле обмена, либо посылает два пустых байта и забирает ответ.

И где тут масштабируемость?!
Придется править код Master'a (и код каждого! слейва) при изменении количества слейвов в системе.


Цитата
2) Параллельное соединение мастера и двух слейвов. Посылаете два байта, первый - адрес, второй - данные. Слейв с соответствующим адресом отвечает, другой слейв молчит.
Схематически сомнительное решение опять-же. Без буферных элементов объединять два MISO с придавленным CS похорошему счету нельзя.. Итого каждый новый слейв - дополнительный буферный элемент. Масштабируемость просто "рулит".
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jul 21 2007, 00:38
Сообщение #58


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



В Вашем споре поддержу GM. Причины просты. Если разобраться, то путаются разные уровни протоколов. I2C более полный протокол. В нём мало мальски вводится понятие адресации устройств. Хотя, если разобраться по существу по I2C можно теоретически подключить тысячи устройств или наоборот никак не получится подключить 128.
Объяснюсь.
1) Почему не получится подключить 128. Адресное пространство побито м/у специальными устр-вами. Для примера для памяти как известно 0xa0. Но на самом деле не 0xa0, a 0xa0-0xfe. Таким образом если Вы применяете I2C память, то уже теряете 8 вместо одного устройства. Ну и т.д.
2) Почему у меня получится подключить 256 устройств. Да просто. Я под все устр-ва отведу один адрес. Например 0x20. А адресацию буду осуществлять двумя или тремя байтами субадреса. Что мне помешает?

С SPI разница конечно есть в связи с тем что ответ идёт. Но теоретически GM прав. Действительно софтово можно описать таким образом чтобы SLAVE устр-ва отвечали только после какой-нибудь процедуры. CS и SCK подавать паралельно. При добавлении нового устр-ва не требуется переписывать мастеру ничего. Конечно если все устр-ва будут иметь общий совтовый протокол. Если же подключаем устр-во которое не имеет такого протокола, то заводим на него отдельный CS.

Возможно и прямо подключать, правда для этого придётся применить какие-нибудь аппаратные средства.

Я не говорю, что SPI для этого предназначен, но серьёзных практических проблем не вижу.

К слову RS232 тоже бы не предназначен. Поставили драйвера и ПРИМЕНИЛИ ОПРЕДЕЛЁННЫЙ СОФТ и вот вам rs485 и другие возможности.
Go to the top of the page
 
+Quote Post
AndreyKeil
сообщение Jul 22 2007, 21:38
Сообщение #59


Частый гость
**

Группа: Свой
Сообщений: 96
Регистрация: 16-11-05
Из: г.Екатеринбург
Пользователь №: 10 930



[quote name='namelos' date='Jul 6 2007, 18:27' post='269612']
И еще небольшой вопрос.A какaя связь между контроллерами является наиболее надежной и стабильной? RS232, I2C, SPI?

Я бы вам порекомендовал выбрать I2C. Тут уже говорили достоинства I2C - простота реализации (потребует только резисторы подтяжки),128 устройств на шине, скорость обмена 400кГц б/с. Скорость можно и повысить, если делать межпроцессорный обмен, до 1Мбит/с. Там в настройках AVR-ки, кажется, есть возможность.

RS-232 с применением микросхем RS-485 применяют, когда линии связи имеют длинну от десятков сантиметров до нескольких десятков метров. Скорости (реальные) могут доходить до 57600 бит/с.

А вот с SPI я бы вам вообще не рекомендовал связываться. Кроме описанных в этом посте недостатков, SPI имеет одно нехорошее (на мой взгляд) свойство - он не различает между собой байты в посылке. Из-за этого является довольно глючным интерфейсом, на линии часто возникают ошибки. У I2C гораздо лучше. Там есть четкое понятие начала обмена, окончание обмена, и самое главное, есть понятие байта внутри посылки.

Для вашего устройства с 40 датчиками DS1820, я думаю, подойдет и 100КГц на I2C. Датчики DS1820 довольно медленные устройства и опросить одно устройство чаще чем раз в 1сек у вас не получится.

Применять много устройств(микроконтроллеров) из-за 40 датчиков я бы вам тоже не советовал. Это будет дороже, чем 1 процессор, да и программа будет сложнее. Все можно сделать на 1 процессоре, датчики все(DS1820) посадть на одну линию и вперед!
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 22 2007, 21:41
Сообщение #60


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(defunct @ Jul 20 2007, 11:54) *
Для полноценного обмена вашим методом надо построить кольцо. 1->2->3->4 ..... ->N -> 1 Это накладно как с т.з. железа так и т.з. протокола

Не смешите меня, лишний провод это накладно? Не хотите кольцо, сделайте параллельное подсоединение или смешанное.

Цитата(defunct @ Jul 20 2007, 11:54) *
К I2C 150-нет, а 128 запросто, она для этого и создана.

Если точнее, то для 127, т.к. 0 адрес предназначен для широковещания.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post

6 страниц V  « < 2 3 4 5 6 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th June 2025 - 09:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01437 секунд с 7
ELECTRONIX ©2004-2016