Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [avr] Работа с USART на ATmega8515 (Си) 
:(
    Опции темы
Zprime
Дата 22.8.2010, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 22.8.2010

Репутация: нет
Всего: нет



Здравствуйте.
Я занимаюсь программированием микроконтроллеров, и впервые столкнулся с весьма своеобразной проблемой - требуется передавать даные по протоколу USART между 2мя микроконтроллерами Atmel mega 8515. Суть проблемы в том, что вход и выход USART на каждом микроконтроллере объеденены физически одним проводом (примерно =---=), соответственно каждый раз при передаче данных первым МК, принимают данные оба, что каким-то образом блокирует приём данных от второго. 
Понимаю, что этот вопрос несколько отвлечён от общей тематики форума, но всё равно надеюсь на то, что кто-либо мог сталкиваться с чем-то подобным, и предложит какой-нибудь вариант решения.
С уважением.
PM MAIL   Вверх
Den64
Дата 22.8.2010, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 6.4.2006
Где: Курск

Репутация: 1
Всего: 2



Если использовать его как UART то там вывод Tx одного контроллера соединяется в выводом Rx другого. И Tx вывод другого контроллера соединяется с выводом Rx первого контроллера. Всё должно работать нормально.
--------------------
Инагда пишу звуками.
PM WWW ICQ   Вверх
Zprime
Дата 22.8.2010, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 22.8.2010

Репутация: нет
Всего: нет



В том-то и дело, что по проекту, есть возможность между всеми 4-мя выводами только 1 провод провести. Возможно, есть какие-нибудь аналоги битов TXEN и RXEN регистра UCSRB, которыми можно непосредственно в ходе программы активировать/деактивировать трансмит и ресив почерёдно? Или по ходу программы, сразу после передачи сбрасывать регистр приёма, и тогда он не будет забит к приёму значащей информации. Данные идут не потоком, а только как реакция на срабатывание кнопок.
PM MAIL   Вверх
AVR32
Дата 22.8.2010, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 28.4.2007
Где: СПб

Репутация: 1
Всего: 1



Цитата(Zprime @ 22.8.2010,  19:54)
В том-то и дело, что по проекту, есть возможность между всеми 4-мя выводами только 1 провод провести.

Т.е. объёдинить Rx и Tx одного микроконтроллера с Rx и Tx другого в одну физическую цепь? Так?
Да, можно, но немного программно усложниться приём/передача. По умолчанию в алгоритме должны быть вырублены передатчики. Так же надо будет подтянуть объёдинённую цепь к питанию через резистор - логическая “1”.
PM MAIL WWW   Вверх
cardinal
Дата 22.8.2010, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Zprime, а еще лучше сразу выкладывайте Вашу схему, чтобы понятней было, что Вам нужно сделать...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
UniBomb
Дата 27.8.2010, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



А может быть в этом случае больше подойдёт 1-wire? 


--------------------
PM MAIL ICQ Skype   Вверх
Mazzi
Дата 27.10.2010, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 9
Всего: 21



Не вижу никаких проблем. Один мастер, остальные слейвы соединены одним проводом и Rx и Tx.
Все устройства "слушают" линию. Перед передачей посылки выключается приём и спокойно передаём. После окончания передачи снова включаем приём.
Для вашего случая  (AtMega8515)
Код

   UCSRB &= ~0x10; // выключение приёма
   UCSRB |= 0x10; // включение приёма




--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
zumanah
Дата 21.1.2011, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 21.1.2011

Репутация: нет
Всего: нет



Данные между процессорами должны передавться в одном направлении? Если да, то проблем нет - соединете ножку Tx мастера с ножкой Rx слейва и все в норме. Если же необходим двусторонний обмен, то при разветелении сигналов необходимо разделить процесс передачи по времени: 1) мастер настроен на передатчик, а слейв на приемник. 2) мастер посылает данные и переключается на приемик отключив передатчик, включив при этом время ожидание ответа (время через которое он опять включится на передатчик даже если ответ не пришел). 3) слейв получив посылку отключает приемник, включает передатчик и посылает посылку перед этим включив выдержку через которую посылка точно будет отпарвлено и он переключится на приемник. 4) Мастер получает посылку или проходит время ее ожидание и отключает приемник, включает передатчик. Далее по циклу.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0902 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.