Связь двух МК через обычный порт

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
radiolubitel2011
Встал на лапы
Сообщения: 136
Зарегистрирован: Чт фев 10, 2011 21:31:51
Откуда: Ульяновск
Контактная информация:

Связь двух МК через обычный порт

Сообщение radiolubitel2011 »

Всем доброго времени суток! Вот собираю робота на танковой платформе. Основная управляющая часть будет состоять из 2 микроконтроллеров - ATMega8 и ATMega32.

На ATMega8 будет реализована функция ИК-бампера (для обнаружения препятствий, вот по такой схеме: http://railab.ru/begin/labrab/mIRBumper.htm). Только TSOP'ов будет 3 штуки.
Управлять двигателями (через драйвер L298N) будет ATMega32 (соответственно, и двигатели соединены к ней).

Задумка такая: чтобы не занимать сразу 4 порта на МК (для управления направлением вращения двигателей) я хотел бы соединить эти два МК через один порт. Т.е. смысл в чём - если на ATMega8 сработал, к примеру, первый TSOP-приёмник, то ATMega8 передает на ATMega32 какой-нибудь определённый код, а ATMega32 в свою очередь читает этот код, определяет по нему, какой из TSOP'ов сработал, и в зависимости от этого изменяет направление движения.

Вообще, это легко и просто можно было реализовать через USART, но на USART у меня будет связь с компьютером... Вообще, возможно ли сделать такую передачу данных на обычном порте у этих МК?

Буду очень благодарен за помощь!
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Связь двух МК через обычный порт

Сообщение ploop »

Можно, и проблем совсем никаких. Придумай свой протокол и всё.
Аватара пользователя
radiolubitel2011
Встал на лапы
Сообщения: 136
Зарегистрирован: Чт фев 10, 2011 21:31:51
Откуда: Ульяновск
Контактная информация:

Re: Связь двух МК через обычный порт

Сообщение radiolubitel2011 »

ploop писал(а):Можно, и проблем совсем никаких. Придумай свой протокол и всё.

В принципе, я тоже думаю, что должно получиться, просто хотел уточнить. И ещё: какой примерно алгоритм должен быть у протокола?
P.S. Да, кстати, а ничего что МК работают на разных частотах - одна на 7,3 МГц, а другая на 16 МГц?
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: Связь двух МК через обычный порт

Сообщение Meteor »

А что мешает затактировать от одного источника?
Проблем с тактированием можно наерное избежать, если делать синхронный протокол.
И тут кстати вопрос почему не SPI, раз занят UART?
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Re: Связь двух МК через обычный порт

Сообщение hybroid »

Есть SPI, USART, TWI. ИМХО, последнего с лихвой хватит. USART для этого даже жирно, имхо.
Аватара пользователя
radiolubitel2011
Встал на лапы
Сообщения: 136
Зарегистрирован: Чт фев 10, 2011 21:31:51
Откуда: Ульяновск
Контактная информация:

Re: Связь двух МК через обычный порт

Сообщение radiolubitel2011 »

Meteor писал(а):А что мешает затактировать от одного источника?

Кстати, хорошо что напомнили. :) Сразу встречный вопрос: по той ссылке, которую я привёл в самом начале, на схеме установлен кварц на 7,3 МГц. При этом частота TSOP-приёмника 36 кГц. Как я понимаю, все расчёты там делались именно для 36 кГц. Ведь если я изменю частоту процессора, то и частоту для TSOP'а придётся полностью пересчитывать? Или я неправ?

hybroid писал(а):Есть SPI, USART, TWI.

А можно поподробнее? Я, если честно, только с USART работал...
Аватара пользователя
radiolubitel2011
Встал на лапы
Сообщения: 136
Зарегистрирован: Чт фев 10, 2011 21:31:51
Откуда: Ульяновск
Контактная информация:

Re: Связь двух МК через обычный порт

Сообщение radiolubitel2011 »

Вопрос про альтернативные интерфейсы остается в силе. В интернете я что-то маловато информации нашёл. Может, не там искал. Подскажите, пожалуйста, как в частности работать с SPI или TWI. Или проще свой протокол связи сделать?
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: Связь двух МК через обычный порт

Сообщение Meteor »

SPI простейший последовательный протокол для обмена одного ведущего устр-ва с несколькими ведомыми устр-вами.Одномоментно может осуществлять обмен только с одним ведомым. Требует всего 4 сигнала:
SCK- тактовый
MOSI-передатчик ведущего- приемник ведомого
MISO- передатчик ведомого- приемник ведущего
CS- выбор приемника.
Содержит 8 битную посылку. Настройки заключаются в установки скорости и активного фронта.
Ведущий устанавливает у ведомого сигнал CS в 0. и затем осуществляет передачу. Наличие раздельных линий передачи-приема позволяет за 8 тактов SCK обменяться 2мя байтами.
TWI, он же I2C, он же IIC более сложный и менее скоростной интерфейс. Позволяет обмениваться нескольким устройствам по 2м проводам. Писать долго и лень - найдите книгу Евстифеева про микроконтроллеры AVR - там есть все
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Аватара пользователя
radiolubitel2011
Встал на лапы
Сообщения: 136
Зарегистрирован: Чт фев 10, 2011 21:31:51
Откуда: Ульяновск
Контактная информация:

Re: Связь двух МК через обычный порт

Сообщение radiolubitel2011 »

А на этих портах (SCK, MOSI, MISO) будет подключен внутрисхемный программатор... Не повлияет он, случайно, на передачу данных по SPI и наоборот? Прошивать я во время работы конечно же не буду... Просто COM-интерфейс для программирования через RS232 и буфер 74HC00 будет сделан прямо на этой же плате и подключен к МК.
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3780
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: Связь двух МК через обычный порт

Сообщение Ser60 »

Зачем ставить 2 МК для управления танком? Там и одному делать нечего. Вот для информации пара ссылок на подобные проекты:
http://mcs.uwsuper.edu/sb/Electronics/Trackbot/
http://mcs.uwsuper.edu/sb/327/Projects/2009/Trackbot/
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: Связь двух МК через обычный порт

Сообщение Meteor »

radiolubitel2011 писал(а):.. Не повлияет он, случайно, на передачу данных по SPI и наоборот?

Поставьте джампера - во время программирования убираете их, во время работы соответственно ставите замыкая связь между МК.
Более изящный вариант - поставить мультиплексор. Но боюсь вам это слишком рано
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Re: Связь двух МК через обычный порт

Сообщение SmarTrunk »

Аппаратным SPI довольно легко пользоваться. И МК не отвлекается, записал все в регистры, а оно там само передается-принимается. И скорости могут быть высокие.
Можно обойтисть и без джамперов, если резисторов туда наставить... В общем, внутрисхемное программирование никому не мешало задействовать в схеме этот полезный интерфейс.
Аватара пользователя
radiolubitel2011
Встал на лапы
Сообщения: 136
Зарегистрирован: Чт фев 10, 2011 21:31:51
Откуда: Ульяновск
Контактная информация:

Re: Связь двух МК через обычный порт

Сообщение radiolubitel2011 »

Ser60 писал(а):Зачем ставить 2 МК для управления танком? Там и одному делать нечего...

У меня он (танк) будет не просто тупо реагировать на свет и ездить туда-сюда... Некоторые из функций - ИК-бампер (на МК) - используется 6 портов для ИК-светодиодов, и ещё несколько для TSOP'ов, приём команд с ПДУ (10 каналов), управление 2-мя моторами и 2-мя сервоприводами, контроль тока у двигателей, контроль заряда аккумуляторов и тому подобное. У одного МК выводов ну никак не хватит. Так что, я решил немного разгрузить основной контроллер, и поставить ещё один дополнительный (под рукой как раз была ATMega8).

Meteor писал(а):...Поставьте джампера - во время программирования убираете их, во время работы соответственно ставите замыкая связь между МК...

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

SmarTrunk писал(а):...Можно обойтисть и без джамперов, если резисторов туда наставить...

А можно немножко поподробнее? Куда нужно поставить резисторы?
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: Связь двух МК через обычный порт

Сообщение Meteor »

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

Как всегда даем советы находясь почти в полном неведении.
Поставьте разъемы под шлейф: разъединяете и подключаете программатор, соединяете и имеете связь между МК. :idea:
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Аватара пользователя
radiolubitel2011
Встал на лапы
Сообщения: 136
Зарегистрирован: Чт фев 10, 2011 21:31:51
Откуда: Ульяновск
Контактная информация:

Re: Связь двух МК через обычный порт

Сообщение radiolubitel2011 »

Meteor, вероятно, можно поставить переключатели и вывести из наружу. У меня как раз есть такой маленький тройной DIP-переключатель. Если его вывести наружу, то можно легко отключать при программировании, а затем обратно включать. Там ведь, вроде как раз 3 канала будет задействовано - SCK, MOSI, MISO. Или что-то ещё?
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: Связь двух МК через обычный порт

Сообщение Meteor »

Для программирования еще надо вывести ресет
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Аватара пользователя
radiolubitel2011
Встал на лапы
Сообщения: 136
Зарегистрирован: Чт фев 10, 2011 21:31:51
Откуда: Ульяновск
Контактная информация:

Re: Связь двух МК через обычный порт

Сообщение radiolubitel2011 »

Нет, я про интерфейс SPI. По идее, программирование будет постоянно подключено, а этим переключателем я смогу включать/отключать передачу данных через SPI.
Аватара пользователя
demson
IT KT
Сообщения: 1309
Зарегистрирован: Пн авг 25, 2008 08:49:33
Контактная информация:

Re: Связь двух МК через обычный порт

Сообщение demson »

на USART у меня будет связь с компьютером

Тогда почему бы не применить бутлоадер? SPI освободится сразу.
в спорах рождается ИСТИНА [AND] flud.
Аватара пользователя
radiolubitel2011
Встал на лапы
Сообщения: 136
Зарегистрирован: Чт фев 10, 2011 21:31:51
Откуда: Ульяновск
Контактная информация:

Re: Связь двух МК через обычный порт

Сообщение radiolubitel2011 »

Я прошу прощения, а что такое "бутлоадер"? И как его в данном случае применить?
Аватара пользователя
radiolubitel2011
Встал на лапы
Сообщения: 136
Зарегистрирован: Чт фев 10, 2011 21:31:51
Откуда: Ульяновск
Контактная информация:

Re: Связь двух МК через обычный порт

Сообщение radiolubitel2011 »

Да, кстати, как вообще осуществлять передачу данных через интерфейс, к примеру, SPI?
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»