Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
28.11.2007, 15:41
|
#1
|
Прохожий
Регистрация: 21.06.2006
Сообщений: 9
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
usart в мультимастерном режиме?
Что произойдёт если при передаче байта, на вход "RXD" поступит старт бит (при установленных ‹‹1 разрядах "RXEN" и "TXEN").
Конкретно. Нужно прервать передачу если на вход "RXD" поступит старт бит (определить конфликт).
Контроллер ATMega8515. Свободных ног не осталось, и времяни на опрос "RXD" нет.
|
|
|
|
28.11.2007, 15:51
|
#2
|
Вид на жительство
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Не совсем понятен вопрос. Но если нет возможности прервать программно, то м.б. поставить снаружи какой-нибудь триггер с ключем? Пусть МК передает, но в линию это не пойдет.
Удачи.
|
|
|
|
28.11.2007, 15:57
|
#3
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
А программно разве можно прервать, когда байт уже в регистре и сдвигается ? По-моему, только ножку в 3 состояние и все... Но - по-любоиу это будет с каким - то запозданием..
|
|
|
|
28.11.2007, 16:11
|
#4
|
Прохожий
Регистрация: 21.06.2006
Сообщений: 9
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
а что после возникновения такой ситуации будет в регистре данных
|
|
|
|
28.11.2007, 16:47
|
#5
|
Вид на жительство
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Сообщение от kapiton
|
а что после возникновения такой ситуации будет в регистре данных
|
Это зависит от схемы включения, Вашей программы. Какой вообще регистр данных Вы имеете ввиду? Приемника USART? Какой такой ситуации ? Если на вход RxD пришел старт-бит (импульс распознался как старт-бит), то далее - процесс приема запущен. Что прийдет - то и будет в регистре, если Вы в это время не выключите USART, или не измените его частоту его тактирования. Регистр же данных передатчика не доступен по чтению. Если Вы в него что-то записали и USART включен, то птичка (байт) улетела.
Удачи.
ЗЫ У Вас что, RxD объединен с TxD (через диод или как там)? Не понятно какой конфликт Вы имеете ввиду. Ведь USART может одновременно и передавать и принимать данные, т.е. работает в дуплексном режиме.
|
|
|
|
28.11.2007, 22:02
|
#6
|
Прохожий
Регистрация: 21.06.2006
Сообщений: 9
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
[Ведь USART может одновременно и передавать и принимать данные]
Упустил...[/quote]
|
|
|
|
28.11.2007, 22:37
|
#7
|
Прописка
Регистрация: 24.06.2005
Сообщений: 123
Сказал спасибо: 7
Сказали Спасибо 37 раз(а) в 15 сообщении(ях)
|
ИМХО, задача решается выбором правильного протокола,
пакет с заголовком и CrC, арбитраж по таймам.. и т.п.
- несомненно медленно - но зато дешево..
хотя..как то лет -надцать назад разработал целиком аппаратную однопроводную систему арбитража с динамическим приоритетом - для многопроцессорной системы.. арбитраж происходил менее чем за один такт шины..
но веяния сменились - поэтому идею так и не проверил ..
|
|
|
|
29.11.2007, 10:21
|
#8
|
Частый гость
Регистрация: 12.12.2005
Сообщений: 13
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Поправьте, если ошибаюсь. В мультипроцессорной системе ( как минимум 3 проц) все RxD и TxD всех процессоров соеденены. Уточню, соединение не на физическом, а на канальном уровне. 1-й проц слышат 2-й и 3-й, 2-й проц слышат 1-й и 2-й, 3-й проц слышат 1-й и 2-й. Получается что каждый проц будет слышать сам себя. Проц начинает передавать и тут же получает свои же данные. Если другой проц начнет передавать в с середины байта первого, то получим коллизию. На мой взгляд обнаружить ее, можно только контролируя четность/нечетность или по плохому стоп-биту.
|
|
|
|
29.11.2007, 12:27
|
#9
|
Вид на жительство
Регистрация: 30.12.2006
Адрес: Junktown
Сообщений: 300
Сказал спасибо: 164
Сказали Спасибо 171 раз(а) в 59 сообщении(ях)
|
Не совсем уверен, но кажется, что USART поддерживает Multi-processor а не Multi-master режим работы т.е. в системе есть один ведущий, все остальные - ведомые
|
|
|
|
29.11.2007, 12:35
|
#10
|
Вид на жительство
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Сообщение от mikeras
|
1-й проц слышат 2-й и 3-й, 2-й проц слышат 1-й и 2-й, 3-й проц слышат 1-й и 2-й. Получается что каждый проц будет слышать сам себя.
|
Так все-таки 1-й проц слышат 2-й и 3-й и 1-й? Сначала нужно разобраться с физической реализацией канала. Затем с арбитражем. Либо у Вас одноранговая система, когда все устройства имеют одинаковые права, либо есть ведущий контроллер, распределяющий ресурсы сети. Возможно временное разделение канала с привязкой по жесткой сетке. Все зависит от решаемой задачи. Затем сам протокол обмена. Если в сети возможны коллизии, то естественно он должен быть с контролем достоверности информации. Решать это простейшими способами типа паритета и контроля стоп-бита недостаточно. Необходимо хотя бы контролировать контрольные суммы пакета.
Удачи.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:44.
|
|