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

 
 
> Первые шаги с AVR, Есть идея и желание, но нет опыта
namelos
сообщение Jul 3 2007, 12:55
Сообщение #1


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

Группа: Свой
Сообщений: 77
Регистрация: 4-08-06
Пользователь №: 19 324



Всем доброе время суток. Есть идея разработать девайс на базе контроллера AVR, который снимает данные 8 (и более) температурных датчиков. Программировать умею, но с контроллерами еще дело не имел. С чего начать? Стоит ли покупать Starter-Kit AVR STK 500 для лучшего понятия? Что надо покупать для начала?
С выбором контроллера еще не опредилился. Может что подскажете. 3aранее спасибо.
Go to the top of the page
 
+Quote Post
6 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 80)
Tcom
сообщение Jul 3 2007, 13:07
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 360
Регистрация: 3-01-06
Из: Украина Запорожская обл.
Пользователь №: 12 792



Всё зависит от того, насколько интенсивно хочешь заниматься этим ремеслом. Если раз что-то сделать, ((( , достаточно LPT программатора.
Если серьёзно то можно AVRISP, JTAGICE или подобное обязательно (экономит уйму времени), а так макет на макете схема собранная и вперёд на родину..
И среда разработки ПО дл МК какая нить, я бы для новичка посоветовал AVRStudio и ассемблер.
Ассемблер даёт самое приближённое понимание структуры МК AVR.
Go to the top of the page
 
+Quote Post
muravei
сообщение Jul 3 2007, 13:15
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Я бы посоветовал обратиь внимание на h__p://algrom.net/russian.html - тот же ассемблер, но очень приятный, и (имхо) лучший симулятор.
Go to the top of the page
 
+Quote Post
namelos
сообщение Jul 3 2007, 13:37
Сообщение #4


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

Группа: Свой
Сообщений: 77
Регистрация: 4-08-06
Пользователь №: 19 324



Спасибо. Посмотрел AVR ISP. Я в принципе могу и через AVR STK 500 программировать контроллер, или всё-таки AVR ISP еще надо будет? JTAGICE дороговат.

Сообщение отредактировал namelos - Jul 3 2007, 13:47
Go to the top of the page
 
+Quote Post
Tcom
сообщение Jul 3 2007, 13:43
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 360
Регистрация: 3-01-06
Из: Украина Запорожская обл.
Пользователь №: 12 792



Цитата(namelos @ Jul 3 2007, 16:37) *
JTAGICE дороговат.

Согласен, в сети есть много схем анологов этого чюдо-устройсва....
Go to the top of the page
 
+Quote Post
GDI
сообщение Jul 3 2007, 14:51
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Порекомендую в который раз КИТ AVR Butterfly, дешево и сердито, есть бутлоадер, т.е. на первых порах даже программатор не нужен, хотя желателен. Только макетного поля нету там, а если датчики температуры ставить ds18b20, то макетка и не понадобится. АСМ конечно хорошо бы знать, но имхо - это не панацея, лучше Си, а АСМ по ходу...если понадобиться... Для начинающих очень хорош CodeVision AVR, очень хороший там мастер создания проекта, но в дальнейшем лучше перейти на IAR или gcc(winavr), AVR Studio - однозначно must have в любом случае.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 3 2007, 15:38
Сообщение #7


кекс
******

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



Цитата(namelos @ Jul 3 2007, 16:37) *
Я в принципе могу и через AVR STK 500 программировать контроллер, или всё-таки AVR ISP еще надо будет? JTAGICE дороговат.

Берите под акцию AVR-Dragon + STK500 за $50.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Jul 3 2007, 18:36
Сообщение #8


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Посмотрите акцию Atmel на www.efo.ru. Там два варианта за приемлемые деньги.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
ZoonMan
сообщение Jul 4 2007, 10:28
Сообщение #9





Группа: Участник
Сообщений: 10
Регистрация: 17-03-07
Из: Ставрополь
Пользователь №: 26 261



Я бы вам посоветовал Altera Byte Blaster. Это недорого и доступно.
Почитать можно здесь:
http://www.ln.com.ua/~real/avreal/adapters.html
Go to the top of the page
 
+Quote Post
pokos
сообщение Jul 4 2007, 11:01
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 270
Регистрация: 29-06-06
Пользователь №: 18 445



Ну, я начинал с "пяти проводочков" и avrasm. Потом CodeVision - очень начинающему жизнь упрощает.
Теперь мне хватает AVRISP, IAR, ну, и конечно, AVR Studio, куда ж без неё.
А можно и Proteus, правда, я не пользовал.
Go to the top of the page
 
+Quote Post
day177
сообщение Jul 4 2007, 12:45
Сообщение #11


Участник
*

Группа: Новичок
Сообщений: 34
Регистрация: 25-01-07
Пользователь №: 24 755



согласен с pokos - CodeVision сильно жизнь облегчает smile.gif

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

А вот по девайсу - снимать температуру, а выводить результат куда?
Go to the top of the page
 
+Quote Post
namelos
сообщение Jul 4 2007, 14:13
Сообщение #12


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

Группа: Свой
Сообщений: 77
Регистрация: 4-08-06
Пользователь №: 19 324



Цитата(day177 @ Jul 4 2007, 16:45) *
А вот по девайсу - снимать температуру, а выводить результат куда?

На дисплей и парочку реле для подлкючения сигнализации. Проблема в том что количество сенсоров будет меняться от 6 до 12. Вот и думаю или мультиплексер использовать, или мк взять что-нибудь вроде ATmega640. Может кто подскажет? Буду оченъ благодарен.

Спасибо всем за советы.
Думаю купить STK500+Dragon за 50$. Или все-таки на STK500+JTAGICE mkII разоритъся?smile.gif Самому паять нет времени.
Go to the top of the page
 
+Quote Post
vesago
сообщение Jul 4 2007, 14:17
Сообщение #13


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



По 1 варе на одном проводе можно посадить сенсоров в количестве отличном от одного.
Go to the top of the page
 
+Quote Post
namelos
сообщение Jul 4 2007, 14:27
Сообщение #14


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

Группа: Свой
Сообщений: 77
Регистрация: 4-08-06
Пользователь №: 19 324



Цитата(vesago @ Jul 4 2007, 18:17) *
По 1 варе на одном проводе можно посадить сенсоров в количестве отличном от одного.

sorry, Что-то я ничего не понял...smile.gif

По учебникам надо бы использовать мулътиплексер, sample-hold и АЦП... В принципе могу взять МК с АЦП.

Сообщение отредактировал namelos - Jul 4 2007, 14:34
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 4 2007, 15:41
Сообщение #15


Гуру
******

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



Цитата(namelos @ Jul 4 2007, 17:27) *
sorry, Что-то я ничего не понял...smile.gif
Ключевое слово DS18B20. Если вас устраивает точность 2 градуса, то получаете термометр в трехногом корпусе с цифровым выходом. Разумное количество таких термометров вешаются параллельно и для их опроса достаточно одного вывода МК. Примеры кода ищите в ветке "Исходники программ и библиотек". Можно еще посмотреть серию TMP от Analog Devices, там интерфейс не 1-wire и (если мне не изменяет память) были экземпляры с лучшей точностью.


--------------------
На любой вопрос даю любой ответ
"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
AndryG
сообщение Jul 4 2007, 16:29
Сообщение #16


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

Группа: Свой
Сообщений: 139
Регистрация: 23-05-05
Из: UA
Пользователь №: 5 317



Ну добавлю и я сюда свои мысли.

Если стоит одна задача - нафиг не нужны STK* и т.д.
Если устройство единичное (или несколько) ... дабы не ломать мозги - берете MEGA8/MEGA16 - для Вашей задачи хватит за глаза ... и индикатор прицепить и кнопки и датчики и к компу RS232 присобачить ... и памяти хватит с головой.
Это железная часть.
Качаем Proteus (на kazus.ru), лечим его, ... для отладки такого устройства его вполне хватит - можно ничего не паявши полностью написать и отладить программку.
На чем писать? На С... оно Вам надо для одного устройства колупать систему коман, архитектуру и т.д.
Компилятор можете взять CVAVR - в нем и библиотеки для Вашего железа есть. (хорош он, правда, только для начала - потом его тупость начинает заедать)

Усё "ИМХО" ... посему не стоит заводить длинные беседы о правильности выбора :-)
Автору же ветки могу предложить свою помощь (подобное делал недавно) -> стучитесь в приват или мыло.
Go to the top of the page
 
+Quote Post
namelos
сообщение Jul 4 2007, 21:12
Сообщение #17


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

Группа: Свой
Сообщений: 77
Регистрация: 4-08-06
Пользователь №: 19 324



Сергей Борщ , спасибо за подробное разъяснение. Девайс должен обрабатывать температуру от датчиков, которые будут находится на расстоянии 50м, да и точность измерений хотелось бы повыше, чем предлагают "TMP-analog devices" и "Maxim". Датчики я подобрал Pt100(как более точные в диапазоне до 120С) с аналоговым линиаризированным выходом 4/20мА(убрать влияние эл.маг.полей).

AndryG, спасибо за ваши советы и за предложение о помощи, непременно воспользуюсь. А по поводу STK*, признаюсь честно, решил получше разобраться с МК. А вообсче у меня есть идея подсоединить потом USB-контроллер и на PC..smile.gif

Что касается софта, остановился пока на WinAVR и AVRStudio...все/таки open source..smile.gif

А по поводу измерения температуры, может у кого/нибудь будут другие варианты? А то что/то мой вариант у меня вызывает "смутные сомнения". T.e. на каждый сенсор надо будет вешать сопротивление, а с него в свою очередь снимать напряжение. Вот и думаю или через Mux/Sample-hold/АЦП или сразу на АЦП/входы МК (а это МК с 12 АЦП)...

Сообщение отредактировал namelos - Jul 4 2007, 21:15
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 5 2007, 00:16
Сообщение #18


Гуру
******

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



Цитата(namelos @ Jul 5 2007, 00:12) *
Девайс должен обрабатывать температуру от датчиков, которые будут находится на расстоянии 50м, да и точность измерений хотелось бы повыше, чем предлагают "TMP-analog devices" и "Maxim".
Если вы будете на 50м тащить провода от Pt100, то вы (в очень высокой долей вероятности) не получите даже такой точности, какую дают Максимы с Аналоговыми Девицами. Так что быстрее думайте о замене "одного пирога с 8 свечками" на "8 пирогов с одной свечкой", т.е. об отдельном контроллере у каждого датчика. При стоимости контроллера меньше доллара вы больше сэкономите на проводах. Примеры подключения датчика можно посмотреть тут.
Насчет "аналогового линеаризованного выхода" не понял - Pt100 это ведь обычный платиновый терморезистор.


--------------------
На любой вопрос даю любой ответ
"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
Igor26
сообщение Jul 5 2007, 05:13
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Цитата
об отдельном контроллере у каждого датчика

...и объединить их между собой или с центральным контроллером по RS-485 интерфейсу. Расстояние до 1200 метров.
Go to the top of the page
 
+Quote Post
VAHOO
сообщение Jul 5 2007, 05:40
Сообщение #20


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

Группа: Участник
Сообщений: 163
Регистрация: 22-09-05
Пользователь №: 8 834



Цитата(mdmitry @ Jul 3 2007, 21:36) *
Посмотрите акцию Atmel на www.efo.ru. Там два варианта за приемлемые деньги.



откудо купить AVR DRAGON+STK500?
за 50$.

Пожалуйста дайте линк.


--------------------
Прошивка это душа микроконтроллера!
Go to the top of the page
 
+Quote Post
Igor26
сообщение Jul 5 2007, 05:51
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



http://www.efo.ru/doc/Atmel/Atmel.pl?212
Объявление от 04.05.2007
Go to the top of the page
 
+Quote Post
GDI
сообщение Jul 5 2007, 07:42
Сообщение #22


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



DS18B20 дает точность 0,5 градуса безо всякой калибровки, в свое время мы даже получали сертификат на систему с этими датчиками - все датчики уложились в заявленный производителем диапазон, а если откалибровать его, то можно получить и более высокую точность, у него шаг измерения составляет 0,0625 градуса. В условиях бытовых помех он может работать на удалении до 200метров, один знакомый делал, пришлось ему при этом растянуть тайм слоты, хотя я бы еще и подтяжку уменьшил до 1-0,5 кОм, при этом точность не уменьшается, т.к. передача идет в цифровом виде, диапазон измерений до 125 градусов, кратковременно выдерживает и большие температуры.

Упомянутый мной ранее КИТ AVR Butterfly имеет на своем борту ЖКИ индикатор, мега169, джойстик, пищалку, батарейку, датафлешь на 4мбит и т.д., стоит 600р в ЭФО. Для установки реле конечно потребуется дополнительная плата.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
namelos
сообщение Jul 5 2007, 08:53
Сообщение #23


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

Группа: Свой
Сообщений: 77
Регистрация: 4-08-06
Пользователь №: 19 324



Цитата(Сергей Борщ @ Jul 5 2007, 04:16) *
Насчет "аналогового линеаризованного выхода" не понял - Pt100 это ведь обычный платиновый терморезистор.

Pt100(RTD) специального исполненеия вместе с преобразователем, но дороговат, однако. Вот и ищу приемлимое решение.

GDI ,спасибо за информацию. Неплохое предложение. Интересно, а поставляются такие датчики в защитных корпусах для измерения темпеартуры жидкости.

Датчики собираюсь устанавливать на двигателе, поэтому хотелось бы там разместить только сами датчики без блока обработки для быстрой замены в случае поломки. Сам девайс будет размещен в 50м-70м и кабель должен будет проходить по цеху рядом с кабелями и ел.моторами, в этом как раз и проблема, как доставить сигнал без потерь. И еще, хотелось бы увеличить скорость обработки температуры, DS18B20-сенсор обрабатывает температуру 0.7с, при 12 сенсорах это почти 8 секунд.sad.gif

Сообщение отредактировал namelos - Jul 5 2007, 08:58
Go to the top of the page
 
+Quote Post
AndryG
сообщение Jul 5 2007, 10:10
Сообщение #24


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

Группа: Свой
Сообщений: 139
Регистрация: 23-05-05
Из: UA
Пользователь №: 5 317



Цитата
0.7с, при 12 сенсорах это почти 8 секунд

Если не использовать паразитное питание, а Вы его использовать и не будете, то можно всем датчикам послать запрос на преобразование - подождать "время преобразования" (от начала рассылки) - и прочитать температуру ... и никаких 8 секунд.
Go to the top of the page
 
+Quote Post
GDI
сообщение Jul 5 2007, 10:38
Сообщение #25


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Время преобразования зависит от разрядности преобразования на которое настроен датчик:
750мс при 12бит, шаг 0,0625 градусов
~150мс(точно не помню) при 9 бит, шаг 0,5град.
Это настраивается записью режима работы в датчик, с завода он поставляется в режиме работы - 12бит

Не обязательно ждать когда датчик завершит преобразование, я делал так: Чтение результата -> команда на преобразование, пока датчик считает температуру, можно опрашивать остальные. При опросе можно не читать весь СкратчПад, а принять только первые 2 байта, в которых содержится собственно измеренная температура, затем подать ресет на линию, чтоб прервать передачу от датчика.

Мы для датчиков изготавливали металлические корпуса.

Для обеспечения замены датчиков, каждый датчик подключался на независимую линию 1-wire, т.е. со стороны контроллера было выделено несколько шин 1-ware на каждой из которых висел один датчик, что позволяло не использовать команды работы с серийными номерами датчиков, как это требуется при подключении нескольких датчиков на одну шину. В качестве бонуса появляется возможность параллельного опроса датчиков.

P.S. Кстати, это был мой первый проект сделанный на АВР(до этого разработками не занимался) и сделан он был в CV smile.gif


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
namelos
сообщение Jul 5 2007, 15:15
Сообщение #26


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

Группа: Свой
Сообщений: 77
Регистрация: 4-08-06
Пользователь №: 19 324



GDI , еще спасибо за информацию. Если не секрет, на каком МК вы реализовали опрос сенсоров. Полазил по интернету информации по датчикам много.

Хотелось бы теперь опрашивать с помощью одного контроллера до 40 датчиков DS18B20 с подсоединением каждого на отдельный вход. Какой МК порекомендуете?

Интересно, а как они ведут себя датчики DS18B20 в промышленном применении? Есть у кого-нибудь данные? Надолго ли его хватит?
Go to the top of the page
 
+Quote Post
GDI
сообщение Jul 5 2007, 15:33
Сообщение #27


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Я делал на мега16, 8 каналов. Ну а контроллер для 40 каналов... трудно сказать, на первый взгляд приходит на ум мега64 или мега128, у них 53 линии входа/выхода, хватит ли оставшихся 13 ножек для других задач? Может стоит рассмотреть много процессорную систему? несколько мега48 и связь по SPI на какой то центральный контроллер, можно даже ту же мега48 если хватит ресурсов. По цене это может оказаться дешевле чем одна мега128.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Igor26
сообщение Jul 5 2007, 17:19
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Цитата(GDI @ Jul 5 2007, 19:33) *
Я делал на мега16, 8 каналов. Ну а контроллер для 40 каналов... трудно сказать, на первый взгляд приходит на ум мега64 или мега128, у них 53 линии входа/выхода, хватит ли оставшихся 13 ножек для других задач? Может стоит рассмотреть много процессорную систему? несколько мега48 и связь по SPI на какой то центральный контроллер, можно даже ту же мега48 если хватит ресурсов. По цене это может оказаться дешевле чем одна мега128.

Вы делали Ваш проект на каком датчике?
Если DSx20, то почему получилось столько портов I/O?
Go to the top of the page
 
+Quote Post
GDI
сообщение Jul 6 2007, 07:18
Сообщение #29


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Igor26 вы про что?
про мега16 и 8 каналов? Вот моя цитата, почему так.
Цитата
каждый датчик подключался на независимую линию 1-wire, т.е. со стороны контроллера было выделено несколько шин 1-ware на каждой из которых висел один датчик, что позволяло не использовать команды работы с серийными номерами датчиков, как это требуется при подключении нескольких датчиков на одну шину. В качестве бонуса появляется возможность параллельного опроса датчиков.

Или про 53 линии i/o у мега 64/128? Так это мои рассуждения на вопрос namelos-а
Цитата
Хотелось бы теперь опрашивать с помощью одного контроллера до 40 датчиков DS18B20 с подсоединением каждого на отдельный вход. Какой МК порекомендуете?


Везде имеются ввиду датчики DS18B20


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Igor26
сообщение Jul 6 2007, 09:26
Сообщение #30


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Извиняюсь. Наверное пропустил выделенные цитаты.

Ну а почему Вас пугает работа с датчиками по их "серийникам"? Там же всё просто и прозрачно. Занята одна линия порта и на ней висит масса датчиков и/или иных устройств с 1-Wire интерфейсом. Если задача не сложная, то может хватить какой-нибудь восьминогой Тиньки. Я уж не помню почему, но что-то у меня не заладилось с "далласами", которые висели на нескольких портах.
Go to the top of the page
 
+Quote Post
GDI
сообщение Jul 6 2007, 10:32
Сообщение #31


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Меня то не пугает, просто хотелось оградить заказчиков от заморочек с серийниками в случае замены вышедшего из строя датчика, да и себя от мороки это реализовывать, т.к. в той системе блок сбора был без каких либо органов управления, и к нему по rs485 цеплялись блоки индикации с 7-сегментными светодиодными индикаторами, в общем лишнюю нагрузку не особо квалифицированным пользователям я решил не создавать. smile.gif
Проблем с параллельной работой датчиков у меня не было, а опрос там именно параллельный, одновременный. Все датчики висели на одном 8-ми разрядном порте.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Igor26
сообщение Jul 6 2007, 12:16
Сообщение #32


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Теперь ясно.
Go to the top of the page
 
+Quote Post
namelos
сообщение Jul 6 2007, 12:27
Сообщение #33


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

Группа: Свой
Сообщений: 77
Регистрация: 4-08-06
Пользователь №: 19 324



Цитата
GDI...и связь по SPI на какой то центральный контроллер...

И еще небольшой вопрос.A какaя связь между контроллерами является наиболее надежной и стабильной? RS232, I2C, SPI?


Начинаю закупку компонентов. О результатах сборки девайса сообщу.smile.gif
Спасибо всем.

Сообщение отредактировал namelos - Jul 6 2007, 12:28
Go to the top of the page
 
+Quote Post
GDI
сообщение Jul 6 2007, 13:57
Сообщение #34


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Цитата
RS232, I2C, SPI

Вот по скорости они так и располагаются, а по надежности, имхо зависит от условий, помех, разводки, мне кажется что тут они примерно равны, только не RS232, а UART с уровнями сигналов 5в.
UART в принципе не рассчитан на много точечное соединение
I2C - топология типа шина, с передачей адреса устройства
SPI - все включаются параллельно на шину, но выбор устройства производится сигналом CS и потом обмен идет как будто никого больше на шине нет.
Последний мне кажется наиболее прост в реализации, особенно с использованием аппаратных SPI.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
namelos
сообщение Jul 6 2007, 14:45
Сообщение #35


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

Группа: Свой
Сообщений: 77
Регистрация: 4-08-06
Пользователь №: 19 324



GDI, спасибо и хороших выходных.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 8 2007, 21:12
Сообщение #36


Шаман
******

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



Цитата(GDI @ Jul 6 2007, 16:57) *
UART в принципе не рассчитан на много точечное соединение

RS485 базированный на UART и снабжённый соответствующим протоколом - приятное исключение из Вашего категоричного заявления.
А UART в чистом виде (5 вольтовый) практически не применяется.
Go to the top of the page
 
+Quote Post
gm1957
сообщение Jul 10 2007, 03:47
Сообщение #37


Участник
*

Группа: Новичок
Сообщений: 18
Регистрация: 2-06-05
Пользователь №: 5 653



Цитата(Сергей Борщ @ Jul 5 2007, 00:41) *
Ключевое слово DS18B20. Если вас устраивает точность 2 градуса, то получаете термометр в трехногом корпусе с цифровым выходом. Разумное количество таких термометров вешаются параллельно и для их опроса достаточно одного вывода МК. Примеры кода ищите в ветке "Исходники программ и библиотек". Можно еще посмотреть серию TMP от Analog Devices, там интерфейс не 1-wire и (если мне не изменяет память) были экземпляры с лучшей точностью.

точность DS18B20 0.5 градуса по описанию,
для 8 датчиков с минимальной программой TINY2313 хватит "за глаза", ещё и на реле ноги останутся
именно такой контроллер проверен временем, только надо учитывать отличия DS18B20 от DS1820


--------------------
Miha
Go to the top of the page
 
+Quote Post
alexander tom
сообщение Jul 17 2007, 13:25
Сообщение #38





Группа: Новичок
Сообщений: 3
Регистрация: 15-02-07
Пользователь №: 25 395



Привет!

А возможно ли склонировать чип mega16 целиком с прошивкой? И кто бы мог бы это сделать за уе если это реально?

Спасибо
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 18 2007, 11:44
Сообщение #39


кекс
******

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



Цитата(GDI @ Jul 6 2007, 16:57) *
RS232, I2C, SPI
Вот по скорости они так и располагаются,


В контексте AVR насчет "по скорости они так и располагаются" требует поправки:

SPI в силу своей простоты и синхронности - самый скоростной (до 8Mbod/s на 16Mhz)
UART - ограничен цифрой 16, в скоростном режиме цифрой 8. (тобиш максимум можно выжать 2Mbod/s)
I2C - не более 400Kbod/s.

Но в силу того, что I2C аппаратно поддерживает адресацию устройств, и использует шину всего из 2-х проводков, эффективность системы построенная на этом интерфейсе будет наиболее высокая, по следующим критериям:
1. Гибкость масштабирования системы (легко можно добавить новый модуль(и)).
2. Простота разводки интерфейса на плате (всего два провода)
3. Минимальные затраты процессорного времени на обслуживание протокола связи.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 18 2007, 15:56
Сообщение #40


Ambidexter
*****

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



Цитата(defunct @ Jul 18 2007, 10:44) *
1. Гибкость масштабирования системы (легко можно добавить новый модуль(и)).
2. Простота разводки интерфейса на плате (всего два провода)

Насчёт гибкости. И к SPI точно также можно подключить хоть 150 устройств. Да и 3 провода вместо двух не столь принципиально.


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


кекс
******

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



Цитата(=GM= @ Jul 18 2007, 18:56) *
Насчёт гибкости. И к SPI точно также можно подключить хоть 150 устройств.

Да? И можно полюбопытствовать как?
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 18 2007, 17:43
Сообщение #42


Шаман
******

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



Цитата(defunct @ Jul 18 2007, 19:03) *
Да? И можно полюбопытствовать как?

Применив 150 линий chip select. cool.gif
Go to the top of the page
 
+Quote Post
SpyBot
сообщение Jul 18 2007, 17:57
Сообщение #43


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 5-11-05
Пользователь №: 10 491



А если сначало передавать адрес нужного устройства? 1111493779.gif
Go to the top of the page
 
+Quote Post
oles_k76
сообщение Jul 18 2007, 18:23
Сообщение #44


RF
***

Группа: Свой
Сообщений: 321
Регистрация: 12-04-06
Из: Berlin
Пользователь №: 16 046



Цитата(pokos @ Jul 4 2007, 14:01) *
Ну, я начинал с "пяти проводочков" и avrasm. Потом CodeVision - очень начинающему жизнь упрощает.
Теперь мне хватает AVRISP, IAR, ну, и конечно, AVR Studio, куда ж без неё.
А можно и Proteus, правда, я не пользовал.

Вот человек отразил то что у меня сейчас...
со временем перейду на ИАР.
Единствееное что сдерживает -это отсутствие библиотеки LCD дисплея.. но я стараюсь подпрограммы
под какой либо интерфейс писать сам TWI,SPI... ,тем более есть примеры в даташите


--------------------
теперь питание компьютера можно отключить
Go to the top of the page
 
+Quote Post
muravei
сообщение Jul 18 2007, 18:34
Сообщение #45


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



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

Если постараться , может хватить 8.
Go to the top of the page
 
+Quote Post
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
defunct
сообщение Jul 22 2007, 21:58
Сообщение #61


кекс
******

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



Цитата(=GM= @ Jul 23 2007, 00:41) *
Не смешите меня, лишний провод это накладно? Не хотите кольцо, сделайте параллельное подсоединение или смешанное

Вы что не понимаете, SPI слейв генерит ответ всегда если нет CS. Какое параллельно?
Для случая кольца там не один лишний провод, а 150.

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

А вот вы, сами можете делать то, что предлагаете - по SPI.
Цитата
Если точнее, то для 127, т.к. 0 адрес предназначен для широковещания.

Ок 127.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 22 2007, 22:24
Сообщение #62


Ambidexter
*****

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



Цитата(defunct @ Jul 22 2007, 21:58) *
Вы что не понимаете, SPI слейв генерит ответ всегда если нет CS.

Во-первых, там аббревиатура SS (slave select), а не CS. Во-вторых, если SS=1, то слейв отключен от шины.

И главное, когда SS=0 (подключен к земле), то выход слейва определяется программистом (см. таблицу 69 на стр.165 документа DOC2464O), поэтому, естественно, если все выходы слейвов объединены, то их надо установить как инпут, чтобы не мешали друг другу. Учите матчасть.
Цитата(defunct @ Jul 22 2007, 21:58) *
Какое параллельно? Для случая кольца там не один лишний провод, а 150

Ну-ну, дерзайте.


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


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



2 defunct
А я вот, как раз бы поспорил с вот этим утверждением:
Цитата(defunct @ Jul 18 2007, 15:44) *
3. Минимальные затраты процессорного времени на обслуживание протокола связи.
Но с другой, так сказать, стороны...
Допустим нам нужно обеспечить межпроцессорное взаимодействие между
AVR и каким-нить ARM. Как известно, накладные расходы на прерывания у ARM не очень
хороши, а в силу того что i2c интерфейс является "адресным", большинство производителей
не прикручивают к нему DMA sad.gif (поправьте меня если я не прав)
И соответственно, при использовании i2c на больших скоростях и при большой загрузке, мы
рискуем сильно загрузить нашего "старшего" брата sad.gif
Если же использовать для связи со старшими товарисчами интерфейсы которые там
поддержаны DMA(например 485), то это сильно упростит им жисть...


P.S. Ну, это типа мысли на тему "Первые шаги" laughing.gif
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 23 2007, 07:29
Сообщение #64


кекс
******

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



Цитата(=GM= @ Jul 23 2007, 01:24) *
Во-первых, там аббревиатура SS (slave select), а не CS. Во-вторых, если SS=1, то слейв отключен от шины.

SS/CS сути не меняет. Я так и сказал - если не CS. что значит CS=0.
В параллельном включении вы предлагаете использовать общий CS.

Цитата
главное, когда SS=0 (подключен к земле), то выход слейва определяется программистом (см. таблицу 69 на стр.165 документа DOC2464O), поэтому, естественно, если все выходы слейвов объединены

ну-ну. особенно если слейв это какой-нибудь штатный eeprom, скажем AT25. Или MCU с неконтроллируемым SO выходом.

Цитата
Цитата
Для случая кольца там не один лишний провод, а 150

Ну-ну, дерзайте.

Тормозите что ли? Ну нельзя в разрыв
-> miso[chip0]mosi -> miso [chip1] mosi -> miso [chip2] mosi -> .... -> miso[chip150] ->mosi ->
включить тремя проводами, как не крути.
Зы, а ведь и включить то так нельзя lol.gif
На сигналы посмотрите smile.gif
Ну да ладно.

Я еще раз повторюсь - я бы не стал выбирать SPI для 150 устройств, я бы выбрал шину.
Так что "дерзать" придется вам.


Цитата
Допустим нам нужно обеспечить межпроцессорное взаимодействие между
AVR и каким-нить ARM. Как известно, накладные расходы на прерывания у ARM не очень
хороши

Сравните количество прерываний в случае с I2C и в случае с SPI для системы допустим из 20 устройств, взаимодействующих между собой (мульти-мастер режим).
- I2C будет отсеивать все лишние обращения автоматически, и будет разрешать конфликты шины (когда 2 мастера одновременно что-то захотят передать.
- SPI же будет генерить прерывания на "любой байт" предназначенный этому устройству или не предназначенный, плюс придется еще вручную обслуживать коллизии на линии и организовывать переповторы. Допустим имеем кольцевое включение о котором тут заикнулся GM. Тогда чтобы передать сообщение от 1-го процессора 10-му, это сообщение должно быть принято и ретранслированной процессорами 2, 3, ... 9, которые находятся между 1-м и 10-м.

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

А для соединения точка-точка и систем с фиксированным небольшим числом элементов (немастабируемых систем) выгоднее применять SPI.

485 это конечно гут - та же шина, но со своими плюcами/минусами:
гибко +
дорого -
Очень сомневаюсь, что в рамках одного кропуса для межпроцессорного обмена кто-то пользует 485.
Go to the top of the page
 
+Quote Post
SpyBot
сообщение Jul 23 2007, 09:13
Сообщение #65


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 5-11-05
Пользователь №: 10 491



А если использовать мультиплексоры/демультиплексоры для связи с устройствами и регистры с последовательной загрузкой для управления ими и CS-ами? Тогда, получается, избегаем проблем со 150-ю устройствами на одной шине, и у МК и устройств используется стандартный SPI.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 23 2007, 09:21
Сообщение #66


Ambidexter
*****

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



Цитата(defunct @ Jul 23 2007, 06:29) *
Тормозите что ли? Ну нельзя в разрыв -> miso[chip0]mosi -> miso [chip1] mosi -> miso [chip2] mosi -> .... -> miso[chip150] ->mosi -> включить тремя проводами, как не крути. Зы, а ведь и включить то так нельзя lol.gif На сигналы посмотрите smile.gif

Ну, defunct, вы меня озадачили. По-моему, у вас каша в голове(:-)

Объясните ВНЯТНО, ЧТО нельзя включить тремя проводами и ПОЧЕМУ? На КАКИЕ сигналы надо посмотреть? Что вы в них углядели такого особенного, недоступного простым смертным?


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


Гуру
******

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



Цитата(=GM= @ Jul 21 2007, 00:53) *
1) Последовательное соединение мастера и двух слейвов. Посылаете два байта, возникают два прерывания в обоих слейвах. Первое игнорируется, по второму забирается информация обоими слейвами и заносится два ответа. Далее варианты такие, либо мастер получает ответ при следующем цикле обмена, либо посылает два пустых байта и забирает ответ.
Мда... И как они будут разбираться какое прерывание "первое", какое "второе" и главное - когда сдвигаются данные а когда ответы слейвов. Вот уж точно от безысходности такое городить. "Альтернатива - утки!". Уж если соединяем много учтройств, то мое решение было бы таким - если есть устройства которые умеют только I2C и все они находятся в пределах одной платы - I2C, если таких устройств нет или они разнесены - 485.


--------------------
На любой вопрос даю любой ответ
"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 23 2007, 10:13
Сообщение #68


кекс
******

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



Цитата(=GM= @ Jul 23 2007, 12:21) *
Объясните ВНЯТНО, ЧТО нельзя включить тремя проводами и ПОЧЕМУ? На КАКИЕ сигналы надо посмотреть? Что вы в них углядели такого особенного, недоступного простым смертным?


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


Включаем ->???[Проц0]MOSI -> ??? [Проц1] MOSI -> ???[Проц2] MOSI -> .... -> ???[ПроцN] MOSI ->
каждая "->" - это провод. (их количество не считая клока, будет равно количеству процессоров)
каждый "???" - это вопрос, к какому сигналу подключать? объясните плз.
Поидее надо бы к SI, но ведь вот незадачка SI с MO совмещен, а ведь надо как-то со сл. устройством связываться...
Получается идея с последовательным соединением накрылась хоть сколько проводов не бери... Или я что-то не понял?
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 23 2007, 11:56
Сообщение #69


Ambidexter
*****

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



Цитата(defunct @ Jul 23 2007, 09:13) *
Включаем ->???[Проц0]MOSI -> ??? [Проц1] MOSI -> ???[Проц2] MOSI -> .... -> ???[ПроцN] MOSI ->
каждая "->" - это провод. (их количество не считая клока, будет равно количеству процессоров)
каждый "???" - это вопрос, к какому сигналу подключать? Получается идея с последовательным соединением накрылась хоть сколько проводов не бери... Или я что-то не понял?

Не поняли. Не обращайте внимания на название, смотрите на суть процесса. Представьте себе 8-битный сдвиговый регистр, выход этого регистра подключаете к входу второго сдвигового регистра, а его выход в свою очередь - ко входу третьего. Выход третьего подключаете к входу первого, получится кольцо. Клоки подключаете параллельно ко всем трём регистрам. Вот вы получили примитивную модель того, что находится внутри периферии SPI каждого МК. За сим, с богом, вперед!

Цитата(Сергей Борщ @ Jul 23 2007, 08:56) *
Мда... И как они будут разбираться какое прерывание "первое", какое "второе" и главное - когда сдвигаются данные а когда ответы слейвов. Вот уж точно от безысходности такое городить. "Альтернатива - утки!". Уж если соединяем много устройств, то мое решение было бы таким - если есть устройства которые умеют только I2C и все они находятся в пределах одной платы - I2C, если таких устройств нет или они разнесены - 485.

Ну поставьте в прерывании счётчик, когда счётчик=1, принимаете данные, обнуляете счетчик и выставляете ответ, какая тут безысходность? Какие утки:-)?

Не нравится так, дёргайте общей для всех слейвов ногой SS, вот вам и начало "первого" прерывания будет.

Вообще вы меня удивили. Этак можно договориться до того, а как usart понимает, что передаётся 5-й бит, а не 6-й?

Расскажу про пример I2C-подобной реализации, который лежит у меня на столе. Работает на скорости 5 мбод программно, на передачу посылается 37 бит, на приём передается 5 бит, затем принимается 16 бит. За 50 мкс я считаю преобразование Фурье на 1024 точки, в то же время на обмен(!) с устройством трачу 25 мкс. А мог бы гонять данные на скорости 25 мбод по аппаратной SPI с затратами 1 мкс. Сам виноват, не проконтролировал 4 года назад, теперь расхлёбываю.


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


кекс
******

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



Цитата(=GM= @ Jul 23 2007, 14:56) *
Расскажу про пример I2C-подобной реализации, который лежит у меня на столе. Работает на скорости 5 мбод программно, на передачу посылается 37 бит, на приём передается 5 бит, затем принимается 16 бит. За 50 мкс я считаю преобразование Фурье на 1024 точки, в то же время на обмен(!) с устройством трачу 25 мкс.

2 устройства соединено? smile.gif
и причем явно не AVR
Цитата
Не поняли. Не обращайте внимания на название, смотрите на суть процесса. Представьте себе 8-битный сдвиговый регистр, выход этого регистра подключаете к входу второго сдвигового регистра, а его выход в свою очередь - ко входу третьего. Выход третьего подключаете к входу первого, получится кольцо. Клоки подключаете параллельно ко всем трём регистрам. Вот вы получили примитивную модель того, что находится внутри периферии SPI каждого МК.

А теперь понял. Т.е. вместо использования встроенного аппаратного SPI вы предлагаете замутить программный либо внешний на доп. сдвиговых регистрах. И соединить все 150 узлов 150-ю проводами. Тем самым вы планируете получить гибкость масштабирования и простоту реализации lol.gif
Наши пути тут расходятся. Я не считаю ваш способ хоть сколько-нибудь гибким.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jul 23 2007, 12:37
Сообщение #71


Гуру
******

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



Ребята давайте не вводить в заблуждение друг друга. Теоретически я не вижу проблем ни в том ни в другом случае (SPI, I2C). Программные моменты - не в счёт. Это описывается один раз и всё. Если применяются стандартные устр-ва, то тут и вопросов не возникает, потому что протоколы стандартных устройств уже описаны и выше их не прыгнешь. Это не пример. Такой же пример - подключите по I2C стандартно 150 at24c512 или даже 127! Вот и весь разговор. Если говорить о проводах и быстрой коммутации (в кольце), то это тоже не проблема. Таких аппаратных решений за годы набралось - море. Вспомните к примеру корзину электроники 60 и как там были реализованы прерывания. Можно не сходя с места придумать кучу решений.

Но, если честно, то для подключения 150 и выше устройств я бы не стал использовать ни тот ни другой интерфейс. Конечно, смотря какие устройства. RS485 конечно предпочтительней, но и тут не всё гладко. Я вот сейчас планирую одно решение на 150-250 устройств. Так вот я посчитал и rs485 мне тоже не очень подходит. Надо что-то будет думать и создавать иерархию. Иначе по времени не справляюсь.

Так что чистая теория и практика - разные вещи. Как говорится "скажи мне какие устр-ва надо соединять, каков обмен планируется и я скажу какой интерфейс пользовать. Либо вообще разбить на несколько."
Не даром же их создавали. Все нужны. У всех свои плюсы и минусы. Для межпроцессорного обмена более практичен SPI. В текущем проекте я соединил м640 и м48 по I2C. И сэмулировал на ней 24с01. м48 работает на частоте 8мГц и постоянно спит. Так вот мне пришлось снизить частоту шины до 150кГц иначе м48 не успевала обрабатывать TWI в режиме слейва. А когда задумывалось, то планировалось сэкономить ноги, так как I2C шина уже использовалась в м640. Получилось за счёт скорости обращения к другим устройствам I2C. Так что универсальных решений не бывает. Надо смотреть по каждому случаю отдельно.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 23 2007, 12:47
Сообщение #72


Ambidexter
*****

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



Цитата(defunct @ Jul 23 2007, 11:25) *
А теперь понял. Т.е. вместо использования встроенного аппаратного SPI вы предлагаете замутить программный либо внешний на доп. сдвиговых регистрах. И соединить все 150 узлов 150-ю проводами. Тем самым вы планируете получить гибкость масштабирования и простоту реализации lol.gif
Наши пути тут расходятся. Я не считаю ваш способ хоть сколько-нибудь гибким

Ничего вы не поняли (или вы ваньку валяете(:-)?). Пытался вам на пальцах рассказать, что находится внутри модуля спи и как соединить несколько модулей спи, да видимо, вам не надо(:-).


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


кекс
******

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



Цитата
Ребята давайте не вводить в заблуждение друг друга.

А кто кого вводит в заблуждение? Вот лично у вас есть замечания к коменту #39 (с него все началось)?

Цитата
Надо смотреть по каждому случаю отдельно.

согласен.

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

Цитата(=GM= @ Jul 23 2007, 15:47) *
Ничего вы не поняли (или вы ваньку валяете(:-)?). Пытался вам на пальцах рассказать, что находится внутри модуля спи и как соединить несколько модулей спи, да видимо, вам не надо(:-).

Не смешите тапочки. Зачем мне объяснение как устроен SPI? это в любом даташите описано...

Я пока не вижу ни одного более менее работоспособного решения из тех что вы предложили, которое бы могло конкурировать с I2C. sad.gif
(В контесте AVR конечно)
Go to the top of the page
 
+Quote Post
µµC
сообщение Jul 23 2007, 13:19
Сообщение #74


Участник
*

Группа: Новичок
Сообщений: 44
Регистрация: 2-05-06
Пользователь №: 16 710



Цитата(=GM= @ Jul 23 2007, 16:47) *
Ничего вы не поняли (или вы ваньку валяете(:-)?). Пытался вам на пальцах рассказать, что находится внутри модуля спи и как соединить несколько модулей спи, да видимо, вам не надо(:-).


То, что вы предложили (кольцо из многих устройств с SPI интерфейсом) уже не будет SPI. И именно по причине внутреннего устройства SPI (16-и битовый закольцованный регистр поделенный между мастером и слейвом). Расскажите-ка лучше как мастер uC в вашем 1200-и битовом кольце (150 устройств), используя аппаратный SPI, обратится к стандартной SPI флешке стоящей, скажем, 75-ой в этом кольце.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jul 23 2007, 14:18
Сообщение #75


Гуру
******

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



Цитата(µµC @ Jul 23 2007, 16:19) *
То, что вы предложили (кольцо из многих устройств с SPI интерфейсом) уже не будет SPI. И именно по причине внутреннего устройства SPI (16-и битовый закольцованный регистр поделенный между мастером и слейвом). Расскажите-ка лучше как мастер uC в вашем 1200-и битовом кольце (150 устройств), используя аппаратный SPI, обратится к стандартной SPI флешке стоящей, скажем, 75-ой в этом кольце.


Я уже давал аналогичный ответ. Расскажите как вы подключите 5-ую at24c512 к Вашей I2C шине. Речь идёт о подключении нескольких СВОИХ устройств на сколько я понимаю. Насчёт что это не будет SPI это спорно. Например есть 8-ми битный SPI и 16-ти битный. В самом SPI возможно менять фазы, полярность и прочее - и это всё равно SPI.

Никто не спорит. I2C хороший, проверенный временем, простой, очень гибкий, хорошо расширяемый интерфейс. С точки зрения подключения дополнительных устройств, возможно более гибкий. В плане стандарта. Но всётаки нельзя рассматривать оторвано от жизни. О чём мы говорим? Что допустим есть выходной разъём и на него выведена шина и мы ещё точно не знаем что там будет подключено но это "что-то" будет стандартным? Скажем в таком случае с I2C будет проще. Меньше контактов, отсутствие доп. корпусов. Но медленней. Можно запросто сделать также с SPI. Но проводов будет больше, возможно использование внешних элементов, зато будет выше скорость. Как правило, плата и программа изначально спроектирована и будущие возможности должны быть заложены изначально. С этой точки зрения оба протокола равноценны.

То есть я бы ответил так. Возможно всё! А вопрос о ЦЕЛЕСООБРАЗНОСТИ необходимо решать в каждом конкретном случае.

Приведу пример применения 50 микросхем EEPROM скажем. И вот вам очевидный для вас ответ только I2C становится неочевидным. Применение I2C будет аппаратно выглядеть хуже чем применение такого же числа SPI памяти. Кроме того дешифрацию данных устройств можно осуществлять в рамках того же SPI. Таким образом для разъёма достаточно 3 провода SPI + две выборки. Плюс максимум 1 доп. корпус на 8 микрух. Для I2C навеса будет не меньше, а скорость явно меньше.
Go to the top of the page
 
+Quote Post
µµC
сообщение Jul 23 2007, 15:47
Сообщение #76


Участник
*

Группа: Новичок
Сообщений: 44
Регистрация: 2-05-06
Пользователь №: 16 710



Цитата(SasaVitebsk @ Jul 23 2007, 18:18) *
Я уже давал аналогичный ответ. Расскажите как вы подключите 5-ую at24c512 к Вашей I2C шине.


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

Цитата(SasaVitebsk @ Jul 23 2007, 18:18) *
Речь идёт о подключении нескольких СВОИХ устройств на сколько я понимаю.


Дык, если исключительно СВОИ устройства, со строго определенным количеством и порядком в цепи, то такую цепочку можно заставить работать. Душераздирающее, конечно, зрелище: масштабы оверхеда для каждой транзакции при 150 устройствах поистине впечатляют.

Цитата(SasaVitebsk @ Jul 23 2007, 18:18) *
Насчёт что это не будет SPI это спорно. Например есть 8-ми битный SPI и 16-ти битный. В самом SPI возможно менять фазы, полярность и прочее - и это всё равно SPI.


Ох, не уверен, что все упирается в перевод или толкование слов "Serial Peripheral Interface". ИМХО, было бы разумно иметь возможность, чисто формально, проверить себя. Например:
Берем _любое_ стандартное устройство, заявленное разработчиками, как имеющее SPI. Подключаем в кольцо к другим 149 устройствам. Все 150 устройств работают правильно? В случае предложенного кольца ответ однозначный - нет. Ну значит это был не стандартный SPI, а что-то другое .

Сообщение отредактировал µµC - Jul 23 2007, 15:50
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 24 2007, 13:43
Сообщение #77


Ambidexter
*****

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



Цитата(µµC @ Jul 23 2007, 12:19) *
То, что вы предложили (кольцо из многих устройств с SPI интерфейсом) уже не будет SPI

Ну, вы как-то выборочно читаете мои посты...не только кольцо, но и звезду! Чёткого определения SPI наверное нет, моторола выпустила протокол из-под контроля, так что куда он разовьётся и разовьётся ли, трудно сказать...Можно посмотреть на аналогию с RS232, практически никто не пользуется всякими dtr, dsr и т.п., но от этого никто не говорит, что это не RS232, согласны?
Цитата(µµC @ Jul 23 2007, 12:19) *
Расскажите-ка лучше как мастер uC в вашем 1200-и битовом кольце (150 устройств), используя аппаратный SPI, обратится к стандартной SPI флешке стоящей, скажем, 75-ой в этом кольце.

Экий вы! Ну поставьте стандартную SPI флешь в параллель с работающим кольцом из 150 устройств и будет вам щастье. И стоить это вам будет один дополнительный провод SS, делов-то.

А теперь покажите, как подключить 128-е устройство (я уж не говорю 151-е :-) к работающим по шине i2c 127-ми устройствам. Не думаю, что будет легко, и что подключение обойдётся в один провод.


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


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 5-11-05
Пользователь №: 10 491



Не, ну с I2C проще - берем ещё 2 провода и получаем ещё 127 устройств smile.gif
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 24 2007, 14:29
Сообщение #79


Ambidexter
*****

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



Цитата(SpyBot @ Jul 24 2007, 12:50) *
Не, ну с I2C проще - берем ещё 2 провода и получаем ещё 127 устройств smile.gif

Так иис модуль один, куда эти два провода подключать-то?


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


кекс
******

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



Цитата(=GM= @ Jul 24 2007, 16:43) *
А теперь покажите, как подключить 128-е устройство (я уж не говорю 151-е :-) к работающим по шине i2c 127-ми устройствам. Не думаю, что будет легко, и что подключение обойдётся в один провод.

Вообще без доп. проводов обойдется.
SasaVitebsk уже отмечал как - задать всем устройствам один адрес, и передавать еще и субадрес в первых байтах посылки.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 24 2007, 20:10
Сообщение #81


Ambidexter
*****

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



Цитата(defunct @ Jul 24 2007, 20:05) *
Вообще без доп. проводов обойдется.
SasaVitebsk уже отмечал как - задать всем устройствам один адрес, и передавать еще и субадрес в первых байтах посылки.

Для стандартной АТ24Схх памяти этот номер не пройдёт.


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

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

 


RSS Текстовая версия Сейчас: 28th July 2025 - 21:15
Рейтинг@Mail.ru


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