Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная_записка.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
5.24 Mб
Скачать
        1. Конфигурирование аналого-цифровых преобразователей adc

Регистр ADC0CN:

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Значение при сбросе:

00000000

AD0EN

AD0TM

AD0INT

AD0BUSY

AD0CM1

AD0CM0

AD0WINT

-

Бит 7

Бит 6

Бит 5

Бит 4

Бит 3

Бит 2

Бит 1

Бит 0

Бит 7: AD0EN - бит включения АЦП0

0 – АЦП0 отключен, находится в режиме пониженного энергопотребления

1 - АЦП0 включен, находится в активном режиме и готов к преобразованию

данных или калибровке

Бит 6: AD0TM – бит установки режима слежения АЦП0

0 – когда АЦП0 включен, слежение осуществляется всегда, за исключением

момента преобразования

1 - режим слежения определяется битами AD0CM1-0

Бит 5: AD0INT – флаг прерывания от АЦП0 (устанавливается при завершении преобразования). Этот флаг должен быть сброшен программно.

0 – АЦП0 не закончил преобразование данных

1 - АЦП0 закончил преобразование данных

Бит 4: AD0BUSY – бит занятости АЦП0

Чтение:

0 – преобразование данных завершено или в данный момент не осуществляется

1 - идет процесс преобразования данных

Запись:

0 – не оказывает никакого влияния

1 - инициирует запуск преобразования АЦП0, если биты ADC0CM1-0 = 00b

Биты 3-2: AD0CM1-0 – биты выбора режима запуска преобразования АЦП0

Если AD0TM = 0

00 – запуск преобразования осуществляется установкой в 1 бита AD0BUSY

01 - запуск преобразования осуществляется при переполнении Таймера 3

10 - запуск преобразования осуществляется нарастающим фронтом сигнала CNVSTR0

11 - запуск преобразования осуществляется при переполнении Таймера 2

Если AD0TM = 1

00 – слежение (выборка) начинается в момент установки в 1 бита AD0BUSY, после

истечения периода слежения начинается преобразование данных

01 - слежение (выборка) начинается при переполнении Таймера 3, после истечения

периода слежения начинается преобразование данных

10 – преобразование АЦП0 запускается нарастающим фронтом сигнала CNVSTR0

11 - слежение (выборка) начинается при переполнении Таймера 2, после истечения

периода слежения начинается преобразование данных

Бит 1: AD0WINT - флаг прерывания от детектора диапазона АЦП0 (сбрасывается программно)

0 – не зафиксировано соответствия преобразованных данных заданному диапазону

1 - зафиксировано соответствия преобразованных данных заданному диапазону

Бит 0: зарезервирован. Необходимо записать 0b.

Регистр REF0CN:

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Значение при сбросе:

00000000

-

-

-

-

-

-

BIASE0

REFBE0

Бит 7

Бит 6

Бит 5

Бит 4

Бит 3

Бит 2

Бит 1

Бит 0

Бит 7-2: зарезервированы, читаются как b000000, необходимо записать b000000.

Бит 1: BIASE0 – бит включения генератора напряжения смещения АЦП0 (если АЦП используется, то этот бит должен быть установлен в 1)

0 – внутренний генератор напряжения смещения отключен

1 - внутренний генератор напряжения смещения включен

Бит 0: REFBE0 – бит включения внутреннего буферного усилителя АЦП0

0 - внутренний буферный усилитель АЦП0 отключен

1 - внутренний буферный усилитель АЦП0 включен

Конфигурирование АЦП происходит в функции ADC_Init() по следующему алгоритму:

  1. Запись значения 0xC4 (b11000100) в регистр ADC0CN – включение ADC0, режим слежения определяется битами 01, т.е. запуск преобразования осуществляется при переполнении Таймера3;

  2. Запись значения 0x03 (b00000011) в регистр REF0CN – включение генератора напряжения смещения ADC0 и включение внутреннего буферного усилителя, внутреннее опорное напряжение подается на вывод VREF0;

  3. Задержка для стабилизации генератора опорного напряжения

  4. Запись значения 0x00 в регистр ADC0CF – установка в качестве периода преобразования АЦП0 Tconv = 21*TSYSCLK

  5. Запись значения 0x00 в регистр AMX0SL – выбор однофазного режима работы ADC0;

  6. Проверка переменной ADC_Mode, если выбран дифференциальный режим работы АЦП, то повторить пп.1-4 для соответствующих регистров ADC1, а также записать значение 0x40(b1000000) в регистры AMX0SL и AMX1SL (установка в '1' бита DIFFSEL – выбор дифференциального режима работы).

Описанный алгоритм иллюстрирует следующий код:

ADC0CN = 0xC4; // ADC0 Enabled, Timer3 start-of-conversion

// track 16 SAR clocks before data conversion

// upon Timer3 OV. DMA will enable ADC as needed

REF0CN = 0x03; // ADC0: turn on bias generator and internal reference

for(i=0;i<10000;i++); // Wait for Vref to settle

ADC0CF = 0x00; // Setting Conversion Clock Period Bits

// (ADC0SC[3..0]=0000, Tcon= 21*SYSCLK)

//ADC mode (ADC0 / DIFF)

if (ADC_Mode == 's')

AMX0SL = 0x00; // Single-ended mode, ADC0

else if (ADC_Mode=='d')

{

AMX0SL = 0x40; // Differential mode

SFRPAGE = ADC1_PAGE; // Switch to ADC1 Page

ADC1CN = 0xC4; // ADC1 Enabled, Timer3 start-of-conversion

// track 16 SAR clocks before data conversion

// upon Timer3 OV. DMA will enable ADC as needed

REF1CN = 0x03; // ADC1: turn on bias generator and internal reference

for(i=0;i<10000;i++); // Wait for Vref to settle

ADC1CF = 0x00; // Setting Conversion Clock Period Bits

}