Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
374
Добавлен:
21.05.2015
Размер:
7.55 Mб
Скачать
      1. Перезагрузка адреса

При использовании режима увеличения или уменьшения адреса должно происходить обновление адреса после каждого доступа. Однако, во многих применениях указатель адреса источника или получателя сбрасывается в начало массива в определенные моменты времени. В течение DMA посылки первичные адреса источника и получателя сохраняются в контроллере   DMA и могут быть индивидуально настроены на перезагрузку по следующим условиям:

  1. - конец каждой передачи;

  2. - конец каждой блочной передачи;

  3. - конец посылки;

  4. - никогда не перезагружать.

Например, перезагрузка адреса после каждой передачи данных может быть использована совместно с 8-битным пакетным режимом для повторяющегося чтения всех четырех результатов преобразования АЦП микропроцессора XMEGA и записи данных в массив. 8-битный пакетный режим гарантирует, что все четыре результата преобразования АЦП будут прочитаны разом и без использования центрального процессора, а указатель на адрес источника перезагрузится в начальное положение (на первый регистр результата АЦП) по завершению придачи данных.

Отметим, что при использовании перезагрузки адреса после передачи пакета и общего количества байтов передачи некратного размеру пакета, передача последнего пакета будет остановлена по передаче последнего байта из общего количества байтов передачи, после чего также произойдет перезагрузка адреса. Например, используя 4-битную пакетную передачу с 17-байтным блоком, перезагрузка будет происходить после 4-го, 8-го, 12-го, 16-го и 17-го байтов.

Настройка перезагрузки адреса для источника и получателя осуществляется в битовых полях SRCRELOAD и DESTRELOAD по каждому каналу отдельно в регистре управления адресом (ADDRCTRL).

      1. Запуск передачи и режим однократного запуска

Возможные источник запуска передачи могут меняться в зависимости от устройства и пользователь должен изучить спецификацию на каждое устройство для получения полного перечня источников запуска DMA передачи.

В дополнение к внешним источникам запуска DMA передачи возможен ручной запуск, по каждому каналу отдельно, установкой бита требования передачи (TRFREQ) в регистре управления каналом (CTRL).

По умолчанию запуск передачи настроен на старт по началу блочной передачи. Посылка прекратится по завершению передачи одного блока, даже если включен повторный режим. Когда блок передан, канал ждет появления следующего запуска.

Для некоторых применений такой режим запуска передачи является не пригодным. Установка бита режима однократного запуска (SINGLE) в регистре управления каналом (CTRL) будет осуществлять одну передачу данных при каждом запуске, а не целый блок. Остальные настройки каналов и режимов работы не меняются при включении режима однократного запуска.

Режим однократного запуска обычно используется совместно с доступом к многобайтным периферийным регистрам, где адреса перезагружаются после каждой передачи данных.

      1. Обработка прерываний

Каждый DMA канал может быть настроен на формирование прерываний после следующих действий:

  • - Завершение передачи;

  • - Ошибка передачи.

По умолчанию прерывание по завершению передачи формируется после каждой блочной передачи. При включенном режиме повторной передачи прерывание не формируется, пока не будут переданы все блоки, и счетчик повторений не станет равным нулю. Исключением является режим бесконечной повторной передачи, в этом случае прерывание формируется после передачи каждого блока.

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

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

Соседние файлы в папке Архитектура ЭВМ