Если приемник настраивается на прием посылок с 5…8 битами данных, то первый стоп-бит позволяет отличить назначение принятых данных: адрес или данные. Если приемник настроен на прием 9 бит данных, то значение 9-го бита (RXB8) используется для идентификации адреса или данных. Если идентификатор типа посылки (первый стоп-бит или 9-ый бит данных) равен 1, то в посылке содержится адрес. В противном случае в посылке переданы данные.

Режим многопроцессорной связи позволяет нескольким подчиненным микроконтроллерам принимать данные от одного ведущего. При этом подчиненные микроконтроллеры по первой адресной посылке определяют к какому микроконтроллеру адресуется ведущий. Если один из подчиненных микроконтроллеров обнаруживает свой адрес, то следующие посылки данных он будет принимать в нормальном режиме, а остальные подчиненные микроконтроллеры эти данные игнорируют до тех пор, пока не будет обнаружена следующая адресная посылка.

Использование MPCM

Если микроконтроллер действует как ведущий, то он может использовать 9-битный формат данных в посылке (UCSZ = 7). 9-ый бит данных (TXB8) устанавливается при передаче адресной посылки (TXB8 = 1) и сбрасывается при передаче посылки данных (TXB = 0). В этом случае подчиненные микроконтроллеры также должны устанавливать 9-битный формат.

Для обмена данными в многопроцессорном режиме связи необходимо использовать следующие процедуры:

Все подчиненные микроконтроллеры переводятся в многопроцессорный режим связи (MPCM =1 в UCSRA). Ведущий МК отправляет адресную посылку, а все подчиненные принимают и считывают эту посылку. В подчиненных МК флаг RXC в регистре UCSRA устанавливается как обычно. Каждый подчиненный МК считывает регистр UDR и определяет к кому адресуется ведущий МК. Адресуемый МК должен очистить бит MPCM в UCSRA, в противном случае он ожидает следующего адресного байта и сохраняет установки MPCM. Адресуемый МК принимает все данные до следующей адресной посылки. Другие подчиненные МК, у которых бит MPCM остался установленным будут игнорировать посылки данных. После приема адресуемым МК последней посылки данных устанавливается бит MPCM и ожидается прием новой адресной посылки от ведущего МК. Далее процесс повторяется с пункта 2.

Использование 5..8-разрядных форматов данных возможно, но не удобно, т. к. приемник должен переключаться между n и n+1 форматами посылки. Это делает затруднительной полнодуплексную связь, т. к. передатчик и приемник используют общие установки формата. При использовании 5…8-разр. данных в посылке передатчик должен использовать два стоп-бита, т. к. первый стоп-бит будет задействован для индикации типа посылки.

НЕ нашли? Не то? Что вы ищете?

Не пользуйтесь инструкциями "чтение-модификация-запись" (SBI и CBI) для установки или сброса бита MPCM. Бит MPCM находится в одной ячейке с флагом TXC, поэтому, последний может быть случайно сброшен при выполнении инструкций SBI или CBI.

Описание регистров УСАПП

Регистр данных УСАПП - UDRn

Разряд

7

6

5

4

3

2

1

0

RXBn[7:0]

UDRn (чтение)

TXBn[7:0]

UDRn (запись)

Чтение/запись

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Исх. значение

0

0

0

0

0

0

0

0

Буферные регистры данных передатчика и приемника УСАППn расположены по одному и тому же адресу в области ввода-вывода, обозначенной как регистр данных УСАППn или UDRn. Если выполнять запись по адресу регистра UDRn, то записываемые данные помещаются в буферный регистр данных передатчика TXBn. По аналогии, при чтении регистра UDRn извлекается содержимое буферного регистра данных приемника RXBn.

При использования 5-, 6- или 7-битных форматов данных передатчик игнорирует, а приемник устанавливает нулевые значения неиспользуемых разрядов.

Запись в буфер передатчика можно выполнять, если установлен флаг UDREn в регистре UCSRAn. Данные записанные в UDRn при сброшенном флаге UDREn будут игнорированы передатчиком УСАППn. Если выполнена запись в приемный буфер и при этом работа передатчика была разрешена, то после освобождения сдвигового регистра передатчик загрузит в него значение из буферного регистра. После этого выполняется передача данных на выводе TxDn. Приемный буфер организован как двухуровневый буфер FIFO (первый пришел - последний вышел). Буфер FIFO изменяет свое состояние, если выполнено чтение из приемного буфера. Вследствие такой организации буфера необходимо следить, чтобы по данному адресу не использовались инструкции "чтение-модификация-запись" (SBI и CBI). Также нужно быть внимательным при использовании инструкций тестирования бита (SBIC и SBIS), т. к. их выполнение может также изменить состояние буфера FIFO.

Регистр А управления и статуса УСАПП - UCSRnA

Разряд

7

6

5

4

3

2

1

0

RXCn

TXCn

UDREn

FEn

DORn

UPEn

U2Xn

MPCMn

UCSRnA

Чтение/запись

Чт.

Чт./Зп.

Чт.

Чт.

Чт.

Чт.

Чт./Зп.

Чт./Зп.

Исх. значение

0

0

0

0

0

0

0

0

*  Разряд 7 - RXCn: Флаг завершения приема УСАПП

Данный флаг устанавливается, если в приемном буфере содержатся несчитанные данные и сбрасывается, когда приемный буфер свободен (т. е., не содержит несчитанных данных). Если приемник отключается, то приемный буфер сбрасывается и, следовательно, флаг RXCn принимает нулевое значение. Флаг RXCn может использоваться для генерации прерывания по завершению приема (см. описание бита RXCIEn).

*  Разряд 6 - TXCn: Флаг завершения передачи УСАПП

Данный флаг устанавливается, если вся посылка из сдвигового регистра передатчика полностью передана и в передающем буфере UDRn нет новых данных для передачи. Флаг TXCn автоматически сбрасывается при переходе на вектор прерывания по завершению передачи или сбрасывается программно путем записи лог. 1 в позицию данного бита. Флаг TXCn может служить источником для генерации прерывания по завершению передачи (см. также описание бита TXCIEn).

*  Разряд 5 - UDREn: Флаг освобождения регистра данных УСАПП

Флаг UDREn индицирует о готовности приемного буфера UDRn к приему новых данных. Если UDREn=1, то буфер свободен и, следовательно, готов к записи. Флаг UDREn может служить источником для генерации прерывания по освобождению регистра данных (см. описание бит UDRIEn). UDREn устанавливается после сброса, индицируя о готовности передатчика.

*  Разряд 4 - FEn: Ошибка посылки

Данный бит устанавливается, если при приеме посылки, находящейся на выходе из приемного буфера, была определена ошибка в структуре посылки. Под ошибкой структуры в данном случае понимается нулевое значение первого стоп-бита в этой посылке. Значение данного бита действительно до чтения содержимого приемного буфера (UDRn). Флаг FEn принимает нулевое значение, если принятый стоп-бит имел правильное единичное значение. При записи в регистр UCSRnA в позиции данного бита необходимо указывать лог. 0.

*  Разряд 3 - DORn: Флаг переполнения данных

Данный бит устанавливает, если выявлено условие переполнения. Переполнение данных возникает, если заполнен приемных буфер (две посылки), новая посылка полностью принята в приемный сдвиговый регистр, а также обнаружен новый старт-бит. Значение данного бита действительно до чтения содержимого приемного буфера (UDRn). При записи в регистр UCSRnA в позиции данного бита необходимо указывать лог. 0.

*  Разряд 2 - UPEn: Ошибка паритета

Данный бит устанавливается, если следующая посылка в приемном буфере характеризуется ошибкой паритета, если во время приема этой посылки был разрешен контроль паритета (UPMn1 = 1). Данный бит имеет действительное значение до чтения приемного буфера (UDRn). При записи в регистр UCSRnA в позиции данного бита необходимо указывать лог. 0.

*  Разряд 1 - U2Xn: Удвоение скорости связи УСАПП

Данный бит оказывает влияние только в асинхронном режиме связи. В синхронном режиме в данный бит необходимо записать лог. 0. Запись в данный бит лог. 1 уменьшает в два раза значение коэффициента деления скорости связи с 16 до 8, тем самым удваивая скорость передачи данных в асинхронном режиме.

*  Разряд 0 - MPCMn: Режим многопроцессорной связи

Данный бит разрешает режим многопроцессорной связи. Если в бит MPCMn записать лог. 1, то все входящие посылки принимаемые приемником УСАПП будут игнорироваться, если они не содержат адресной информации. Установка бита MPCMn не влияет на работу передатчика. Более подробная информация по данному режиму приведена в параграфе "Многопроцессорный режим связи".

Регистр B управления и статуса УСАППn - UCSRnB

Разряд

7

6

5

4

3

2

1

0

RXCIEn

TXCIEn

UDRIEn

RXENn

TXENn

UCSZn2

RXB8n

TXB8n

UCSRnB

Чтение/запись

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт.

Чт./Зп.

Исх. значение

0

0

0

0

0

0

0

0

*  Разряд 7 - RXCIEn: Разрешение прерывания по завершению приема

Из за большого объема этот материал размещен на нескольких страницах:
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66