Раздел: Документация
0 ... 162 163 164 165 166 167 168 ... 195 (продолжение)
Примечание, п = 0,1,2 или 3. 76543210
Чтение(П)/Запись(\Л/) R/W R/WRRR R/W R/W R/W Начальное значение 0 00 00110 Рис. 13.11. Регистры UCSR/jC в режиме MSPI Таблица 13.16. Биты регистров UCSR/iC в режиме MSPI Бит НазваниеОписание UMSEL/jI Режим работы USART. Эти биты определяют режим работы модуля USART: UMSELaiO
5...3 Не используются UDORDai Формат передачи данных. Если этот бит установлен в 1, данные передаются от младшего бита к старшему. Если бит сброшен в 0, порядок передачи битов меняется на противоположный — от старшего бита к младшему UCPHA/i Фаза тактового сигнала. Если этот бит сброшен в 0, данные с входа RxDai считываются по переднему фронту импульсов тактового сигнала (нарастающий фронт при UCPOLai = 0 и спадающий при UCPObi = 1). Если же этот бит установлен в 1, данные с входа RxDai считываются по заднему фронту импульсов тактового сигнала (спадающий фронт при UCPOLw = 0 и нарастающий при UCPOLai = 1) UCPOLai Полярность тактового сигнала. Значение этого бита определяет состояние линии SCK в режиме ожидания. Если бит сброшен в 0, генерируются импульсы положительной полярности, а в режиме ожидания на выводе ХСКл формируется НИЗКИЙ уровень. Если бит установлен в 1, генерируются импульсы отрицательной полярности, а в режиме ожидания на выводе ХСКл формируется ВЫСОКИЙ уровень Как видно из Табл. 13.16, переключение модуля USART в режим MSPI осуществляется установкой в 1 обоих битов UMSEL/d и UMSELO регистра UCSRflC. Формирование тактового сигнала в режиме MSPI осуществляется аналогично синхронному режиму USART. Таким образом, скорость передачи в режиме MSPI определяется выражением BAUD = /( ск 2-(UBRR + 1) где BAUD — скорость передачи, бит/с; /ск — тактовая частота микроконтроллера; UBRR — содержимое регистра контроллера скорости передачи (0...4095). Как было сказано выше, модуль USART поддерживает все четыре режима SPI, различающихся фазой и полярностью тактового сигнала ХСКл (SCK) относительно последовательных данных. В данном случае фаза тактового сигнала определяется битом иСРНАя, а полярность — битом UCPOL/? регистра UCSR/jC. Соответствие между состоянием этих битов и реализуемым режимом SPI указано в Табл. 13.17. Временные диаграммы передачи данных для всех четырех режимов приведены на Рис. 13.12. Таблица 13.17. Режимы SPI и биты UCPHAn
хек UCPOL=0 <п п п п £ Установка (TXD) —I I—I 1—1 L l I Считывание (RXD) т т т т ХСК Установка (TXD) Считывание (RXD) UCPOL=1 ~и~1 ги~и □czrzrn: т т т т ХСК Установка (TXD) Считывание (RXD) гтл гш т т т т ХСК Установка (TXD) Считывание (RXD) ~ш гии ZZTZTZXZ3 т т т т Рис. 13.12. Передача данных в режиме MSPI Формат передачи 8-битных данных, а именно порядок передачи битов, определяется состоянием бита UDORD/? регистра UCSR/jC. Если этот бит сброшен в 0, первым передается старший бит содержимого сдвигового регистра передатчика, а если установлен в 1 — младший бит. Благодаря двойной буферизации данных в модуле USART, можно легко осуществить передачу и 16-битных данных, записывая оба байта подряд в регистр данных UDR/i. Окончание передачи 16-битного значения можно будет определить по установке флага прерывания «передача завершена». 13.4.2. Инициализация режима MSPI Наверное, излишним будет говорить, что инициализация режима MSPI модуля USART должна быть выполнена до начала обмена по шине. Собственно инициализация заключается в задании требуемой скорости передачи, перевода вывода ХСКл в режим выхода, установки формата передачи данных, а также включения передатчика и приемника USART (если не требуется прием данных от ведомых устройств, то приемник можно и не включать). Если при обработке USART используются прерывания, то во время инициализации все прерывания должны быть запрещены (флаг I регистра SREG должен быть сброшен в 0). Обратите внимание, что включение передатчика USART необходимо выполнять при сброшенном регистре контроллера скорости передачи UBRR/2. Соответственно запись в регистр UBBR/7 требуемого значения следует производить после разрешения передатчика, но до начала обмена по шине. При реинициализации модуля (изменении скорости передачи, режима работы или формата данных), прежде чем изменять содержимое регистров, необходимо убедиться, что все данные переданы, проконтролировав состояние флагов ТХСп и КХСп. Ниже приведен простой пример подпрограммы инициализации (используется опрос флагов прерываний). Параметром подпрограммы является значение скорости передачи, передаваемое (в примере на ассемблере) в регистровой паре г17:г16. Пример на ассемблере USART MSPIM Init: clr rl8 out UBRRnH, rl8 out UBRRnL, rl8 ; Переключаем ХСКл на выход sbi XCKn DDR, ХСКл ; Переключаемся в режим MSPI (0-й режим SPI) ldi rl8, (l«UMSELnl) I (l«UMSELnO) I (0«UCPHAn) I (0«UCPOLn) out UCSRnC,rl8 0 ... 162 163 164 165 166 167 168 ... 195
|