Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MSP430_НВВ.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.67 Mб
Скачать

3.11 Аналого-цифровой преобразователь adc12

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

  • разрядность результирующего кода – 12 бит;

  • скорость преобразования – до 2*105 преобразований в секунду;

  • максимальная интегральная ошибка преобразования – менее 2-х единиц младшего разряда;

  • встроенное устройство выборки/хранения;

  • преобразование инициируется программно или аппаратно от таймеров A или B;

  • встроенный генератор опорного напряжения 1.5 или 2.5 V;

  • буферная память преобразования и управления, позволяющая сохранить до 16 последовательных измерений;

  • восемь индивидуально конфигурируемых внешних входных каналов;

  • каналы преобразования для внутреннего температурного сенсора и половины аналогового питания.

Структурная схема модуля АЦП приведена на рис. 12.

Основой модуля является 12-ти разрядный блок ADC последовательного приближения. Тактирование блока осуществляется частотой ADC12CLK, генерируемой от внутренних частот ACLK, MCLK, SMCLK или специального встроенного генератора ADC12OSC и деленной делителем DIV. Частота генератора ADC12OSC приблизительно равна 5MHz. В любом случае частота тактирования ADC12CLK должна находиться в диапазоне 0.45 – 6.3 MHz.

Рисунок 12. Структурная схема ADC12

Результирующий код АЦП генерируется согласно формуле

NADC = 4096 * (Vin – Vr-)/(Vr+ - Vr-)

где

Vin – входное напряжение;

Vr+ – опорное напряжение;

Vr-– общий вывод опорного напряжения.

Восемь внешних и четыре внутренних сигнала могут быть выбраны для аналого-цифрового преобразования. В качестве внешних сигналов используются выводы порта P6. Для минимизации токов утечек входных цифровых формирователей порта P6 рекомендуется назначать выводы, задействованные для АЦ преобразования, для поддержки периферийных функций через регистр P6SEL. В качестве внутренних входных сигналов АЦП могут быть использованы напряжения опоры VeREF+, VREF- и напряжения встроенного датчика температуры. Напряжение на температурном датчике Vt в вольтах определяется формулой

Vt = kt * T + 0.986

где

kt – температурный коэффициент датчика, равный 0.00355 V/0C ±3%;

T - температура в градусах Цельсия.

Требуемый канал измерения выбирается с помощью мультиплексора MUX, управляемого битами INCH (Input Channel) регистра управления.

Выходной сигнал мультиплексора поступает на вход устройства выборки/хранения SH (Sample/Hold), предназначенного для фиксации входного сигнала на время преобразования АЦП. Входной аналоговый сигнал перед началом преобразования запоминается на внутреннем конденсаторе SH. Для того чтобы конденсатор зарядился до величины входного напряжения необходимо время ts, величину которого можно оценить по формуле:

ts > (Rs + Ri) * 9.011 * Ci + 800ns

где

Rs – выходное сопротивление источника сигнала;

Ri – проходное сопротивление мультиплексора, типовое значение 2 kOm;

Ci – емкость накопительного конденсатора, типовое значение 40 pF.

Внутренний сигнал SAMPCON (Sample/Conversion) управляет периодом выборки SH и началом преобразования. Когда SAMPCON имеет высокий уровень, выборка активна. Переход сигнала SAMPCON с высокого уровня на низкий стартует аналого-цифровое преобразование, которому необходимо 13 тактов частоты ADC12CLK.

Полное время одного преобразования tADC составляет

tADC = ts + 13 * ADC12CLK

Активизация сигнала SAMPCON может быть осуществлена программно с помощью бита ADC12SC регистра управления АЦП или аппаратно при срабатывании модулей сравнения TACC1, TBCC0 или TBCC1. Выбор источника для генерации сигнала SAMPCON выбирается битами управления SHS (Sample/Hold Source). Кроме того, период выборки может быть задан напрямую этими сигналами или с помощью специального таймера TSH. Переключение между этими двумя режимами осуществляется с помощью бита управления SHP (Sample/Hold Pulse).

Модуль ADC12 содержит в своем составе встроенный источник опорного напряжения REF. Величину выходного напряжения можно задать программно с помощью бита управления REF2_5V на уровне 1.5V или 2.5V. Следует отметить, однако, что действительное значение этих напряжений может отличаться от номинальных на величину ±100/60 mV для уровней 2.5/1.5 V соответственно. Поэтому для гарантирования точности преобразования необходимо либо производить калибровку опорного напряжения, либо использовать внешний источник опоры. При использовании встроенного опорного напряжения рекомендуется между выводом VREF+ и выводом AVss подключать параллельно соединенные конденсаторы номиналом 10 µF и 100 nF.

С помощью переключателя, управляемого битами SREF можно подключить в качестве опоры Vr+ внешнее напряжение VeREF+ или аналоговое питание AVcc. С помощью переключателя, управляемого битом SREF2, можно в качестве опоры Vr- подключить внешний сигнал VREF- или напряжение аналоговой земли. В любом случае напряжение Vr+ должно находиться в диапазоне 1.4V – AVcc, а напряжение Vr- в диапазоне 0 – 1.2 V.

Начало цикла преобразования инициируется срабатыванием источника запуска АЦП при условии, что бит управления ENC (Enable Conversion) установлен в состояние 1. Результаты преобразований сохраняются в 16-ти регистрах буферной памяти преобразований ADC12MEMx. Каждый регистр ADC12MEMx конфигурируется соответствующим управляющим регистром ADC12MCTLx, содержащим информацию о номере входного канала и источнике опорного напряжения для каждого измерения. Следующие друг за другом измерения могут последовательно сохраняться в регистрах ADC12MEM0, ADC12MEM1 и т.д. Кроме того, управляющий регистр ADC12MCTLx содержит бит EOS, определяющий конец серии измерения, когда используется многоканальные режимы преобразования.

Модуль ADC12 имеет четыре основных режима работы:

  • Однократное одноканальное преобразование. Результат преобразования записывается в регистр ADC12MEMx, номер которого записан в поле CSTARTADDR (Conversion Start Address) регистра управления АЦП. При этом номер канала преобразования и источник опоры определяется содержимым соответствующего регистра ADC12MCTLx. Для старта следующего преобразования необходимо опять переключить ENC в состояние 01.

  • Однократное многоканальное преобразование. Результат первого преобразования сохраняется в ADC12MEMx, номер которого записан в поле CSTARTADDR регистра управления АЦП. Результаты следующих преобразований сохраняются в следующих регистрах ADC12MEMx. Последовательность преобразований завершается, когда очередной результат сохраняется в регистре, для которого бит EOS в соответствующем регистре ADC12MCTLx установлен в 1. Для старта следующей серии преобразований необходимо переключить ENC в состояние 01.

  • Повторяющееся одноканальное преобразование. Отличается от однократного одноканального преобразования тем, что измерения автоматически продолжаются после первого преобразования (нет необходимости переключать содержимое бита ENC). Содержимое регистра ADC12MEMx необходимо вычитывать до того, как будет произведено следующее преобразование. Выход из непрерывного процесса преобразований можно осуществить программной установкой бита ENC в 0.

  • Повторяющееся многоканальное преобразование. Отличается от однократного многоканального преобразования тем, что при достижении регистра, отмеченного установленным битом EOS, последовательность автоматически возобновляется, начиная с регистра, номер которого определен битовым полем CSTARTADDR.

Модуль ADC12 имеет дополнительные режимы работы, определяемые состоянием бита MSC (Multiple Sample and Conversion) регистра управления АЦП. Эти дополнительные режимы работают только в том случае, если не задан режим однократного одноканального преобразования и для формирования периода выборки используется таймер TSH. Если MSC=1, следующее преобразование в серии производится максимально быстро, т.е. не дожидаясь срабатывания источника старта АЦП, а непосредственно после окончания предыдущего преобразования. При установленном бите MSC логика работы АЦП меняется следующим образом.

  • Для однократного многоканального преобразования запуск АЦП всегда производится при срабатывании источника старта, после чего автоматически выполняется несколько измерений в зависимости от состояния бита EOS.

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

  • Для повторяющегося многоканального преобразования логика работы аналогична описанной в предыдущем пункте, с той разницей, что постоянно производится измерения серии, начиная с канала, определенного полем CSTARTADDR и заканчивая каналом с установленным битом EOS в регистре ADC12MCTLx.

Модуль ADC12 поддерживает 18 источников прерываний. 16 источников соответствуют флагам ADC12IFG0ADC12IFG15, сосредоточенным в регистре ADC12IFG. Каждый флаг устанавливается аппаратно, после того как результат преобразования записывается в соответствующий регистр ADC12MEMx. Два остальных события, вызывающих прерывание, не имеют соответствующих флагов, и могут быть определены с помощью регистра ADC12IV.

Прерывание, условно называемое ADC12OV (overflow), возникает в том случае, когда результат преобразования записывается в любой регистр ADC12MEMx до прочтения предыдущего результата из этого регистра.

Прерывание, условно называемое ADC12TOV (time overflow), генерируется, когда до завершения текущего преобразования затребована другая выборка-преобразование.

Регистры модуля ADC12 представлены в таблице 16.

Таблица 16

Имя

Назначение регистра

Адрес

Нач.значен.

ADC12CTL0

Регистр управления 0

1A0h

0

ADC12CTL1

Регистр управления 1

1A2h

0

ADC12IFG

Регистр флагов прерываний

1A4h

0

ADC12IE

Регистр разрешения прерывания

1A6h

0

ADC12IV

Регистр идентификации прерывания

1A8h

0

ADC12MEM0

Регистр памяти результата 0

140h

?

ADC12MEM1

Регистр памяти результата 1

142h

?

ADC12MEM2

Регистр памяти результата 2

144h

?

ADC12MEM3

Регистр памяти результата 3

146h

?

ADC12MEM4

Регистр памяти результата 4

148h

?

ADC12MEM5

Регистр памяти результата 5

14Ah

?

ADC12MEM6

Регистр памяти результата 6

14Ch

?

ADC12MEM7

Регистр памяти результата 7

14Eh

?

ADC12MEM8

Регистр памяти результата 8

150h

?

ADC12MEM9

Регистр памяти результата 9

152h

?

ADC12MEM10

Регистр памяти результата 10

154h

?

ADC12MEM11

Регистр памяти результата 11

156h

?

ADC12MEM12

Регистр памяти результата 12

158h

?

ADC12MEM13

Регистр памяти результата 13

15Ah

?

ADC12MEM14

Регистр памяти результата 14

15Ch

?

ADC12MEM15

Регистр памяти результата 15

15Eh

?

ADC12MCTL0

Управляющий регистр памяти результата 0

80h

0

ADC12MCTL1

Управляющий регистр памяти результата 1

81h

0

ADC12MCTL2

Управляющий регистр памяти результата 2

82h

0

ADC12MCTL3

Управляющий регистр памяти результата 3

83h

0

ADC12MCTL4

Управляющий регистр памяти результата 4

84h

0

ADC12MCTL5

Управляющий регистр памяти результата 5

85h

0

ADC12MCTL6

Управляющий регистр памяти результата 6

86h

0

ADC12MCTL7

Управляющий регистр памяти результата 7

87h

0

ADC12MCTL8

Управляющий регистр памяти результата 8

88h

0

ADC12MCTL9

Управляющий регистр памяти результата 9

89h

0

ADC12MCTL10

Управляющий регистр памяти результата 10

8Ah

0

ADC12MCTL11

Управляющий регистр памяти результата 11

8Bh

0

ADC12MCTL12

Управляющий регистр памяти результата 12

8Ch

0

ADC12MCTL13

Управляющий регистр памяти результата 13

8Dh

0

ADC12MCTL14

Управляющий регистр памяти результата 14

8Eh

0

ADC12MCTL15

Управляющий регистр памяти результата 15

8Fh

0

    • ADC12CTL0 (Control 0) – содержат биты управления АЦП.

15 12 11 8

SHT1x

SHT0x

7 6 5 4 3 2 1 0

MSC

REF2_5V

REFON

ADC12ON

ADC12

OVIE

ADC12

TOVIE

ENC

ADC12SC

  • Биты 15…12 – SHT1 (Sample/Hold Time) – время выборки/хранения. Состояние этих бит определяет период выборки, выраженный в тактах частоты ADC12CLK, для регистров ADC12MEM8 …ADC12MEM15.

SHT

Циклы ADC12CLK

0000

4

0001

8

0010

16

0011

32

0100

64

0101

96

0110

128

0111

192

1000

256

1001

384

1010

512

1011

768

1100

1024

1101

1024

1110

1024

1111

1024

  • Биты 11…8 – SHT0 (Sample/Hold Time) – время выборки/хранения. Состояние этих бит определяет период выборки, выраженный в тактах частоты ADC12CLK, для регистров ADC12MEM7 …ADC12MEM0. Соответствие кода в этом поле количеству тактов такое же, как для битов SHT1.

  • Бит 7 – MSC (Multiple Sample and Conversion) – множественные выбор и преобразования.

0 – каждое новое преобразование начинается после срабатывания источника старта АЦП;

1 – следующее преобразование начинается непосредственно после окончания предыдущего.

  • Бит 6 – REF2_5V (Reference 2.5V) – опора 2.5V. Установка/сброс этого бита задает напряжение встроенного генератора опорного напряжения 2.5/1.5 V соответственно.

  • Бит 5 – REFON – включение генератора опоры. Установка/сброс этого бита включает/выключает генератор опорного напряжения.

  • Бит 4 – ADC12ON – включение модуля АЦП. Установка/сброс этого бита включает/выключает модуль АЦП.

  • Бит 3 – ADC12OVIE (Overflow Interrupt Enable) – разрешение прерывания по переполнению АЦП. Установка/сброс этого бита разрешает/запрещает прерывание, возникающее в случае, если содержимое ADC12MEMx не вычитано к моменту записи в него следующих значений.

  • Бит 2 – ADC12TOVIE (Time Overflow Interrupt Enable) – разрешение прерывания по переполнению времени выборки АЦП. Установка/сброс этого бита разрешает/запрещает прерывание, возникающее в случае, если до завершения текущего преобразования затребована другая выборка-преобразование.

  • Бит 1 – ENC (Enable Conversion) – разрешение преобразования. Установка/сброс этого бита разрешает/запрещает преобразование АЦП.

  • Бит 0 – ADC12SC (Start Conversion) – программный старт преобразования. Установка этого бита вызывает старт преобразования АЦП в том случае, если поле SHS регистра ADC12CTL1 установлено в 0. Если для формирования периода выборки используется таймер TSH, бит сбрасывается автоматически, в противном случае этот бит должен сбрасываться программно. В этом случае, время, в течении которого этот бит удерживается в 1, будет определять период выборки внешнего сигнала.

Примечание. Биты с 4 по 15 этого регистра могут быть модифицированы только, если бит ENC=0.

    • ADC12CTL1 (Control 1) – содержат биты управления АЦП.

15 12 11 10 9 8

CSTARTADDR

SHS 1, 0

SHP

ISSH

7 5 4 3 2 1 0

ADC12DIV 2,1,0

ADC12SSEL 1,0

CONSEQ 1,0

ADC12BUSY

  • Биты 15…12 – CSTARTADDR (Conversion Start Address) – стартовый адрес преобразования. Задает номер пары регистров – ADC12MEMx и ADC12MCTLx, начиная с которых, будет производиться преобразование.

  • Биты 11,10 – SHS (Sample/Hold Source Select) – выбор источника выборки/хранения.

SHS1

SHS0

Источник

0

0

Бит ADC12SC

0

1

Выход TACC1

1

0

Выход TBCC0

1

1

ВыходTBCC1

  • Бит 9 – SHP (Sample/Hold Pulse mode) – выбор режима выборки. Установка/сброс этого бита разрешает/запрещает использование таймера TSH.

  • Бит 8 – ISSH (Invert Signal Sample/Hold) – инвертирование сигнала выборки/хранения. Установка этого бита инвертирует сигнал, генерируемый источником, определенным битами SHS этого регистра.

  • Биты 7,6,5 – ADC12DIV (Divider) – делитель для частоты ADC12CLK. Состояние этих бит задают коэффициент деления тактовой частоты, определенной битами ADC12SSEL этого регистра.

ADC12DIV2

ADC12DIV1

ADC12DIV0

Коэф.делен.

0

0

0

1 / 1

0

0

1

1 / 2

0

1

0

1 / 3

0

1

1

1 / 4

1

0

0

1 / 5

1

0

1

1 / 6

1

1

0

1 / 7

1

1

1

1 / 8

  • Биты 4,3 – ADC12SSEL (Source Select) – определяют источник тактирования АЦП.

ADC12SSEL1

ADC12SSEL0

Источник

0

0

ADC12OSC

0

1

ACLK

1

0

MCLK

1

1

SMCLK

  • Биты 2,1 – CONSEQ (Conversion Sequence) – последовательность преобразования. Биты определяют режим преобразования АЦП.

CONSEQ1

CONSEQ0

Режим

0

0

Однократный одноканальный

0

1

Однократный многоканальный

1

0

Повторяющийся одноканальный

1

1

Повторяющийся многоканальный

  • Бит 0 – ADC12BUSY – индицирует активность АЦП, доступен только по чтению. Устанавливается аппаратно, если АЦП находится в состоянии выборки или преобразования, в противном случае – сбрасывается.

Примечание. Биты с 3 по 15 этого регистра могут быть модифицированы только если бит ENC=0.

    • ADC12MEMx (Memory) – регистры буферной памяти АЦП, предназначенные для сохранения результатов преобразования. Результат 12-ти разрядного преобразования АЦП сохраняются в младших битах регистров. Биты 15…12 всегда читаются как 0.

    • ADC12MCTLx (Memory Control) – регистры управления буферной памятью АЦП. 8-ми разрядные регистры, содержащие номер канала, источник опоры и признак конца последовательности для соответствующего регистра ADC12MEMx.

7 6 4 3 0

EOS

SREF 2,1,0

INCH

  • Бит 7 – EOS (End Of Sequence) – конец последовательности. Для многоканальных режимов логическая 1, установленная в этом бите, задает последнее преобразовании в серии.

  • Биты 6,5,4 – SREF (Select Reference) – выбор опоры. Задают тип опорного напряжения АЦП для данного преобразования.

SREF2

SREF1

SREF0

Опора

0

0

0

Vr+ = AVcc; Vr-=AVss

0

0

1

Vr+ =VREF+; Vr-=AVss

0

1

0

Vr+ = VeREF+; Vr-=AVss

0

1

1

Vr+ = VeREF+; Vr-=AVss

1

0

0

Vr+ = AVcc; Vr-=VREF-

1

0

1

Vr+ =VREF+; Vr-= VREF-

1

1

0

Vr+ = VeREF+; Vr-= VREF-

1

1

1

Vr+ = VeREF+; Vr-= VREF-

  • Биты 3…0 – INCH (Input Channel) – входной канал. Эти биты задают физический канал, напряжение которого будет сохранено в соответствующем регистре ADC12MEMx.

INCH

Канал

0000

A0

0001

A1

0010

A2

0011

A3

0100

A4

0101

A5

0110

A6

0111

A7

1000

VeREF+

1001

VREF-

1010

Температ. датчик

1011

(AVcc-AVss)/2

1100

(AVcc-AVss)/2

1101

(AVcc-AVss)/2

1110

(AVcc-AVss)/2

1111

(AVcc-AVss)/2

    • ADC12IE (Interrupt Enable) – разрешение прерывания. Регистр содержит 16 битов разрешения прерывания для записи результатов преобразования в регистры ADC12MEMx. Бит 0 – соответствует записи в регистр ADC12MEM0, бит 1 – в регистр ADC12MEM1 и т.д. Логическая 1 в битах – разрешает, а 0 - запрещает прерывание.

    • ADC12IFG (Interrupt Flag) – флаги прерывания. Регистр содержит 16 флагов, которые устанавливаются аппаратно при записи результата преобразования в соответствующий регистр ADC12MEMx. Сбрасываются аппаратно при чтении соответствующего регистра ADC12MEMx или программно.

    • ADC12IV (Interrupt Vector) – регистр идентификации прерывания. В том случае, если возникают условия для запроса прерывания, в этом регистре генерируется код, позволяющий определить индекс источника прерывания – переполнение АЦП или установка флагов в регистре ADC12IFG. Флаги переполнения автоматически сбрасываются после чтения ADC12IV. В том случае, если имеется несколько установленных флагов требования прерывания, в регистр подставляется код источника прерывания с более высоким приоритетом. После вычитывания содержимого регистра, в него подставляется код следующего источника прерывания.

Код ADC12IV

Источник

Приоритет

00h

Нет прерываний

02h

Память не вычитана

Высший

04h

Запрос до окончания преобразования

06h

Запись в ADC12MEM0

08h

Запись в ADC12MEM1

0Ah

Запись в ADC12MEM2

0Ch

Запись в ADC12MEM3

0Eh

Запись в ADC12MEM4

10h

Запись в ADC12MEM5

12h

Запись в ADC12MEM6

14h

Запись в ADC12MEM7

16h

Запись в ADC12MEM8

18h

Запись в ADC12MEM9

1Ah

Запись в ADC12MEM10

1Ch

Запись в ADC12MEM11

1Eh

Запись в ADC12MEM12

20h

Запись в ADC12MEM13

22h

Запись в ADC12MEM14

24h

Запись в ADC12MEM15

Низший

Техника работы с регистром ADC12IV аналогична регистру TAIV (см. п. 3.7)

ПРИМЕР

Организовать измерение напряжений подключенных к выводам A0, A2, A3 и A6. Тактирование от SMCLK – 8MHz, опора – встроенная 2.5V, выходное сопротивление источников A0, A2 и A6 – 1 kOm, A3 – 50 kOm. Измеренные напряжения, выраженные в милливольтах, записать в ОЗУ, начиная с адреса 200h.

Для нормального тактирования АЦП необходимо установить частоту, не выше 6.3 MHz. Поэтому необходимо частоту SMCLK разделить на 2, частоты для тактирования – 4 MHz.

Рассчитаем время выборки, необходимое для источников 1kOm

t1 = 9.011* (1+2)*103 * 40 * 10-12 + 800 * 10-9 ≈ 2 µs

Это время, выраженное в тактах АЦП составит

N1=t1 * 4 MHz = 2* 4 = 8

Значение N1=8 соответствует коду 0001b поля SHT регистра ADC12CTL0.

Рассчитаем время выборки, необходимое для источников 50kOm

t2 = 9.011* (50+2)*103 * 40 * 10-12 + 800 * 10-9 ≈ 20 µs

Время t2, выраженное в тактах SMCLK составит

N2 = t2 * 4 MHz = 20 * 4 = 80

Значение N2=80 соответствует коду 0101b поля SHT регистра ADC12CTL0.

Измерение будем проводить серией из 4-х преобразований (однократный многоканальный режим, множественный выбор/преобразование), с программным стартом. Т.к. имеется возможность установить разное время захвата для групп буферной памяти ADC12MEM0 – 7 и ADC12MEM8 – 15, распределим буферную память следующим образом:

- ADC12MEM5 – для канала A0, время захвата 2 µs;

- ADC12MEM6 – для канала A2, время захвата 2 µs;

- ADC12MEM7 – для канала A6, время захвата 2 µs;

- ADC12MEM8 – для канала A3, время захвата 20 µs, последнее измерение в серии.

Для расчета напряжений, выраженных в милливольтах, воспользуемся соотношением:

V = N*REF/4096

где

V – входное напряжение;

N – результирующий код преобразования;

REF – напряжение опоры.

Т.к. величина V должна быть выражена в милливольтах, значение REF подставим так же в милливольтах. Тогда

V = N * 2500 / 4096 = N * 2500 / 212

Вместо операции деления можно использовать сдвиг вправо 32-х битного результата умножения на 12 бит. Тот же результат можно более быстро получить с помощью 4-х кратного сдвига влево 32-х битного результата умножения и отбрасывания младших 16-ти бит. Однако, более эффективно, расчет по приведенной формуле можно выполнить следующим образом. Заранее вычисляется коэффициент

k= 216 * 2500 / 212 = 24 * 2500 = 40000

При расчете необходимо код преобразования АЦП умножить на 40000, тогда старшее слово продукта умножения даст требуемое значение.

#include <msp430x14x.h>

. . .

; SHT1=5, SHT0 =1, MSC=1, REF2_5V=1, REFON=1, ADC12ON=1, ENC=0

mov #51F0h, &ADC12CTL0

; CSTARTADDR=5, SHS=0, SPH=1, ADC12DIV=1,ADC12SSEL=3, CONSEQ=1

mov #523Ah, &ADC12CTL1

mov.b #10h, &ADC12MCTL5 ; SREF=1, INCH=0, EOS=0

mov.b #12h, &ADC12MCTL6 ; SREF=1, INCH=2, EOS=0

mov.b #16h, &ADC12MCTL7 ; SREF=1, INCH=6, EOS=0

mov.b #93h, &ADC12MCTL8 ; SREF=1, INCH=3, EOS=1

clr &ADC12IFG ; на всякий случай сбрасываем флаги

bis #3, &ADC12CTL0 ; старт АЦП : ENC=1, ADC12SC=1

mov #ADC12MEM5, R4 ; указатель на ADC12MEM5

mov #200h, R5 ; указатель на ОЗУ

wait: bit #100h, &ADC12IFG ; преобразование завершено?

jz wait ; если нет - цикл

mov #40000, &MPY

store: mov @R4+, &OP2 ; расчет напряжения

mov &RESHI, R12 ; читаем результат

rla &RESLO ; округляем до целого

adc R12

mov R12, 0(R5) ; сохраняем значение напряжения в ОЗУ

incd R5 ; наращиваем указатель ОЗУ

cmp #208h, R5 ; все данные записаны в ОЗУ?

jne store ; если нет -цикл

. . .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]