Режим мультипроцессорного обмена Режим многопроцессорного обмена позволяет нескольким ведомым процессорам принимать данные от ведущего. Для этого сначала декодируется адресный байт, который определяет к какому из процессоров обращается ведущий.
Если ведомый процессор принял правильный адрес, последующие
байты он принимает как данные, в то время как остальные ведомые процессоры игнорируют принимаемые байты до приема следующего адреса. Для работы в режиме ведущего процессор должен установить 9-битовый режим передачи (установлен бит CHR9 в UCSRB). Для передачи адресного байта девятый бит должен устанавливаться в 1, и сбрасываться для передачи байтов данных. В ведомых процессорах механизм приема слегка отличается для 8-ми и 9-ти битового режима приема. При приеме восьми бит (сброшен бит CHR9 в UCSRB), стоповый бит для адресного байта равен единице и равен нулю для байт данных. В 9-ти битовом режиме для адресного байта устанавливается 9-й бит, для байт данных он будет сброшен, стоповый бит всегда будет равен 1. Для обмена данными в многопроцессорном режиме необходимо выполнить следующую процедуру.
1. Все подчиненные процессоры устанавливают обмен в многопроцессорном режиме (установлен бит MPCM в UCSRA)
2. Ведущий процессор посылает адресный байт, все подчиненные процессоры читают и принимают этот байт. В ведомых процессорах устанавливается флаг RXC в UCSRA.
3. Каждый из ведомых процессоров читает регистр UDR и определяет был ли он выбран. Если процессор выбран, он сбрасывает флаг MPCM в UCSRA, иначе он будет ожидать следующего адресного байта.
4. Для каждого принятого байта данных в ведомом процессоре устанавливается флаг завершения приема (RXC в UCSRA). Кроме того в 8-битовом режиме будет генерироваться ошибка кадра (FE в UCSRA), поскольку стоповый бит будет равен 0. В других подчиненных процессорах
установлен бит MPCM, поэтому байты данных будут игнорироваться, регистр UDR не записывается, флаги RXC и FE не устанавливаются.
5. После передачи последнего байта данных процесс повторяется с шага 2.
Управление UART
РЕГИСТР ВВОДА/ВЫВОДА UART
0Ch(2Ch)
7
6
5
4
3
2
1
0
MSB
LSB
R\W
R\W
R\W
R\W
R\W
R\W
R\W
R\W
Начальное значение
0
0
0
0
0
1
0
0
Физически регистр UDR является двумя отдельными регистрами, доступ к которым происходит по одному адресу. При записи происходит запись в регистр передатчика, при чтении - читается регистр приемника.
РЕГИСТР УПРАВЛЕНИЯ И СОСТОЯНИЯ UART (UСSRA)
0Bh(2Bh)
7
6
5
4
3
2
1
0
RXC
TXC
UDRE
FE
OR
-
-
MPCM
R
R\W
R
R\W
R\W
R\W
R\W
R\W
Начальное значение
0
0
1
0
0
1
0
0
Бит 7 - RXC - прием завершен. Этот бит устанавливается в 1 когда принятый символ переписывается из сдвигового регистра приемника в регистр UDR. Бит устанавливается независимо от обнаружения ошибки кадра. Если установлен бит RXCIE в регистре UCR, при установке бита выполняется прерывание по завершению приема символа. RXC сбрасывается при чтении UDR. При использовании приема данных по прерыванию, обработчик прерывания должен читать регистр UDR для сброса RXC, иначе при выходе из прерывания оно будет вызвано снова.
Бит 6 - TXC - передача завершена. Этот бит устанавливается в 1 если символ из сдвигового регистра передатчика (включая стоповый бит) передан, а в регистр UDR не были записаны новые данные. Этот флаг особенно полезен при полудуплексной связи, когда предающее устройство должно перейти в режим приема и освободить линию связи сразу по окончанию передачи. Если установлен бит TXIE в регистре UCR, при установке TXC выполняется прерывания по окончанию передачи. TXC сбрасывается аппаратно при выполнении соответствующего вектора прерывания. Кроме того, бит можно сбросить записав в него 1.
Бит 5 - UDRE - регистр данных UART пуст. Этот бит устанавливается в 1 когда данные, записанные в UDR переписываются в регистр сдвига передатчика. Установка этого бита означает, что передатчик готов принять следующий символ для передачи. Если установлен бит UDRIE в регистре UCR, при установке этого бита выполняется прерывание окончания передачи. Бит UDRE сбрасывается при записи регистра UDR. При использовании передачи управляемой прерыванием, подпрограмма обслуживания прерывания должна записывать UDR, чтобы сбросить бит UDRE, иначе при выходе из прерывания оно будет вызвано снова. При сбросе этот бит устанавливается в 1, чтобы проиндицировать готовность передатчика.
Бит 4 - FE - ошибка кадра. Этот бит устанавливается при обнаружении условия ошибки кадра, т.е. если стоповый бит принятого байта равен 0. Бит FE сбрасывается при приеме единичного стопового бита.
Бит 3 - OR - переполнение. Этот бит устанавливается при обнаружении условия переполнения, т.е. когда символ из регистра UDR не был прочитан до того, как заполнился сдвиговый регистр приемника. Этот бит буферирован, т.е. остается установленным до тех пор, пока из регистра UDR не будут прочитаны правильные данные. Бит OR сбрасывается когда принятые данные переписываются в UDR.
Биты 2..1 - зарезервированы. В AT90S2333/4433 эти биты зарезервированы и всегда читаются как 0.
Бит 0 - MPCM - режим мультипроцессорного обмена. Этот бит используется для перехода в режим мультипроцессорного обмена. Этот бит устанавливается когда ведомый процессор ожидает приема адресного байта. Когда ведомый процессор распознает свой адрес он должен сбросить бит MPCM и начать прием данных.
РЕГИСТР УПРАВЛЕНИЯ И СОСТОЯНИЯ UART (UСSRB)
0Ah(2Ah)
7
6
5
4
3
2
1
0
RXCIE
TXCIE
UDRIE
RXEN
TXEN
CHR9
RXB8
TXB8
R\W
R\W
R\W
R\W
R\W
R\W
R
W
Начальное значение
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34