Руководство пользователя MSP430 (1041606), страница 16
Текст из файла (страница 16)
Процедуры обработки системного прерывания прерываются DMA-событиями. Если процедура обработки прерывания или какая-либо другая подпрограмма должны выполняться без прерываний, контроллер DMA необходимо отключить перед выполнением такой подпрограммы.
8.2.8 Прерывания контроллера DMA
Каждый канал DMA имеет собственный флаг DMAIFG. Каждый флаг DMAIFG устанавливается в любом режиме, когда соответствующий счетный регистр DMAxSZ обнуляется. Если соответствующие биты DMAIE и GIE установлены, генерируется запрос прерывания.
Все флаги DMAIFG - источники в векторе прерывания только одного контроллера DMA, а вектор прерывания общий с модулем DAC12. Программное обеспечение должно проверить флаги DMAIFG и DAC12IFG, чтобы определить источник прерывания. Флаги DMAIFG автоматически не сбрасываются и должны быть сброшены программно.
8.3 Регистры DMA
Перечень регистров DMA приведен в таблице 8.3.
Таблица 8-3. Регистры DMA
Регистр | Краткое обозначение | Тип | Адрес | Исходное состояние |
Регистр 0 управления DMA | DMACTL0 | Чтение/запись | 0122h | Сбрасывается с POR |
Регистр 1 управления DMA | DMACTL1 | Чтение/запись | 0124h | Сбрасывается с POR |
Регистр управления канала 0 DMA | DMA0CTL | Чтение/запись | 01E0h | Сбрасывается с POR |
Регистр адреса источника канала 0 DMA | DMA0SA | Чтение/запись | 01E2h | Не изменяется |
Регистр адреса получателя канала 0 DMA | DMA0DA | Чтение/запись | 01E4h | Не изменяется |
Регистр объема переноса канала 0 DMA | DMA0SZ | Чтение/запись | 01E6h | Не изменяется |
Регистр управления канала 1 DMA | DMA1CTL | Чтение/запись | 01E8h | Сбрасывается с POR |
Регистр адреса источника канала 1 DMA | DMA1SA | Чтение/запись | 01EAh | Не изменяется |
Регистр адреса получателя канала 1 DMA | DMA1DA | Чтение/запись | 01ECh | Не изменяется |
Регистр объема переноса канала 1 DMA | DMA1SZ | Чтение/запись | 01EEh | Не изменяется |
Регистр управления канала 2 DMA | DMA2CTL | Чтение/запись | 01F0h | Сбрасывается с POR |
Регистр адреса источника канала 2 DMA | DMA2SA | Чтение/запись | 01F2h | Не изменяется |
Регистр адреса получателя канала 2 DMA | DMA2DA | Чтение/запись | 01F4h | Не изменяется |
Регистр объема переноса канала 2 DMA | DMA2SZ | Чтение/запись | 01F6h | Не изменяется |
DMACTL0, регистр 0 управления DMA
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
Зарезервировано | DMA2TSELx |
rw-(0) | rw-(0) | rw-(0) | rw-(0) | rw-(0) | rw-(0) | rw-(0) | rw-(0) |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
DMA1TSELx | DMA0TSELx |
rw-(0) | rw-(0) | rw-(0) | rw-(0) | rw-(0) | rw-(0) | rw-(0) | rw-(0) |
Зарезервировано | Биты 15-12 | Зарезервировано |
DMA2TSELx | Биты 11-8 | Выбор источника сигнала запуска DMA. Эти биты определяют источник сигнала запуска DMA-переноса. 0000 Бит DMAREQ (программный запуск) 0001 Выход Timer_A CCR2 0010 Выход Timer_B CCR2 0011 Готовность приема I2C 0100 Готовность передачи I2C 0101 Бит DAC12IFG DAC12_0CTL 0110 ADC12 ADC12IFGx 0111 Действие не производится 1000 Действие не производится 1001 Действие не производится 1010 Действие не производится 1011 Действие не производится 1100 Действие не производится 1101 Действие не производится 1110 Бит DMA0IFG запускает канал 1 DMA Бит DMA1IFG запускает канал 2 DMA Бит DMA2IFG запускает канал 0 DMA 1111 Внешний запуск DMAE0 |
DMA1TSELx | Биты 7-4 | Подобно DMA2TSELx |
DMA0TSELx | Биты 3-0 | Подобно DMA2TSELx |
DMACTL1, регистр 1 управления DMA
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
r-0 | r-0 | r-0 | r-0 | r-0 | r-0 | r-0 | r-0 |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | 0 | 0 | 0 | 0 | DMA | ROUND | ENNMI |
r-0 | r-0 | r-0 | r-0 | r-0 | rw-(0) | rw-(0) | rw-(0) |
Зарезер | Биты | Зарезервировано. Только чтение. Всегда читаются как 0. |
DMA | Бит 2 | Выборка DMA 0 DMA перенос происходит немедленно 1 DMA перенос происходит при выборке следующей команды после запуска |
ROUND | Бит 1 | Этот бит включает циклическое переключение приоритетов каналов DMA. 0 Устанавливается следующий приоритет DMA каналов: DMA0-DMA1-DMA2 1 Приоритет DMA каналов изменяется с каждым переносом |
ENNMI | Бит 0 | Разрешение NMI. Этот бит разрешает прерывание DMA переноса немаскируемым прерыванием NMI. Когда NMI прерывает DMA перенос, текущий перенос завершается нормально, но последующие переносы прекращаются и устанавливается флаг DMAABORT. 0 NMI прерывание не прерывает DMA перенос. 1 NMI прерывание прерывает DMA перенос. |
DMAxCTL, регистр управления DMA каналом x
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
Зарезер | DMADTx | DMADSTINCRx | DMASRCINCRx |
rw-(0) | rw-(0) | rw-(0) | rw-(0) | rw-(0) | rw-(0) | rw-(0) | rw-(0) |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
DMA | DMA | DMALEVEL | DMAEN | DMAIFG | DMAIE | DMA | DMAREQ |
rw-(0) | rw-(0) | rw-(0) | rw-(0) | rw-(0) | rw-(0) | rw-(0) | rw-(0) |
Зарезер | Бит 15 | Зарезервирован. |
DMADTx | Биты | Режим переноса DMA. 000 Одиночный перенос 001 Блочный перенос 010 Пакетно-блочный перенос 011 Пакетно-блочный перенос 100 Повторный одиночный перенос 101 Повторный блочный перенос 110 Повторный пакетно-блочный перенос 111 Повторный пакетно-блочный перенос |
DMA | Биты | Инкремент DMA получателя. Этот бит позволяет выбрать автоматическое инкрементирование или декрементирование адреса получателя после каждого переноса байта или слова. Когда DMADSTBYTE=1, адрес получателя инкрементируется на единицу. Когда DMADSTBYTE=0, адрес получателя инкрементируется на 2. DMAxDA копируется во временный регистр и уже временный регистр инкрементируется или декрементируется. DMAxDA не инкрементируется и не декрементируется. 00 Адрес получателя не изменяется 01 Адрес получателя не изменяется 10 Адрес получателя декрементируется 11 Адрес получателя инкрементируется |
DMA | Биты 9-8 | Инкремент DMA источника. Этот бит позволяет выбрать автоматическое инкрементирование или декрементирование адреса источника после каждого переноса байта или слова. Когда DMASRCBYTE=1, адрес источника инкрементируется на единицу. Когда DMASRCBYTE=0, адрес источника инкрементируется на 2. DMAxSA копируется во временный регистр и уже временный регистр инкрементируется или декрементируется. DMAxSA не инкрементируется и не декрементируется. 00 Адрес источника не изменяется 01 Адрес источника не изменяется 10 Адрес источника декрементируется 11 Адрес источника инкрементируется |
DMA | Бит 7 | Байт DMA получателя. Этот бит определяет, какой формат будет иметь получатель: байт или слово. 0 Слово. 1 Байт. |
DMA | Бит 6 | Байт DMA источника. Этот бит определяет, какой формат будет иметь источник: байт или слово. 0 Слово. 1 Байт. |
DMA | Бит 5 | Уровень DMA. Этот бит позволяет выбрать условие запуска переноса: по перепаду или по уровню. 0 Чувствительность к перепаду 1 Чувствительность к уровню |
DMAEN | Бит 4 | Разрешение DMA 0 Запрещено 1 Разрешено |
DMAIFG | Бит 3 | Флаг DMA прерывания 0 Прерывание не ожидается 1 Ожидается прерывание |
DMAIE | Бит 2 | Разрешение DMA прерывания 0 Запрещено 1 Разрешено |
DMA | Бит 1 | Прекращение DMA переносов. Этот бит показывает, что DMA перенос был прерван NMI прерыванием. 0 DMA перенос не прерывался 1 DMA перенос был прерван NMI прерыванием |
DMAREQ | Бит 0 | Запрос DMA. Программное управление стартом DMA. Бит DMAREQ сбрасывается автоматически. 0 Нет DMA старта 1 Старт DMA |
DMAxSA, регистр адреса источника DMA
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
DMAxSAx |
rw | rw | rw | rw | rw | rw | rw | rw |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
DMAxSAx |
rw | rw | rw | rw | rw | rw | rw | rw |
DMAxSAx | Биты 15-0 | Адрес DMA источника. Регистр адреса источника указывает адрес источника DMA для одиночных переносов или первый адрес источника для блочных переносов. Регистр адреса источника остается неизменным во время блочных или пакетно-блочных переносов. |