Разделы

В сети

Пользователей: 112
Из них просматривают:
Аналоги: 33. Даташиты: 8. Инструкции: 6. Новости: 40. Остальное: 3. Производители: 2. Профиль пользователя: 6. Расчёты: 1. Теги: 7. Форум: 6.
Участников: 2
Гостей: 110

Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.

Atmega128. Инициализация УСАПП

Написал MACTEP 31.03.2010 5:40:00 (Просмотров: 6333)

Инициализация УСАПП



 

Перед началом сеанса связи необходимо выполнить инициализацию УСАПП. Процесс инициализации обычно состоит из установки скорости связи, задания формата посылки и разрешения работы передатчика и приемника. Если используется управление связью по прерываниям, то во время инициализации необходимо, чтобы был сброшен флаг общего разрешения прерываний (т.е. необходимо запретить все прерывания).

Если необходимо выполнить повторную инициализацию УСАПП, например, для изменения скорости связи или формата посылки, то необходимо убедиться, чтобы во время инициализации передача была приостановлена. Флаг TXC может использоваться для проверки завершения работы передатчика, а флаг RXC - для проверки отсутствия в приемном буфере несчитанных данных. Обратите внимание, что при использовании флага TXC он должен сбрасываться программно перед началом каждой передачи (перед записью в UDR).

В следующих примерах показаны функции для простой инициализации УСАПП на Ассемблере и Си. В примерах предполагается, что используются управление связью по опросу флагов состояния (не по прерываниям) и фиксированный формат посылки. Скорость связи выступает как параметр функции. Для примера на ассемблере предполагается, что параметр скорости связи записан перед вызовом функции в регистры r17:r16.

Пример кода на Ассемблере (1)
USART_Init:
; Установка скорости связи
out UBRRH, r17
out UBRRL, r16
; Разрешение работы приемника и передатчика
ldi r16, (1<<RXEN)|(1<<TXEN)
out UCSRB,r16
; Установка формата посылки: 8 бит данных, 2стоп-бита
ldi r16, (1<<USBS)|(3<<UCSZ0)
out UCSRC,r16
ret
Пример кода на Си (1)
void USART_Init( unsigned int baud )
{
/* Установка скорости связи */
UBRRH = (unsigned char)(baud>>8);
UBRRL = (unsigned char)baud;
/* Разрешение работы передатчика и приемника */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Установка формата посылки: 8 бит данных, 2 стоп-бита */
UCSRC = (1<<USBS)|(3<<UCSZ0);
}

Прим. 1: В примере предполагается, что подключен файл специфических заголовков. Для регистров ввода-вывода, которые расположены в области памяти расширенного ввода-вывода необходимо заменить инструкции "IN", "OUT", "SBIS", "SBIC", "CBI" и "SBI" на инструкции, осуществляющие доступ к расширенной памяти ввода-вывода. Обычно это инструкции "LDS" и "STS" в сочетании с "SBRS", "SBRC", "SBR" и "CBR".

Более совершенные процедуры инициализации могут использовать расширенный интерфейс функции, где в качестве параметров выступают, например, формат посылки, отключение прерываний и т.д. Однако, в большинстве приложений используется фиксированные установки скорости связи и управляющих регистров, поэтому, для них представленные примеры могут быть непосредственно включены в основную программу или к процедурам инициализации других модулей ввода-вывода.

<< Предыдущая страница Оглавление Следующая страница >>

Теги:

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.

Разное

Интересно

Крупную деталь можно паять и обычным паяльником (25-40 Вт), если разогреть ее, например, на газовой плите.

Похожие статьи