5.13. Описание регистров DMA-контроллера
5.13.1. CTRL - регистр управления DMA
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
+0х00 |
ENABLE |
RESET |
- |
- |
DBUFMODE[1:0] |
PRIMODE[1:0] |
|
CTRL |
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт. |
Чт. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Бит 7 - ENABLE: разрешение работы DMA
Установка данного бита приводит к разрешению работы DMA-контроллера. В случае записи в данный бит нуля, когда работа DMA-контроллера была разрешена прежде, сброс бита ENABLE произойдет только после опустошения внутреннего буфера передачи, в результате чего DMA-передача данных будет отменена.
- Бит 6 - RESET: программный сброс DMA
Установка данного бита активизирует программный сброс. Данный бит автоматически очищается по завершении сброса. Данный бит можно установить, только если DMA-контроллер отключен (ENABLE = 0).
- Биты 5:4 - Res: Резервные биты
Данные биты не задействованы и зарезервированы для будущего использования. Для совместимости с будущими МК, при выполнении записи в этот регистр, в резервные биты необходимо записывать нули.
- Биты 3:2 - DBUFMODE[1:0]: режим двойной буферизации DMA
Данные биты управляют активностью функции двойной буферизации в различных каналах в соответствии с таблицей 5.1.
Таблица 5.1. Настройки двойной буферизации DMA
DBUFMODE[1:0] |
Групповая конфигурация |
Описание |
00 |
DISABLED |
Двойная буферизация отключена |
01 |
CH01 |
Двойная буферизация включена у каналов 0/1 |
10 |
CH23 |
Двойная буферизация включена у каналов 2/3 |
11 |
CH01CH23 |
Двойная буферизация включена у каналов 0/1 и 2/3 |
- Биты 1:0 - PRIMODE[1:0]: приоритеты DMA-каналов
Данные биты задают приоритеты внутренних каналов в соответствии с таблицей 5.2.
Таблица 5.2. Настройки приоритетов каналов DMA
PRIMODE[1:0] |
Групповая конфигурация |
Описание |
00 |
PR0123 |
Обработка запросов всех каналов карусельным методом (Round Robin) |
01 |
CH0RR123 |
Высший приоритет имеет канал 0, а все остальные (каналы 1, 2 и 3) обрабатываются по карусельному методу |
10 |
CH01RR23 |
Высший приоритет имеет канал 0, затем - канал 1, а все остальные (каналы 2 и 3) обрабатываются по карусельному методу |
11 |
CH0123 |
Высший приоритет имеет канал 0, затем - канал 1, канал 2, и, наконец, канал с самым низким приоритетом - 3 |
5.13.2. INTFLAGS - регистр статуса прерываний DMA
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
+0х04 |
CH3ERRIF |
CH2ERRIF |
CH1ERRIF |
CH0ERRIF |
CH3TRNFIF |
CH2TRNFIF |
CH1TRNFIF |
CH0TRNFIF |
|
NTFLAGS |
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:4 - CHnERRIF[3:0]: флаг прерывания по ошибке в DMA-канале n
Флаг CHnERRIF автоматически устанавливается при обнаружении ошибки в DMA-канале n. Запись единицы в данный бит приводит к сбросу флага.
- Биты 3:0 - CHnTRNFIF[3:0]: флаг прерывания по завершении транзакции в DMA-канале n
Флаг CHnTRFIF автоматически устанавливается по завершении транзакции в канале n. Если активизировать неограниченное количество повторов, то данный флаг будет принимать единичное значение после завершении передачи каждого блока. Запись единицы в данный бит приводит к сбросу флага.
5.13.3. STATUS - Регистр статуса DMA
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
+0х05 |
CH3BUSY |
CH2BUSY |
CH1BUSY |
CH0BUSY |
CH3PEND |
CH2PEND |
CH1PEND |
CH0PEND |
|
STATUS |
Чтение/запись |
Чт. |
Чт. |
Чт. |
Чт. |
Чт. |
Чт. |
Чт. |
Чт. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:4 - CHnBUSY[3:0]: флаг занятости канала DMA
Флаг CHnBUSY принимает единичное значение при старте транзакции в DMA-канале n. Данный флаг автоматически сбрасывается при отключении DMA-канала, при установке флага прерывания по завершении транзакции в DMA-канале n или при установке флага прерывания по ошибке в DMA-канале n.
- Биты 3:0 - CHnPEND[3:0]: флаг отправки передачи по DMA-каналу
Флаг принимает единичное значение во время отправки передачи блока по DMA-каналу n. Данный флаг автоматически сбрасывается во время запуска передачи блока или при отмене передачи.
5.13.4. TEMPH - старший байт временного регистра DMTEMP
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
+0х07 |
|
TEMPH |
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:0 - DMTEMP[15:8]: старший байт временного регистра DMA-контроллера
Данный регистр используется для чтения и записи 24-битных регистров DMA-контроллера. В нем запоминается второй байт 24-битного регистра, когда запись в него выполняет ЦПУ. Здесь также хранится второй байт 24-битного регистра, когда ЦПУ считывает первый байт. При необходимости данный регистр можно считать и записать из программы пользователя.
Чтение и запись 24-битного регистра требуют особого внимания. Подробности см. в 3.11 "Доступ к 16-битным регистрам".
5.13.5. TEMPL - младший байт временного регистра DMTEMP
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
+0х06 |
|
TEMPL |
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:0 - DMTEMP[7:0]: младший байт временного регистра DMA-контроллера
Данный регистр используется при чтении 24- и 16-битных регистров DMA-контроллера. В нем запоминается байт 1 записываемых ЦПУ 16/24-битных регистров. Запоминание байта 1 16/24-битных регистров происходит, когда ЦПУ считывает байт 0. Данный регистр можно считывать и записывать программно.
Чтение и запись 16- и 24-битных регистров нужно выполнять с особым вниманием (см. подробности в руководстве по ядру AVR).
|