Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств
Шаг 6. Осваиваем все возможности микроконтроллера ATtiny2313 481 Схема контроля четности Схема контроля четности активна, когда установлен бит включения режима проверки четности (UPM1). Режим проверки четности (четность или нечетность) определяется битом UPM0. Если включен контроль чет ности, то генератор сигнала четности формирует сигнал на основе значе ний информационных разрядов в текущем принятом кадре и сравнивает результат с битом четности этого же кадра. Результат проверки запоминается в буфере приема вместе с получен ными данными и стоповыми битами. Флаг «Ошибка четности» (UPE) может быть прочитан программным путем для того, чтобы проверить, имел ли принятый кадр ошибку четности. Бит UPE устанавливается в единицу в том случае, если текущий кадр, значение которого можно прочитать из буфера приема, имел ошибку четности в момент его приема и контроль четности в этот момент был разрешен (UPM1 = 1). Значение флага действительно до тех пор, пока не прочитан буфер приема (UDR). Выключение приемника В отличие от передатчика, отключение приемника происходит немедленно. Текущие принимаемые данные будут потеряны. Когда приемник отключен (то есть бит RXEN установлен в ноль), альтернативная функция вывода RxD отменяется, и возвращается стандартная функция порта ввода-вывода. После того, когда приемник будет заблокирован, его буфер FIFO будет полностью освобожден. Сохранные ранее данные в буфере будут потеряны. Освобождение буфера приемника Буфер приемника FIFO освобождается автоматически при выключении приемника. Бывают ситуации, когда нужно освободить буфер в процессе работы. Например, при получении сигнала ошибки. Для освобождения буфера необходимо читать содержимое регистра UDR до тех пор, пока флаг RXC не окажется равным нулю. Следующий программный пример (листинги 6.15 и 6.16) показывает, как освободить буфер приема. Листинг 6.15. Пример на языке Ассемблер USART_Flush: sbis UCSRA, RXC ; Проверка флага ret in r16, UDR ; Чтение буфера rjmp USART_Flush
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==