Файл: Семейство микроконтроллеров MSP430X1XX, руководство пользователя (2004).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.06.2025

Просмотров: 2862

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Раздел XVIII.

АЦП10

Любой режим преобразования может быть немедленно остановлен установкой CONSEQx=0 и сбросом бита ENC. Данные преобразования будут ненадежны.

18.2.6. Контроллер переноса данных АЦП10

АЦП10 имеет контроллер переноса данных (DTC) для автоматического переноса результатов преобразования из ADC10MEM в другое место памяти на кристалле. DTC включается установкой регистра ADC10DTC1 в ненулевое значение.

Когда DTC включен, каждый раз по завершении преобразования АЦП10 и загрузки результата в ADC10MEM, запускается перенос данных. Вмешательства программного обеспечения для управления АЦП10 не требуется до тех пор, пока заданное количество данных преобразования не будет перемещено. Для каждого DTC-переноса требуется один такт MCLK ЦПУ. Во избежание любой конфликтной ситуации на шине во время DTC-переноса ЦПУ приостанавливается, если было активно, на один MCLK, необходимый для переноса.

DTC-перенос не должен инициироваться, пока АЦП10 занят. Программное обеспечение должно гарантировать, что никакое активное преобразование или последовательность не выполняется, когда DTC конфигурируется:

;Проверка активности АЦП10

BIC.W #ENC,&ADC10CTL0

;

busy_test BIT.W #BUSY,&ADC10CTL1

;

JNZ busy_test

;

MOV.W #xxx,&ADC10SA

;Безопасность

MOV.B #xx,&ADC10DTC1

;

;продолжение настройки

Режим одноблочного переноса

Одноблочный режим выбирается, если ADC10TB сброшен. Значение n в ADC10DTC1 определяет общее количество переносов для блока. Стартовый адрес блока задается где-либо в адресном диапазоне MSP430 с помощью 16разрядного регистра ADC10SA. Блок заканчивается на адресе ADC10SA+2n-2. Режим одноблочного переноса показан на рис. 18-9.

Внутренний указатель адреса первоначально равен ADC10SA, а внутренний счетчик перенос первоначально равен «n». Внутренний указатель и счетчик не видимы для программного обеспечения. DTC переносит значение слова ADC10MEM по адресу, находящемуся в адресном указателе ADC10SA. После каждого DTC-переноса внутренний адресный указатель инкрементируется на два, а внутренний счетчик переносов декрементируется на один.

Библиотека Компэла

343


MSP430x1xxFamily

TB=0

'n'•ый перенос

ADC10SA+2n•2

ADC10SA+2n•4

DTC

2•ой перенос

ADC10SA+2

1•ый перенос

ADC10SA

Рис. 18-9. Одноблочный перенос

DTC переносы продолжаются с каждой загрузкой ADC10MEM, пока внутренний счетчик переносов не станет равным нулю. Дополнительные DTC переносы происходить не будут до записи в ADC10SA. Когда DTC используется в одноблочном режиме, флаг ADC10IFG устанавливается только после завершения переноса полного блока. На рис. 18-10 показана диаграмма состояний одноблочного режима.

Режим двухблочного переноса

Двухблочный режим выбирается, если бит ADC10TB установлен. Значение n в ADC10DTC1 определяет количество переносов для одного блока. Адресный диапазон первого блока задается в любом месте диапазона адресов MSP430 с помощью 16-разрядного регистра ADC10SA. Первый блок заканчивается на адресе ADC10SA+2n-2. Адресный диапазон для второго блока задается с SA+2n по SA+4n-2. Режим двухблочного переноса показан на рис. 18-11.

Внутренний указатель адреса первоначально равен ADC10SA, а внутренний счетчик переносов первоначально равен «n». Внутренний указатель и счетчик являются невидимыми для программного обеспечения. DTC переносит значение слова ADC10MEM по адресу, находящемуся в адресном указателе ADC10SA. После каждого DTC-переноса внутренний адресный указатель инкрементируется на два, а внутренний счетчик переносов декрементируется на один.

DTC переносы продолжаются с каждой загрузкой ADC10MEM, пока внутренний счетчик переносов не станет равным нулю. К этому моменту блок один полон и оба бита ADC10IFG и ADC10B1 установлены. Пользователь может проверить бит ADC10B1 для определения, что блок один полон.

DTC продолжает с блока два. Во внутренний счетчик переносов автоматически перезагружается значение «n». При следующей загрузке ADC10MEM контроллер DTC начинает перенос результатов преобразований в блок два. После завершения n переносов блок два полон. Флаг ADC10IFG устанавливается, а бит

344

Библиотека Компэла


Раздел XVIII.

АЦП10

n=0 (ADC10DTC1)

Сброс DTC

n0

Ожидание записи в

ADC10SA

n = 0

Инициал.

Инициализация

DTC

стартового адреса в ADC10SA

Запись в ADC10SA

x = n

AD = SA

n защелкнуто

в счетчике «х»

Запись в ADC10SA

или

Ожидание, пока будет

n = 0

записан ADC10MEM

Ожидание

DTC

Запись в ADC10MEM

завершена

Запись в ADC10SA

Ожидание

готовности

ЦПУ

Write to ADC10SA

Перенос данных по адресу AD

AD = AD + 2 x = x – 1

x = 0

ADC10IFG=1

Синхронизация

с MCLK

x > 0

1 x MCLK цикл

ADC10TB = 0

и

ADC10CT = 1

ADC10TB = 0

и

ADC10CT = 0

Подготовка DTC

DTC работает

Рис. 18-10. Диаграмма состояний управления переносом данных в одноблочном режиме переноса

Библиотека Компэла

345


MSP430x1xxFamily

TB=1

2 x 'n'•ый перенос

ADC10SA+4n•2

ADC10SA+4n•4

DTC

'n'•ый перенос

ADC10SA+2n•2

ADC10SA+2n•4

2•ой перенос

ADC10SA+2

1•ый перенос

ADC10SA

Рис. 18-11. Двухблочный перенос

ADC10B1 очищается. Программное обеспечение пользователя может проверить очистку бита ADC10B1 для определения, что блок два полон. На рис. 1812 показана диаграмма состояний двухблочного режима.

Непрерывный перенос

Режим непрерывного переноса выбирается, если установлен бит ADC10CT. DTС не будет останавливаться после завершения переноса блока один (в одноблочном режиме) или блока два (в двухблочном режиме). Внутренний адресный указатель и счетчик переносов устанавливаются на значения ADC10SA и n соответственно. Переносы продолжаются, начиная с блока один. Если бит ADC10CT сброшен, DTC прекращает переносы после завершения текущих переносов в блоке один (в одноблочном режиме) или блоке два (в двухблочном режиме).

Длительность цикла DTC переноса

Для каждого переноса ADC10MEM контроллеру DTC требуется один или два тактовых цикла MCLK для синхронизации, один для выполнения собственно переноса (пока ЦПУ приостановлено) и один цикл времени ожидания. Поскольку DTC использует MCLK, длительность цикла DTC определяется рабочим режимом MSP430 и настройками системы тактирования.

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

346

Библиотека Компэла


Раздел XVIII.

АЦП10

n=0 (ADC10DTC1)

Сброс DTC

ADC10B1 = 0

ADC10TB = 1

n0

n = 0

Ожидание записи в

ADC10SA

Иниц.

Инициализация

стартового адреса в ADC10SA

DTC

Запись в

ADC10SA

x = n

Если ADC10B1 = 0

n защелкнуто

то AD = SA

в счетчике «х»

Запись в ADC10SA

или

Ожидание пока ADC10MEM

n = 0

будет записан

Ожидание

DTC

Запись в ADC10MEM завершена

Ожидание

Синхронизация

готовности

x > 0

ЦПУ

с MCLK

Запись в ADC10SA

1 x MCLK цикл

Перенос данных по адресу AD

AD = AD + 2 x = x – 1

ADC10B1 = 1 x = 0 или

ADC10CT=1

ADC10IFG=1

ADC10CT = 0

Переключение

и

ADC10B1 = 0

ADC10B1

Подготовка DTC

DTC работает

Рис. 18-12. Диаграмма состояний для управления переносом данных в двухблочном режиме переноса

Библиотека Компэла

347