8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

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

Режим программирования

ATmega8515x/8535x

ATmega8x

ATmega 16х/32х

ATmega64x/128x

ATmega48x/88x/168x

ATmega 162x

ATmegal64x/324x/644x

ATmegal65x

ATmega325x/3250x, ATmega645x/6450x

X x

90 SO it)

x о о

О 90 so

Я Я Я DC DC DC

<U <U <U

m

1.Последовательное, по интерфейсу SPI

2. Параллельное, при высоком напряжении

3. По интерфейсу JTAG

Кроме того, микроконтроллеры семейства Mega имеют возможность самопрограммирования. Под этим термином понимается изменение содержимого памяти программ, управляемое самим микроконтроллером.



0 ... 163 164 165 166 167 168 169 ... 195