Соединение контроллеров: коммутатор

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Сообщение Digit » 01 дек 2004, 00:41

setar писал(а):Боюсь вас разочаровать но в ATtiny26 нет интерфейса TWI

В этом МК есть USI - он с минимальными вмешательствами со стороны человека работает в режиме TWI. Просто в моей задаче мегу совать - больно жирно...
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Сообщение Виталий » 01 дек 2004, 01:11

Digit писал(а):
setar писал(а):Боюсь вас разочаровать но в ATtiny26 нет интерфейса TWI

В этом МК есть USI - он с минимальными вмешательствами со стороны человека работает в режиме TWI. Просто в моей задаче мегу совать - больно жирно...


А можно пару примеров для поколений? =)
Аватара пользователя
Виталий
 
Сообщения: 2114
Зарегистрирован: 08 окт 2004, 16:43
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий

Сообщение Digit » 01 дек 2004, 23:54

Э-э-э-э С примерами, наверное, будет беда, потому что я сам еще ничего с использованием USI не делал...  :oops:
Где-то было описание USI... Еще на Атмеловском сайте видел. Если память не изменяет, то звалось это дело как-то так:
AVR310 - Using the USI module as a TWI master
Больше сказать ничего не могу. По крайней мере, сегодня...
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Сообщение Mike_MA » 07 фев 2005, 18:32

Я искренне считаю, что для Atmel лучшим решением будет интерфейс SPI который позволяет и довольно быстро общаться и выявлять свободна ли линия .... :wink:  :wink:
Mike_MA
 
Сообщения: 367
Зарегистрирован: 07 фев 2005, 17:41
Откуда: Санкт-Петербург

Сообщение Змей-Горыныч » 02 мар 2005, 07:33

Mike_MA писал(а):Я искренне считаю, что для Atmel лучшим решением будет интерфейс SPI который позволяет и довольно быстро общаться и выявлять свободна ли линия .... :wink:  :wink:


Поправь, если ошибаюсь, но разве можно по SPI несколько устройств соединить? Как их выбирать? Если дополнительно отдельную линию на каждое устройство тянуть, то это не прикольно  :cry:
А вот TWI (i2c) там всего две линии, не важно слолько ты устройств прицепишь к шине. Кстати здесь при добавлении нового устройства не придется менять схему. В AVR весь протокол обмена по этой шине на аппаратном уровне реализован. А если нет в младших моделях, то я видел примеры програмной его реализации.
У меня примерно та же задача, что и у автора темы, поэтому я всё-таки после размышлений долгих пришел к выводу использовать TWI для обмена данными между AVR контроллерами.
Аватара пользователя
Змей-Горыныч
 
Сообщения: 70
Зарегистрирован: 01 мар 2005, 14:54
Откуда: г. Томск

Сообщение Mike_MA » 02 мар 2005, 12:02

Змей-Горыныч писал(а):Поправь, если ошибаюсь, но разве можно по SPI несколько устройств соединить? Как их выбирать? Если дополнительно отдельную линию на каждое устройство тянуть, то это не прикольно  :cry:

Ты правильно заметил "... если ошибаюсь, ...".
Интерфейс SPI имеет сигнал SS который ведущий ставит в "1",а  ведомый при "1" пассивно принимает данные. После передачи ведущий сбрасывает сигнал SS в "0" и линия свободна...
Mike_MA
 
Сообщения: 367
Зарегистрирован: 07 фев 2005, 17:41
Откуда: Санкт-Петербург

Сообщение Digit » 02 мар 2005, 22:49

т.е. между поднятием в "1" и бросанием в "0" по SS мастер может передать адрес всем ведомым шины, а ведомые проверят адрес сами и разберутся, для кого инфа?
А сколько на такую шину можно навешать девайсов? У TWI есть ограничения, накладываемые протоколом (8-и и 10-битная адресация) и шиной (тим емкость что ли должна быть какая-то - не помню уже). А тут как?
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Сообщение Stepan » 16 апр 2005, 21:07

Digit писал(а):т.е. между поднятием в "1" и бросанием в "0" по SS мастер может передать адрес всем ведомым шины, а ведомые проверят адрес сами и разберутся, для кого инфа?
А сколько на такую шину можно навешать девайсов? У TWI есть ограничения, накладываемые протоколом (8-и и 10-битная адресация) и шиной (тим емкость что ли должна быть какая-то - не помню уже). А тут как?

Не совсем так. У каждого устройства есть своя отдельная линия CS (или SS как обозвали в Атмеле)- выставлением ее в 0 у конкретного устройства мастер обращается только к нему (у всех остальных ведомых CS=1) соответственно можно съэкономить на процедуре анализа к кому конкретно обратился мастер. С другой стороны -увеличивается количество проводов- на одно устройство 4- на 2 - 5 и так далее. Ещё из плюсов- лёгкая программная реализация этого интерфейса.
Stepan
 
Сообщения: 39
Зарегистрирован: 16 апр 2005, 19:49
Откуда: Санкт-Петербург

Сообщение AlphA » 21 апр 2005, 02:39

Есть идея, как избавить МК от анализа чужих пакетов.
На одной ЛА7, конденсаторе и резисторе можно собрать селектор начала кодовой посылки. В результате МК будут ловить только самое начало пакета, где содержится адрес приёмника. Поняв, что это не их адрес, быстренько отваливаются от шины и продолжают основную деятельность. Тот же МК, который признает адрес за свой, продолжит приём пакета до тех пор, пока сам не сочтёт, что пакет закончился.
Данное устройство представляет собой простой аналоговый интегратор + RS-триггер. Он устанавливается когда по линии синхронизации придёт удлиннёный синхроимпульс, означающий начало пакета. Далее идут короткие (нормальные) импульсы (скваженностью >3-4), тактирующие данные пакета. Сброс триггера выполняет сам МК, когда адрес будет идентифицирован как чужой. В случае обнаружения своего адреса, пакет принимается полностью, после чего так же происходит сброс триггера.

У меня есть теоритическая (частично проверенная в системах моделирования) разработка универсальной последовательной шины для обмена данными внутри робота. Шина 3-х проводная (для устройств "только на приём" нужны только 2), с логически исключёнными коллизиями. Т.е. пока ничего аппаратно не сломалось, коллизий быть не должно в принципе. Возможно построение мостов между макро-блоками с использованием дифференциальных каналов (RS-485).
AlphA
 
Сообщения: 111
Зарегистрирован: 21 апр 2005, 01:19
Откуда: Екб

Сообщение setar » 21 апр 2005, 11:35

2AlphA
классная идея!
как буду расширять уже имеющиеся платки и возникнет вопрос коммуникации - буду дёргать вас на предмет поделиться наработками ;)
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Сообщение nest » 21 апр 2005, 12:36

Альфа, а это разве нельзя сделать на аппаратном уровне ? ... мне думается можно достаточно просто

и ещё плюс в пользу RS232 : можно неглядя сунуть его в комп и посмотреть, что твоится ...
для наладки оч полезно...

а с i2c ... это что то ковырять дополнительно надо, переходники, драйвераа ... не , некатолично это :)
Аватара пользователя
nest
 
Сообщения: 977
Зарегистрирован: 21 янв 2005, 12:16
Откуда: Germany
прог. языки: asm

Сообщение Digit » 21 апр 2005, 13:11

AlphA, если не сложно, то можно подробнее и с картинками?  8)
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Сообщение AlphA » 21 апр 2005, 21:42

2 nest:
Непоянл, что именно сделать на аппаратном уровне? Распознавание своего адреса? Да не так уж это и просто. На рассыпухе это 3-4 доролнительных корпуса.

2 Digit:
Можно и с картинками.
Вложения
Интегратор.GIF
Принципиальная схема детектора начала пакета.
У МК импользуются 2 бита портов и вход внешнего прерывания.
Тактовый сигнал поступает на вход прерывания через "шлюз" ввиде элемента "И", управляемого RS-триггером. Как видно из осцилограм сигналов, первый т
Интегратор.GIF (4.17 КиБ) Просмотров: 4099
Модель интегратора.GIF
На этой картинке мы можем лицезреть тот же детектор, но ввиде виртуальной модели на ElectronicsWorkBench.
В левом нижнем углу виднеется "экран" логического анализатора. Цвет сигнала соответствует цвету провода на схеме. Синий - это тактовый сигнал поступ
AlphA
 
Сообщения: 111
Зарегистрирован: 21 апр 2005, 01:19
Откуда: Екб

Сообщение AlphA » 21 апр 2005, 21:54

Sorry, подписи к картинкам оказывается, не могут быть такими длинными. Так, что продублирую их тут.

Принципиальная схема детектора начала пакета.
У МК импользуются 2 бита портов и вход внешнего прерывания.
Тактовый сигнал поступает на вход прерывания через "шлюз" ввиде элемента "И", управляемого RS-триггером. Как видно из осцилограм сигналов, первый тактовый импульс значительно длинее нормальных. За время его действия успевает зарядится конденсатор и триггер устанавливается, что позволяет тактовым импульсам проходить в МК, генерируя прерывание на обработку поступившего бита данных. Биты записываются в буфер. По накоплению полного адресного слова происходит сравнение его со "своим" адресом. Если совпало, то ничего не предпринимаем, продолжаем слушать пакет до конца (далее в заголовке пакета должна быть его длина). Если же адрес не признан за "свой", то выдаём короткий импульс на бит М порта Px, который вызвает сброс триггера и запрет поступления прерываний.
Бит N порта Px служит для приёма битов данных (как несложно догадаться).

На этой картинке мы можем лицезреть тот же детектор, но ввиде виртуальной модели на ElectronicsWorkBench.
В левом нижнем углу виднеется "экран" логического анализатора. Цвет сигнала соответствует цвету провода на схеме. Синий - это тактовый сигнал поступающий с управляющего (master) контроллера, в таком виде, какой он в проводе. Красным обозначен сигнал на входе S RS-триггера. Чёрный - это выход RS-триггера (инверсный). Пурпурный - выход slave-МК (бит M порта Px, на предыдущей картинке). Зелёному цвету соответствует тактовые сигналы, прошедшие через "шлюз", т.е. те, что попадут на вход INT slave-МК.
В правом нижнем углу картинки есть осциллограф. На нём хорошо видны процессы заряда-разряда интегрирующего конденсатора (красынй - напряжение на конденсаторе, синий - импульсы CLC от master-МК).
Буферный элемент (ввиде треугольника в разрыве красного провода перед триггером) нужен только на этапе моделирования и в реальной конструкции может быть исключён. Таким образом, мы получаем устройство из 4-х элементов "2И-НЕ", входящих в состав одной М/С К561(1561)ЛА7.
AlphA
 
Сообщения: 111
Зарегистрирован: 21 апр 2005, 01:19
Откуда: Екб

Сообщение Digit » 22 апр 2005, 00:26

AlphA, спасибо!  8)

А подключение к шине такое же, как и I2C? И ограничения те же? Или как?
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Пред.След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron