Универсальный асинхронный приемопередатчик UART

Использование вывода SS

Этот вывод предназначен для выбора активного ведомого устройства и в режиме Slave всегда является входом. При подаче на него «0» модуль SPI активируется и вывод MOSI пере­ключается в режим вывода данных (если это задано пользователем). Выводы модуля SPI являются в этом режиме входами. При пода­че на вывод SS «1» все выводы модуля SPI переключаются в режим ввода данных. При этом модуль переходит в неак­тивное состояние и прием данных не производится.

Следует помнить, что каждый раз, когда на вывод SS будет подана «1», происходит сброс модуля SPI. Соответствен­но, если изменение состояния для вывода произойдет во время передачи данных, и прием и передача немедленно прекратятся, а передаваемый и принимаемый байты будут потеряны.

Если же микроконтроллер находится в режиме Master (разряд MSTR регистра SPCR установлен в «1»), направление передачи данных через вы­вод SS определяйся пользователем. Если вывод сконфигурирован как вы­ход, он работает как линия вывода общего назначения и не влияет на рабо­ту модуля SPI. Если же он сконфигурирован как вход, то для обеспечения нормальной работы модуля SPI на него должна быть подана «1». Дело в том, что подача на этот вход «0» от какой-либо внешней схемы будет воспринята модулем SPI как выбор данного микроконтроллера в качестве ведомого и, соответственно, начало передачи ему данных. Во избежание конфликта на шине система SPI в таких случаях выполняет следующие действия:

1. Флаг MSTR регистра SPCR сбрасывается, и микроконтроллер пере­ключается в режим Slave. Как следствие, выводы MOSI и SCK на­
чинают функционировать как входы.

2. Устанавливается флаг SPIF регистра SPSR, генерируя запрос на пре­рывание от SPI. Если прерывания oт SPI разрешены и флат I регистpa SREG установлен в «1», происходит запуск подпрограммы обpaботки прерывания.

Таким образом, если ведущий микроконтроллер использует передачу дан­ных, управляемую прерыванием, и существует вероятность подачи на вход SS «0», в подпрограмме обработки прерывания от SPI обязательно должна осуществляеться проверка состояния флага MSTR. При обнаружении сброса он должен быть программно установ­лен обратно в «1» для обратного перевода микроконтроллера в режим Master.

Микроконтроллер АТ90С8535 имеет в своем составе модуль полнодуплексного универсального асинхронного приемо-передатчика (UART). Через него осуществляется прием и передача инфор­мации, представленной последовательным кодом, поэтому модуль UART часто называют также последовательным портом. С помощью этого модуля микроконтроллер может обмениваться данными с различными внешними устройствами.

Скорость передачи данных может варьироваться в широких пределах, причем высокие скорости передачи могут быть достигнуты даже при от­носительно низкой тактовой частоте микроконтроллера.

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

- переполнение;

- ошибка кадрирования;

- неверный старт-бит.

Для уменьшения вероятности сбоев в модуле реализована такая полезная функция, как фильтрация помех.

Для взаимодействия с программой в модуле предусмотрены 3 раздельныx прерывания, запрос на которые генерируется при наступлении следующих событий: «передача завершена», «регистр данных передатчика пуст» и «прием завершен».

Выводы микроконтроллера, используемые модулем UART, являются линиями порта D. В качестве входа приемника (RXD) используется вывод PDO, а в качестве выхода передатчика (TXD) — вывод PD1.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: