Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[49]

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

Когда DMALEVEL=1, рекомендуется выбирать режимы переноса при DMADTx={0, 1, 2, 3}, поскольку бит DMAEN автоматически сбрасывается после конфигурирования переноса.

Останов выполнения команд для DMA переносов

Бит DMAONFETCH определяет, когда ЦПУ остановится для выполнения DMA переноса. Когда DMAONFETCH=0, ЦПУ останавливается немедленно и перенос начинается, когда получен сигнал запуска. Когда DMAONFETCH=1, ЦПУ заканчивает выполнение текущей команды, затем контроллер DMA останавливает ЦПУ и начинает перенос.

Примечание: DMAONFETCH обязательно должен использоваться, когда DMA записывает в флэш.

Если контроллер DMA используется для записи во флэш-память, бит DMAONFETCH должен быть установлен. В противном случае результат работы может быть непредсказуем.

Таблица 8-2. Источники запуска DMA

DMAxTSELx

Действие

Установка бита DMAREQ запускает DMA-перенос. Бит DMAREQ автоматически сбрасывается, когда начинается перенос.

Перенос запускается, когда устанавливается флаг TACCR2 CCIFG. Флаг TACCR2 CCIFG автоматически сбрасывается, когда начинается перенос. Если бит TACCR2 CCIE установлен, флаг TACCR2 CCIFG не запустит перенос.

Перенос запускается, когда устанавливается флаг TBCCR2 CCIFG. Флаг TBCCR2 CCIFG автоматически сбрасывается, когда начинается перенос. Если бит TBCCR2 CCIE установлен, флаг TBCCR2 CCIFG не запустит перенос.

Перенос запускается, когда модуль USART0 принимает новые данные. В режиме I2C запуск происходит при условии приема данных, но не при установке флага RXRDYIFG. RXRDYIFG не очищается, когда начинается перенос, а программная установка RXRDYIFG не приводит к запуску переноса. Если RXRDYIE установлен, условие приема данных не вызовет запуска переноса. В UART или SPI режимах перенос запускается, когда установлен флаг URXIFG0. URXIFG0 автоматически сбрасывается, когда начинается перенос. Если URXIE0 установлен, флаг URXIFG0 не запускает перенос.


Таблица 8-2. (Окончание)

DMAxTSELx

Действие

Перенос запускается, когда модуль USART0 готов передавать новые данные. В режиме I2C запуск происходит при условии готовности передачи данных, но не при установке флага TXRDYIFG. TXRDYIFG не очищается, когда начинается перенос, а программная установка TXRDYIFG не приводит к запуску переноса. Если TXRDYIE установлен, условие готовности передачи данных не вызовет запуска переноса. В UART или SPI режимах перенос запускается, когда установлен флаг UTXIFG0. UTXIFG0 автоматически сбрасывается, когда начинается перенос. Если UTXIE0 установлен, флаг UTXIFG0 не запускает перенос.

Перенос запускается, когда устанавливается флаг DAC12 0CTL DAC12IFG. Флаг DAC12 0CTL DAC12IFG автоматически очищается, когда начинается перенос. Если DAC12 0CTL DAC12IE установлен, флаг DAC12 0CTL DAC12IFG не запускает перенос.

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

Перенос запускается, когда устанавливается флаг TACCR0 CCIFG. Флаг TACCR0 CCIFG автоматически сбрасывается, когда перенос стартует. Если бит TACCR0 CCIE установлен, флаг TACCR0 CCIFG не запускает перенос.

Перенос запускается, когда устанавливается флаг TBCCR0 CCIFG. Флаг TBCCR0 CCIFG автоматически сбрасывается, когда перенос стартует. Если бит TBCCR0 CCIE установлен, флаг TBCCR0 CCIFG не запускает перенос.

Перенос запускается, когда устанавливается флаг URXIFG1. URXIFG1 автоматически сбрасывается, когда перенос стартует. Если URXIE1 установлен, флаг URXIFG1 не запускает перенос.

Перенос запускается, когда устанавливается флаг UTXIFG1. UTXIFG1 автоматически сбрасывается, когда перенос стартует. Если UTXIE1 установлен, флаг UTXIFG1 не запускает перенос.

Перенос запускается, когда аппаратный умножитель готов для нового операнда.

Перенос не запускается.

Перенос не запускается.

Перенос запускается, когда устанавливается флаг DMAxIFG. DMA0IFG запускает канал 1, DMA1IFG запускает канал 2, а DMA2IFG запускает канал 0. Ни один из флагов DMAxIFG автоматически не сбрасывается, когда перенос стартует.

1111 Перенос запускается внешним сигналом от DMAE0.


82.4. Останов DMA-переносов

Есть два способа остановить выполняющийся DMA-перенос:

•Одиночный, блочный или пакетно-блочный перенос может быть остановлен NMI-прерыванием, если установлен бит ENNMI в регистре DMACTL1.

•Пакетно-блочный перенос может быть остановлен очисткой бита

825. Приоритеты каналов DMA

По умолчанию приоритеты DMA-каналов такие: DMA0-DMA1-DMA2. Если одновременно появляются или находятся в ожидании два или три сигнала запуска, первым завершает перенос (одиночный, блочный или пакетно-блочный перенос) канал с наивысшим приоритетом, затем канал со вторым приоритетом и в завершение канал с третьим приоритетом. Выполняющиеся переносы не приостанавливаются, если запускается перенос в канале с более высоким приоритетом. Канал с высшим приоритетом ожидает завершения выполняющегося переноса, и только затем стартует.

Приоритеты DMA-каналов конфигурируются с помощью бита ROUNDROBIN. Когда бит ROUNDROBIN установлен, низший приоритет получает канал, завершивший перенос. Последовательность приоритетов каналов всегда остается подобной DMA0-DMA1-DMA2, например:

Приоритет DMA

Завершенный перенос

Новый приоритет DMA

DMA0 - DMA1 - DMA2

DMA2 - DMA0 - DMA1

DMA2 - DMA0 - DMA1

DMA0 - DMA1 - DMA2

DMA0 - DMA1 - DMA2

DMA1 - DMA2 - DMA0

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

82.6. Длительность цикла DMA-переноса

Контроллер DMA нуждается в одном или двух тактовых циклах MCLK для синхронизации перед каждым одиночным переносом или полным блочным или пакетно-блочным переносом. Для переноса каждого байта/слова нужно два цикла MCLK после синхронизации и один цикл времени ожидания после переноса. Поскольку контроллер DMA использует MCLK, продолжительность цикла DMA определяется режимом работы MSP430 и установками системы тактирования.

Если источник MCLK активен, но ЦПУ выключено, контроллер DMA будет использовать источник MCLK для каждого переноса без включения ЦПУ. Если источник MCLK выключен, контроллер DMA временно перезапустит MCLK с



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53] [стр.54] [стр.55] [стр.56] [стр.57] [стр.58] [стр.59] [стр.60] [стр.61] [стр.62] [стр.63] [стр.64] [стр.65] [стр.66] [стр.67] [стр.68] [стр.69] [стр.70] [стр.71] [стр.72] [стр.73] [стр.74] [стр.75] [стр.76] [стр.77] [стр.78] [стр.79] [стр.80] [стр.81] [стр.82] [стр.83] [стр.84] [стр.85] [стр.86] [стр.87] [стр.88] [стр.89] [стр.90] [стр.91] [стр.92] [стр.93] [стр.94] [стр.95] [стр.96] [стр.97] [стр.98] [стр.99] [стр.100] [стр.101] [стр.102] [стр.103] [стр.104] [стр.105] [стр.106] [стр.107] [стр.108] [стр.109] [стр.110] [стр.111] [стр.112] [стр.113] [стр.114] [стр.115] [стр.116] [стр.117] [стр.118] [стр.119] [стр.120]