Раздел: Документация
0 ... 163 164 165 166 167 168 169 ... 195 ; Включаем приемник и передатчик ldi rl8, (l«RXENn) (l«TXENn) out UCSRnB,rl8 ; Устанавливаем скорость передачи out UBRRnH, rl7 out UBRRnL, rl6 ret Пример на Си void USART MSPIM Init(unsigned int baud) { UBRRn = 0; /* Переключаем ХСКл на выход */ XCKn DDR 1= (1«ХСКл) ; /* Переключаемся в режим MSPI (0-й режим SPI) */ UCSRnC = (l«UMSELnl) I (l«UMSELnO) I (0«UCPHAn) I (0«UCPOLn) ; /* Включаем приемник и передатчик */ UCSRnB = (l«RXENn) I (l«TXENn) ; /* Устанавливаем скорость передачи */ UBRRn = baud; } 13.4.3. Передача данных в режиме MSPI Для передачи данных в режиме MSPI необходимо разрешить работу передатчика USART, т. е. должен быть установлен бит ТХЕя регистра UCSR/jB. Если предполагается прием данных от ведомых устройств, то следует включить и приемник, установив флаг RXE/? регистра UCSR/jB. Процесс обмена инициируется записью байта в регистр данных UDR/7. Причем это относится как к приему, так и к передаче данных, поскольку тактовый сигнал формируется передатчиком. Данные, записанные в регистр UDR/2, перегружаются из буфера передатчика в сдвиговый регистр при его готовности к посылке следующего кадра. Обратите внимание на то, что для каждого переданного байта регистр данных UDRfl должен быть прочитан только один раз. Входной буфер USART в режиме MSPI функционирует точно так же, как и в обычном режиме, т. е. при переполнении теряется последний принятый байт, а не первЪш. Ниже приведен простейший пример подпрограммы передачи данных в режиме MSPI, использующей опрос флагов прерываний UDREa* и RXO?. Эта подпрограмма ждет очистки буфера передатчика, загружает в него новое значение, после чего ожидает заполнения буфера приемника. Пример на ассемблере USART MSPIM Transfег: ; Ждем очистки буфера передатчика sbis UCSRnA,UDREn гjmp USART MSPIM Transfer ; Загружаем данные в буфер, инициируя передачу out UDRn,rl6 ; Ждем приема данных USART MSPIM Wait RX: sbis UCSRnA,RXCn г j mp USART MS PIM Wai t RX ; Считываем принятое значение из буфера in rl6,UDRn ret Пример на Си unsigned char USART MSPIM Transfer (unsigned char data) { /* Ждем очистки буфера передатчика */ while (! (UCSRnA & (l«UDREn))) /* Загружаем данные в буфер, инициируя передачу */ UDRn = data; /* Ждем приема данных */ while (! (UCSRnA & (l«RXCn))) /* Считываем принятое значение из буфера и возвращаем его*/ return UDRn; } ГЛАВА 14 Программирование микроконтроллеров AVR семейства Меда 14.1. Общие сведения В общей сложности микроконтроллеры семейства Mega поддерживают следующие режимы программирования: •режим последовательного программирования (по интерфейсу SPI); •режим параллельного программирования при высоком напряжении; •режим программирования через интерфейс JTAG. Под «высоким» напряжением здесь понимается управляющее напряжение (12 В), подаваемое на вывод RESET микроконтроллера для перевода последнего в режим программирования. Какие из режимов поддерживает конкретный микроконтроллер, можно узнать, обратившись к Табл. 14.1. Таблица 14.1. Режимы программирования микроконтроллеров семейства Mega
Кроме того, микроконтроллеры семейства Mega имеют возможность самопрограммирования. Под этим термином понимается изменение содержимого памяти программ, управляемое самим микроконтроллером. 0 ... 163 164 165 166 167 168 169 ... 195
|