Как соединить две АТмеги на одном роботе?

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

Как соединить две АТмеги на одном роботе?

Сообщение Ruslan » 03 ноя 2009, 23:38

Коллеги,
Подскажите, как лучше всего соединить две АТМеги (например 168). Хочу устроить между ними разделение труда на новом лайнтрейсере.
Первая: сенсоры линии, энкодеры и управление двигателями,
Вторая: сенсоры препятствий, дисплей и общая логика.
Соответственно первая регулярно посылает второй данные о позиции относительно линии, или данные о значениях на каждом сенсоре, а вторая думает что делать и говорит первой куда ехать.
Я так понимаю, есть варианты через I2C, SPI и через UART. Подскажите, что быстрее и что надёжнее. Прошу дать примеры, желательно с кодом.
Последний раз редактировалось Ruslan 04 ноя 2009, 12:03, всего редактировалось 1 раз.
Аватара пользователя
Ruslan
 
Сообщения: 603
Зарегистрирован: 03 июн 2007, 22:32
Откуда: Москва
ФИО: Руслан

Re: Как соединить две АТмеги на одном роботе?

Сообщение Сергей » 03 ноя 2009, 23:41

SPI наилучший вариант при небольшом расстоянии между микроконтроллерами
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

Re: Как соединить две АТмеги на одном роботе?

Сообщение =DeaD= » 03 ноя 2009, 23:42

Еще конечно же SPI есть :)
Более масштабируемый i2c, проще для резкого старта наверное uart.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Как соединить две АТмеги на одном роботе?

Сообщение EdGull » 04 ноя 2009, 00:06

посмотри как я на миниботе по уарту соеденил
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: Как соединить две АТмеги на одном роботе?

Сообщение AndreiSk » 04 ноя 2009, 00:23

RiO писал(а):Коллеги,
Подскажите, как лучше всего соединить две АТМеги (например 168). Хочу устроить между ними разделение труда на новом лайнтрейсере.


А что за новый лайнтрейсер?
Еще больше, еще быстрее?
Там какие вообще ограничения на размер то?
А то мы волнуемся :roll:
Аватара пользователя
AndreiSk
 
Сообщения: 2639
Зарегистрирован: 23 апр 2009, 17:03
Откуда: Москва, Самара
прог. языки: C#

Re: Как соединить две АТмеги на одном роботе?

Сообщение galex1981 » 04 ноя 2009, 08:59

Проще через UART, если важна скорость обмна то SPI
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Как соединить две АТмеги на одном роботе?

Сообщение Duhas » 04 ноя 2009, 17:12

проще ли с уарт - хз.. в спи байт отдал байт принял...
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: Как соединить две АТмеги на одном роботе?

Сообщение mandigit » 04 ноя 2009, 21:14

От типа информации зависит - может достаточно будет выставлять да/нет на ножках одного процессора и читать ножками другого :)

Если надо большими объемами цифровой информации обмениваться - зависит от типа процессора. Для mega8, имеющий модуль TWI оптимальным будет использование I2C. По сравнению с SPI это даст преимущество, если захочешь расширяться более 2-х процессоров (в SPI обмен точка-точка)
Аватара пользователя
mandigit
 
Сообщения: 583
Зарегистрирован: 28 ноя 2005, 12:05
Откуда: Москва

Re: Как соединить две АТмеги на одном роботе?

Сообщение EdGull » 04 ноя 2009, 21:19

1. с чего бы это в SPI обмен точка-точка?
2. типа у mega8 софтовые uart и spi?
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: Как соединить две АТмеги на одном роботе?

Сообщение yak-40 » 04 ноя 2009, 21:24

По быстродействию SPI лучше остальных.
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!
Аватара пользователя
yak-40
 
Сообщения: 3037
Зарегистрирован: 23 окт 2007, 22:03
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец

Re: Как соединить две АТмеги на одном роботе?

Сообщение ALHIMIK » 04 ноя 2009, 21:36

SPI
простой как грабли и быстрый
Аватара пользователя
ALHIMIK
 
Сообщения: 997
Зарегистрирован: 05 окт 2008, 14:41
Откуда: СПб
прог. языки: C,Python

Re: Как соединить две АТмеги на одном роботе?

Сообщение mandigit » 04 ноя 2009, 21:48

EdGull писал(а):1. с чего бы это в SPI обмен точка-точка?
2. типа у mega8 софтовые uart и spi?


пп2
следует трактовать так: у mega8 есть модуль TWI, который упрощает построение I2C, у attiny2313 такого модуля, например, нет

пп1
достаточно ознакомиться с протоколом. вот выдержка "Интерфейс SPI - синхронный последовательный интерфейс - предназначен для организации обмена между двумя устройствами"
если посмотреть на линии обмена (MOSI, MISO) то становится ясно, что ДВА устройства обмениваются между собой информацией.
Такой тип обмена и есть точка-точка.
С помощью SS на физическом уровне выбирается slave точка обмена, но это - отдельная песня.
Аватара пользователя
mandigit
 
Сообщения: 583
Зарегистрирован: 28 ноя 2005, 12:05
Откуда: Москва

Re: Как соединить две АТмеги на одном роботе?

Сообщение Duhas » 04 ноя 2009, 21:52

рои некоторых извращения используя спи мона кольцо сделать... и гнать пакет через всех ) долго.. но с адресацией )))
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: Как соединить две АТмеги на одном роботе?

Сообщение galex1981 » 04 ноя 2009, 22:10

По поводу SPI могу поспорить. У слейва есть пин SS - выбор кристалла, при установке 1 на этом пине, обмен происходит именно с этим устройством. Я сделал контроллер, управляющий 128ю слейв устройствами через SPI. Так что термин точка-точка тут не подходит ;)
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Как соединить две АТмеги на одном роботе?

Сообщение Duhas » 04 ноя 2009, 22:14

тут топология звезда )
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

След.

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

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

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