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

Несколько регистров модуля DMA являются двух- или трехбайтными. Для того, чтобы гарантировать, что все байты многобайтного регистра прочитаны или записаны совместно – начинайте запись или чтение с самого младшего байта.

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

В процессе записи, первые один или два байта помещаются во временные регистры, до тех пор, пока последний байт не будет записан, что запустит процесс записи всего регистра.

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

Многобайтовыми регистрами являются:

  • - счетчик переданных блоков;

  • - адрес источника;

  • - адрес получателя.

      1. Дополнительные возможности

1. Двойная буферизация.

Для осуществления продолжительных передач, два канала могут быть связаны так, что второй начинает принимать передачу сразу же, как первый закончил прием и наоборот. При этом у приложения остается время на обработку данных переданных по первому каналу, подготовка новых буферов данных и установка регистров канала начинается в то время, пока второй канал еще работает. Такой режим работы называется двойной буферизацией или цепочной передачей.

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

Отметим, что парными каналами для совместной работы в режиме двойной буферизации могут быт только 0 и 1 или 2 и 3. Также существует возможность, когда одна пара работает в режиме двойной буферизации, в то время как другая не используется или работает независимо друг от друга.

2. Приоритет канала.

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

Модуль DMA микропроцессора XMEGA может осуществлять следующие приоритетные схемы:

  • - циклический алгоритм переключения по всем каналам;

  • - наивысший приоритет по 0 каналу и циклический алгоритм переключения по остальным;

  • - наивысший приоритет по 0 каналу, следующий по приоритету – канал 1 и циклический алгоритм переключения по остальным;

  • - все каналы имеют разный приоритет, наивысший у канала 0 и далее по убыванию приоритета.

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

Для быстродействующих применений с частым использованием модуля DMA важно тщательно спланировать приоритетную очередность работы каналов для достижения необходимой временной дискретизации.

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