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

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Встал на лапы
Аватара пользователя
Сообщения: 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 у меня будет связь с компьютером... Вообще, возможно ли сделать такую передачу данных на обычном порте у этих МК?

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

Сообщение ploop »

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

Сообщение radiolubitel2011 »

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

Сообщение Meteor »

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

Сообщение hybroid »

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

Сообщение radiolubitel2011 »

Meteor писал(а):А что мешает затактировать от одного источника?
Кстати, хорошо что напомнили. :) Сразу встречный вопрос: по той ссылке, которую я привёл в самом начале, на схеме установлен кварц на 7,3 МГц. При этом частота TSOP-приёмника 36 кГц. Как я понимаю, все расчёты там делались именно для 36 кГц. Ведь если я изменю частоту процессора, то и частоту для TSOP'а придётся полностью пересчитывать? Или я неправ?
hybroid писал(а):Есть SPI, USART, TWI.
А можно поподробнее? Я, если честно, только с USART работал...
Контактная информация:
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 136
Зарегистрирован: Чт фев 10, 2011 21:31:51
Откуда: Ульяновск

Сообщение radiolubitel2011 »

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

Сообщение 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... не спрашивайте даже
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 136
Зарегистрирован: Чт фев 10, 2011 21:31:51
Откуда: Ульяновск

Сообщение radiolubitel2011 »

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

Сообщение Ser60 »

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

Сообщение Meteor »

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

Сообщение SmarTrunk »

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

Сообщение radiolubitel2011 »

Ser60 писал(а):Зачем ставить 2 МК для управления танком? Там и одному делать нечего...
У меня он (танк) будет не просто тупо реагировать на свет и ездить туда-сюда... Некоторые из функций - ИК-бампер (на МК) - используется 6 портов для ИК-светодиодов, и ещё несколько для TSOP'ов, приём команд с ПДУ (10 каналов), управление 2-мя моторами и 2-мя сервоприводами, контроль тока у двигателей, контроль заряда аккумуляторов и тому подобное. У одного МК выводов ну никак не хватит. Так что, я решил немного разгрузить основной контроллер, и поставить ещё один дополнительный (под рукой как раз была ATMega8).
Meteor писал(а):...Поставьте джампера - во время программирования убираете их, во время работы соответственно ставите замыкая связь между МК...
Вся плата целиком будет в корпусе, так что каждый раз переключать джампера не очень-то удобно...
SmarTrunk писал(а):...Можно обойтисть и без джамперов, если резисторов туда наставить...
А можно немножко поподробнее? Куда нужно поставить резисторы?
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

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

Сообщение radiolubitel2011 »

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

Сообщение Meteor »

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

Сообщение radiolubitel2011 »

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

Сообщение demson »

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

Сообщение radiolubitel2011 »

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

Сообщение radiolubitel2011 »

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

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