КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Пример на Си. unsigned int USART_Receive (void)
unsigned int USART_Receive (void) { unsigned char status, resh, resl
/* ждать заполнения буфера приемника */
while(!( UCSRA & ( 1 << RXC)));
/* Прочитать 9-й бит данных и флаги состояния */
status = UCSRA;
resh = UCSRB;
/* Прочитать младший байт данных */ resl = UDR;
/* В случае ошибки вернуть */
if ( status & ( 1 << FE) | (1<<DOR) | (1<<UPE)
return –l; /* Выделить 9-й бит данных */
resh = (resh >> l) & 0x01;
return ((resh << 6) | resl);
}
Собственно прием всех битов кадра осуществляется по-разному, в зависимости от режима работы модуля. При работе модуля USART в синхронном режиме состояние вывода RXD (RXDn) считывается по одному из фронтов сигнала ХСК (ХСn). Если бит UCPOL (UCPOn) регистра UCSRC (UCSRnC) сброшен в 0, считывание состояния вывода происходит по спадающему фронту сигнала ХСК (ХСn), если же установлен в 1 — по нарастающему фронту сигнала. Другими словами, считывание данных с вывода RXD (RXDn) и их выдача на вывод TXD (ТХDn) происходят по противоположным фронтам . Для обеспечения приема в асинхронном режиме работы используются схемы восстановления тактового сигнала и данных. Схема восстановления тактового сигнала предназначена для синхронизации внутреннего тактового сигнала, формируемого контроллером скорости передачи, и кадров, поступающих на вывод RXD (RXDn) микроконтроллера. Схема восстановлении данных осуществляет считывание и фильтрацию каждого бита принимаемого кадра. Схема восстановления тактового сигнала осуществляет опрос входа приемника с целью определения старт-бита кадра. Частота опроса зависит от состояния бита U2X(U2Xn) регистра UCSRA (UCSRnA). В обычном режиме (при U2Xn = 0) частота опроса в 16 раз превышает скорость передачи данных, а в ускоренном режиме (при U2X = 1) — в 8 раз. Обнаружение изменения сигнала на выводе RXD (RXDn) с лог. 1 (режим ожидания) на лог 0 интерпретируется как возможное появление переднего фронта старт-бита. После этого в нормальном режиме проверяется значение 8- й, 9-й и 10- й выборок входного сигнала, а в ускоренном режиме — 4- й, 5- й и 6- й выборок. Если значение хотя бы двух выборок из указанных равно лог. 1 старт-бит считается ложным (помеха), а приемник переходит к ожиданию следующего изменения входного сигнала с лог. 1 на лог. 0. В противном случае считается, что обнаружен Старт-бит новой последовательности, с которым синхронизируется внутренний тактовый сигнал приемника. После этого начинает работать схема восстановления данных. [ 1, с.477-501 ]
Раздел Программные средства разработки
|