|
|
  |
Вопрос по USART'у, Multi-processor Communication Mode |
|
|
|
Oct 11 2007, 16:19
|
Частый гость
 
Группа: Свой
Сообщений: 126
Регистрация: 1-09-07
Из: Винница
Пользователь №: 30 222

|
Всем привет!
В даташите на МК (все тот же AT90PWM3, у которого не работает SPI slave без SS:)) сказано, что при включенном режиме MPCM, приемник игнорирует все входящие данные (не помещает их буфер), если они не являются адресом. Т.е. slave контроллер, распознав свой адрес, отключает режим MPCM, и начинает принимать данный от master'а, а все остальные slave'ы по прежнему находятся в MPCM режиме и просто игнорируют эти посылки данных.
Так вот, могу ли я просто соединить все Tx выходы всех slave'ов в одну точку, которая будет подключена к Rx master'а, или же нужно на каждый Tx slave'а ставить по 2 транзистора перед соединением?
Просто в не MPCM режиме ведь Tx настроен как выход, и его ведь нельзя соединять с остальными Tx, настроенными также. Но в даташите сказано, что при включенном MPCM: "The Transmitter is unaffected by the MPCM setting". Т.е. как настроен Tx в данном случае, как input?
|
|
|
|
|
Oct 12 2007, 07:24
|

Частый гость
 
Группа: Свой
Сообщений: 105
Регистрация: 6-01-06
Пользователь №: 12 901

|
Как известно, вывод TX становится TX только тогда, когда установлен флаг (бит) TXEN. Если TXEN не установлен, то вывод TX функционирует как обычный. И если он (этот вывод порта) установлен как "ВХОД", то сразу после снятия TXEN TX становится входом. Далее, не согласен с тем, что установка MPCM меняет ТОЛЬКО логику работы приемника. Так же запрещается работа передатчика (повторю приведенную автором темы выдержку из datasheet): "...The Transmitter is unaffected by the MPCM setting, but has to be used differently when it is a part of a system utilizing the Multi-processor Communication mode...." (п.18.9). То есть, как я понимаю, если в ведомом установлен бит MPCM, то настройка (in/out) вывода TX определяется пользователем, то есть бит TXEN сброшен. Как только ведомый принимает СВОЙ адрес, MPCM сбрасывается, а TXEN устанавливается.... и TX "становится" TX-ом. К сожалению, документальных "свидетельств" описанного алгоритма я не нашел (кроме указанного выше), опыты не проводил (работал с 2-мя МК на шине , с 3-мя и более - нет). Но коль скоро, даже 51-я серия подключалась в мультипроц. режиме по ОДНОМУ проводу (TX и RX объединялись), то и AVR "обязаны" проблему подключения 3-х и более кристалов на шину решать без транзисторов. .... Попробуйте, хотя бы в симуляторе... (Если появится свободное время, то в выходные поэкспериментирую сам) ... Кстати, все рассмотренное выше распространяется на все AVR МК.
|
|
|
|
|
Oct 13 2007, 23:02
|

Частый гость
 
Группа: Свой
Сообщений: 105
Регистрация: 6-01-06
Пользователь №: 12 901

|
Провел эксперимент... Условия: м16, AVRStudio, JTAG ICE, осциллограф. .... Итоги: - _Sam _ абсолютно прав. От состояния бита MPCM зависит только будет ли принятый байт проверятmся на содержание признака адреса (9 бит или первый стоповый, если 8-битный режим). И если MPCM установлен в 1, то флаг об окончании приема байта (RXC) будет выставлен только если принят байт с признаком адреса ; - "подтверждено", что сброс TXEN "возвращает" вывод к системным установкам. Предложения: - для объединения нескольких выводов TX пользоваться битом TXEN. Например так: 1.Вывод порта, совмещенный с TX, настроить как "вход", без подключения подтяг.резистора; 2.Программу работы МК дополнить двумя командами: - установкой бита TXEN после сброса бита MPCM; - сброса бита TXEN перед установкой MPCM. (Как вы понимаете, сброс и установка MPCM - это процедуры, которые в программе будут обязательно). Ни каких дополнительных проверок, условий в "...логику работы сети..." вводить не нужно. В предложенном решении вероятность одновременного включения нескольких TX равна вероятности ошибочного определения адреса одним из МК как "своего", и не зависит от схемотехнического решения. P.S. (OFFTOP) "...The Transmitter is unaffected by the MPCM setting, but ...." В данном контексте Transmitter - это не передающий блок SLAVE'а, и передатчик (источник сигнала) MASTER'а. (я поддался искушению и принял желаемое за действительное  )
|
|
|
|
|
Aug 9 2012, 15:50
|
Частый гость
 
Группа: Участник
Сообщений: 175
Регистрация: 18-01-06
Из: Москва
Пользователь №: 13 329

|
Не рекомендую такую фигню использовать. Под виндой такое не пройдет. Как отлаживать будешь. В известных мне АРМах этот режим можно реализовать через ЖО*У. Непонятно, чем этот режим полезен. Типа, чтобы не дергать проц прерываниями по USART-у, когда он занят чем-то другим? Так, он ровно так же будет дергаться в случае прихода пакета по его адресу. Просто сбоить будет реже, если нет запаса по времени. Цитата(_lukash_ @ Oct 11 2007, 19:19)  Всем привет!
В даташите на МК (все тот же AT90PWM3, у которого не работает SPI slave без SS:)) сказано, что при включенном режиме MPCM, приемник игнорирует все входящие данные (не помещает их буфер), если они не являются адресом. Т.е. slave контроллер, распознав свой адрес, отключает режим MPCM, и начинает принимать данный от master'а, а все остальные slave'ы по прежнему находятся в MPCM режиме и просто игнорируют эти посылки данных.
Так вот, могу ли я просто соединить все Tx выходы всех slave'ов в одну точку, которая будет подключена к Rx master'а, или же нужно на каждый Tx slave'а ставить по 2 транзистора перед соединением?
Просто в не MPCM режиме ведь Tx настроен как выход, и его ведь нельзя соединять с остальными Tx, настроенными также. Но в даташите сказано, что при включенном MPCM: "The Transmitter is unaffected by the MPCM setting". Т.е. как настроен Tx в данном случае, как input?
--------------------
" Будут с водкою дебаты, отвечай : Нет ребяты-демократы, только чай ! "
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|