Связь двух МК через обычный порт
- radiolubitel2011
- Встал на лапы
- Сообщения: 136
- Зарегистрирован: Чт фев 10, 2011 21:31:51
- Откуда: Ульяновск
- Контактная информация:
Связь двух МК через обычный порт
Всем доброго времени суток! Вот собираю робота на танковой платформе. Основная управляющая часть будет состоять из 2 микроконтроллеров - ATMega8 и ATMega32.
На ATMega8 будет реализована функция ИК-бампера (для обнаружения препятствий, вот по такой схеме: http://railab.ru/begin/labrab/mIRBumper.htm). Только TSOP'ов будет 3 штуки.
Управлять двигателями (через драйвер L298N) будет ATMega32 (соответственно, и двигатели соединены к ней).
Задумка такая: чтобы не занимать сразу 4 порта на МК (для управления направлением вращения двигателей) я хотел бы соединить эти два МК через один порт. Т.е. смысл в чём - если на ATMega8 сработал, к примеру, первый TSOP-приёмник, то ATMega8 передает на ATMega32 какой-нибудь определённый код, а ATMega32 в свою очередь читает этот код, определяет по нему, какой из TSOP'ов сработал, и в зависимости от этого изменяет направление движения.
Вообще, это легко и просто можно было реализовать через USART, но на USART у меня будет связь с компьютером... Вообще, возможно ли сделать такую передачу данных на обычном порте у этих МК?
Буду очень благодарен за помощь!
На ATMega8 будет реализована функция ИК-бампера (для обнаружения препятствий, вот по такой схеме: http://railab.ru/begin/labrab/mIRBumper.htm). Только TSOP'ов будет 3 штуки.
Управлять двигателями (через драйвер L298N) будет ATMega32 (соответственно, и двигатели соединены к ней).
Задумка такая: чтобы не занимать сразу 4 порта на МК (для управления направлением вращения двигателей) я хотел бы соединить эти два МК через один порт. Т.е. смысл в чём - если на ATMega8 сработал, к примеру, первый TSOP-приёмник, то ATMega8 передает на ATMega32 какой-нибудь определённый код, а ATMega32 в свою очередь читает этот код, определяет по нему, какой из TSOP'ов сработал, и в зависимости от этого изменяет направление движения.
Вообще, это легко и просто можно было реализовать через USART, но на USART у меня будет связь с компьютером... Вообще, возможно ли сделать такую передачу данных на обычном порте у этих МК?
Буду очень благодарен за помощь!
Re: Связь двух МК через обычный порт
Можно, и проблем совсем никаких. Придумай свой протокол и всё.
- radiolubitel2011
- Встал на лапы
- Сообщения: 136
- Зарегистрирован: Чт фев 10, 2011 21:31:51
- Откуда: Ульяновск
- Контактная информация:
Re: Связь двух МК через обычный порт
ploop писал(а):Можно, и проблем совсем никаких. Придумай свой протокол и всё.
В принципе, я тоже думаю, что должно получиться, просто хотел уточнить. И ещё: какой примерно алгоритм должен быть у протокола?
P.S. Да, кстати, а ничего что МК работают на разных частотах - одна на 7,3 МГц, а другая на 16 МГц?
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Re: Связь двух МК через обычный порт
А что мешает затактировать от одного источника?
Проблем с тактированием можно наерное избежать, если делать синхронный протокол.
И тут кстати вопрос почему не SPI, раз занят UART?
Проблем с тактированием можно наерное избежать, если делать синхронный протокол.
И тут кстати вопрос почему не SPI, раз занят UART?
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Re: Связь двух МК через обычный порт
Есть SPI, USART, TWI. ИМХО, последнего с лихвой хватит. USART для этого даже жирно, имхо.
- radiolubitel2011
- Встал на лапы
- Сообщения: 136
- Зарегистрирован: Чт фев 10, 2011 21:31:51
- Откуда: Ульяновск
- Контактная информация:
Re: Связь двух МК через обычный порт
Meteor писал(а):А что мешает затактировать от одного источника?
Кстати, хорошо что напомнили.
hybroid писал(а):Есть SPI, USART, TWI.
А можно поподробнее? Я, если честно, только с USART работал...
- radiolubitel2011
- Встал на лапы
- Сообщения: 136
- Зарегистрирован: Чт фев 10, 2011 21:31:51
- Откуда: Ульяновск
- Контактная информация:
Re: Связь двух МК через обычный порт
Вопрос про альтернативные интерфейсы остается в силе. В интернете я что-то маловато информации нашёл. Может, не там искал. Подскажите, пожалуйста, как в частности работать с SPI или TWI. Или проще свой протокол связи сделать?
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Re: Связь двух МК через обычный порт
SPI простейший последовательный протокол для обмена одного ведущего устр-ва с несколькими ведомыми устр-вами.Одномоментно может осуществлять обмен только с одним ведомым. Требует всего 4 сигнала:
SCK- тактовый
MOSI-передатчик ведущего- приемник ведомого
MISO- передатчик ведомого- приемник ведущего
CS- выбор приемника.
Содержит 8 битную посылку. Настройки заключаются в установки скорости и активного фронта.
Ведущий устанавливает у ведомого сигнал CS в 0. и затем осуществляет передачу. Наличие раздельных линий передачи-приема позволяет за 8 тактов SCK обменяться 2мя байтами.
TWI, он же I2C, он же IIC более сложный и менее скоростной интерфейс. Позволяет обмениваться нескольким устройствам по 2м проводам. Писать долго и лень - найдите книгу Евстифеева про микроконтроллеры AVR - там есть все
SCK- тактовый
MOSI-передатчик ведущего- приемник ведомого
MISO- передатчик ведомого- приемник ведущего
CS- выбор приемника.
Содержит 8 битную посылку. Настройки заключаются в установки скорости и активного фронта.
Ведущий устанавливает у ведомого сигнал CS в 0. и затем осуществляет передачу. Наличие раздельных линий передачи-приема позволяет за 8 тактов SCK обменяться 2мя байтами.
TWI, он же I2C, он же IIC более сложный и менее скоростной интерфейс. Позволяет обмениваться нескольким устройствам по 2м проводам. Писать долго и лень - найдите книгу Евстифеева про микроконтроллеры AVR - там есть все
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
- radiolubitel2011
- Встал на лапы
- Сообщения: 136
- Зарегистрирован: Чт фев 10, 2011 21:31:51
- Откуда: Ульяновск
- Контактная информация:
Re: Связь двух МК через обычный порт
А на этих портах (SCK, MOSI, MISO) будет подключен внутрисхемный программатор... Не повлияет он, случайно, на передачу данных по SPI и наоборот? Прошивать я во время работы конечно же не буду... Просто COM-интерфейс для программирования через RS232 и буфер 74HC00 будет сделан прямо на этой же плате и подключен к МК.
Re: Связь двух МК через обычный порт
Зачем ставить 2 МК для управления танком? Там и одному делать нечего. Вот для информации пара ссылок на подобные проекты:
http://mcs.uwsuper.edu/sb/Electronics/Trackbot/
http://mcs.uwsuper.edu/sb/327/Projects/2009/Trackbot/
http://mcs.uwsuper.edu/sb/Electronics/Trackbot/
http://mcs.uwsuper.edu/sb/327/Projects/2009/Trackbot/
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Re: Связь двух МК через обычный порт
radiolubitel2011 писал(а):.. Не повлияет он, случайно, на передачу данных по SPI и наоборот?
Поставьте джампера - во время программирования убираете их, во время работы соответственно ставите замыкая связь между МК.
Более изящный вариант - поставить мультиплексор. Но боюсь вам это слишком рано
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Re: Связь двух МК через обычный порт
Аппаратным SPI довольно легко пользоваться. И МК не отвлекается, записал все в регистры, а оно там само передается-принимается. И скорости могут быть высокие.
Можно обойтисть и без джамперов, если резисторов туда наставить... В общем, внутрисхемное программирование никому не мешало задействовать в схеме этот полезный интерфейс.
Можно обойтисть и без джамперов, если резисторов туда наставить... В общем, внутрисхемное программирование никому не мешало задействовать в схеме этот полезный интерфейс.
- radiolubitel2011
- Встал на лапы
- Сообщения: 136
- Зарегистрирован: Чт фев 10, 2011 21:31:51
- Откуда: Ульяновск
- Контактная информация:
Re: Связь двух МК через обычный порт
Ser60 писал(а):Зачем ставить 2 МК для управления танком? Там и одному делать нечего...
У меня он (танк) будет не просто тупо реагировать на свет и ездить туда-сюда... Некоторые из функций - ИК-бампер (на МК) - используется 6 портов для ИК-светодиодов, и ещё несколько для TSOP'ов, приём команд с ПДУ (10 каналов), управление 2-мя моторами и 2-мя сервоприводами, контроль тока у двигателей, контроль заряда аккумуляторов и тому подобное. У одного МК выводов ну никак не хватит. Так что, я решил немного разгрузить основной контроллер, и поставить ещё один дополнительный (под рукой как раз была ATMega8).
Meteor писал(а):...Поставьте джампера - во время программирования убираете их, во время работы соответственно ставите замыкая связь между МК...
Вся плата целиком будет в корпусе, так что каждый раз переключать джампера не очень-то удобно...
SmarTrunk писал(а):...Можно обойтисть и без джамперов, если резисторов туда наставить...
А можно немножко поподробнее? Куда нужно поставить резисторы?
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Re: Связь двух МК через обычный порт
ся плата целиком будет в корпусе, так что каждый раз переключать джампера не очень-то удобно...
Как всегда даем советы находясь почти в полном неведении.
Поставьте разъемы под шлейф: разъединяете и подключаете программатор, соединяете и имеете связь между МК.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
- radiolubitel2011
- Встал на лапы
- Сообщения: 136
- Зарегистрирован: Чт фев 10, 2011 21:31:51
- Откуда: Ульяновск
- Контактная информация:
Re: Связь двух МК через обычный порт
Meteor, вероятно, можно поставить переключатели и вывести из наружу. У меня как раз есть такой маленький тройной DIP-переключатель. Если его вывести наружу, то можно легко отключать при программировании, а затем обратно включать. Там ведь, вроде как раз 3 канала будет задействовано - SCK, MOSI, MISO. Или что-то ещё?
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Re: Связь двух МК через обычный порт
Для программирования еще надо вывести ресет
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
- radiolubitel2011
- Встал на лапы
- Сообщения: 136
- Зарегистрирован: Чт фев 10, 2011 21:31:51
- Откуда: Ульяновск
- Контактная информация:
Re: Связь двух МК через обычный порт
Нет, я про интерфейс SPI. По идее, программирование будет постоянно подключено, а этим переключателем я смогу включать/отключать передачу данных через SPI.
Re: Связь двух МК через обычный порт
на USART у меня будет связь с компьютером
Тогда почему бы не применить бутлоадер? SPI освободится сразу.
в спорах рождается ИСТИНА [AND] flud.
- radiolubitel2011
- Встал на лапы
- Сообщения: 136
- Зарегистрирован: Чт фев 10, 2011 21:31:51
- Откуда: Ульяновск
- Контактная информация:
Re: Связь двух МК через обычный порт
Я прошу прощения, а что такое "бутлоадер"? И как его в данном случае применить?
- radiolubitel2011
- Встал на лапы
- Сообщения: 136
- Зарегистрирован: Чт фев 10, 2011 21:31:51
- Откуда: Ульяновск
- Контактная информация:
Re: Связь двух МК через обычный порт
Да, кстати, как вообще осуществлять передачу данных через интерфейс, к примеру, SPI?