Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Обратите внимание, что в режиме ведущего частота на этом выводе будет определяться формулой BAUD =^e3/2(UBRR+l), при этом бит удвоения частоты U2X в синхронном режиме не работает, и должен оставаться в нулевом состоянии. Внешняя частота в режиме ведомого не должна превышать 1/4 от частоты "кварца" fpe3. Для того чтобы сфазировать прием и передачу, служит бит UCPOL регистра UCSRC — по умолчанию (в нулевом состоянии этого бита) выдача данных на вывод TxD производится по спаду импульса на ХСК, а считывание с вывода RxD — по фронту. В единичном состоянии UCPOL, соответственно, все наоборот.
Синхронный режим работы USART недаром изложен в руководствах достаточно "мутно" — мне неизвестны разработки этой возможности. Очевидно, что в синхронном режиме гораздо удобнее задействовать интерфейс SPI, который не имеет "заморочек" со стартовыми-стоповыми битами (они необходимы только при асинхронном обмене, а при синхронном лишь увеличивают время передачи) и к тому же работает значительно быстрее.
Одно из известных мне нестандартных применений синхронного режима — вывод ХСК может служить аппаратным генератором прямоугольных импульсов, если установить его на выход, a USART в режим непрерывного синхронного приема (для этого достаточно разрешить синхронный режим установкой бита UMSEL и прием установкой бита RXEN, а на выводе RxD навсегда установить логический ноль, соответствующий старт-биту). Некоторый интерес может вызвать другая функция расширенного порта — возможность работы в режиме мультипроцессорного обмена, которая удобна, например, для организации взаимодействия устройств по интерфейсу RS-485 (см. далее). Вкратце он заключается в следующем. Несколько контроллеров соединяются по выводам RxD и TxD параллельно. Один из них назначается ведущим, и у него устанавливается 9-битовый режим обмена. Все остальные (ведомые) контроллеры переключаются в режим мультипроцессорного обмена установкой бита МРСМ в регистре UCSRA. В этом состоянии они ожидают приема адресного байта от ведущего, отличающегося тем, что сопровождающий его девятый бит должен быть установлен в 1. Сам адрес при этом располагается в остальных восьми битах и устанавливается по договоренности программистом. Если ведомый контроллер распознал свой адрес, то он сбрасывает бит МРСМ, переходя, таким образом, в обычный режим (все это делается программно!), после чего осуществляется обмен между ним и ведущим. Девятый бит при этом должен быть в нулевом состоянии, и остальные МК будут его игнорировать. Следует напомнить, что данные в UART всегда передаются младшими битами вперед, и если в адресуемом МК установлен 8-битовый режим приема, то при нулевом девятом бите будет регистрироваться ошибка кадра (бит FE).

Заметки на полях
Есть и альтернативный способ обмена с несколькими МК. Автору этих строк приходилось решать задачу трансляции данных от одного источника (внешнего ПК) к нескольким МК, управляющим отдельными блоками некоей измерительной системы. В этом случае было использовано аппаратное решение — изготовлена специальная плата коммутации со вспомогательным МК, который получал команды "1", "2", "3" и т. д. и транслировал их в установку соответствующих двоичных кодов на внешних выводах. Коды управляли двумя обычными мультиплексорами 561КП2, которые подключали выводы RxD и TxD канала с заданным номером к преобразователю уровней для стыковки с СОМ-портом ПК. Заметим, что команды переключения не должны входить в перечень инструкций, посылаемых на ведомые МК, иначе возможно самопроизвольное переключение канала (этот вопрос решается, если усложнить команды переключения, как описано в предыдущем разделе).

Реализация интерфейсов RS-232 и RS-485
В 1962 г., когда впервые возникли спецификации асинхронного последовательного интерфейса (для связи телетайпных аппаратов), ассоциация электронной промышленности США (Electrical Industry Association, EIA) называла свои стандарты буквами RS — Recommended Standard. Так возник стандарт RS-232, который правильнее именовать EIA-232 (с 1988 г. стандарт поддержала Telecommunications Industry Association, так что наиболее корректной будет запись EIA/TIA-232). Базовая на данный момент версия С (RS-232C) действует с 1969 г., она описывает сигналы и их характеристики. Версии D (1986 г.) и Е (1991 г.) появились уже под названием EIA-232D/E и описывают в том числе ряд дополнительных линий и различных разъемов. Международный Консультативный комитет по телеграфии и телефонии (CCITT) имеет такой же стандарт V.24/V.28 (с другими наименованиями линий), существует аналогичный стандарт ISO 2110, а в нашей стране ГОСТ 181445-81. Однако в инженерной практике этот стандарт (как и другие аналогичные) все равно зовут RS-232. В настоящее время действует версия F стандарта (1997), но большая часть современного оборудования ориентирована на RS-232D/E.

В RS-232 биты передаются разнополярными уровнями напряжения, притом инвертированными относительно UART (см. рис. 3.1 в главе 3). В UART действует положительная логика с обычными логическими уровнями, где логическая единица соответствует высокому уровню напряжения (например, +3 или +5 В), а логический ноль — низкому. В RS-232, наоборот, логическая единица передается отрицательным уровнем (от -3 до -12 В), а логический ноль— положительным уровнем от +3 до +12 В. Максимально допустимое абсолютное значение сигнала может составлять 14-15 В и более (как правило, на линии RxD допускается уровень входного напряжения не менее 25 В).



     
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru