Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Stenin Lab / C8051F60-67-устройство МК.pdf
Скачиваний:
150
Добавлен:
10.02.2015
Размер:
5.19 Mб
Скачать

C8051F060/1/2/3/4/5/6/7

5.5. Программируемый детектор диапазона АЦП0

Программируемый детектор диапазона АЦП0 постоянно проверяет выходные данные АЦП0 на соответствие заданному пользователем диапазону значений и уведомляет систему при обнаружении несоответствия. Это особенно эффективно в управляемых прерываниями системах, т.к. позволяет уменьшить объем кода и улучшить производительность при одновременном уменьшении времени реакции системы. Флаг прерывания от детектора диапазона (бит AD0WINT в регистре ADC0CN) можно использовать также в режиме программного опроса. Старшие и младшие байты граничных значений загружаются в регистры нижней и верхней границ диапазона АЦП0 (ADC0GTH, ADC0GTL, ADC0LTH и ADC0LTL). Детектор диапазона можно использовать как в однофазном, так и в дифференциальном режиме работы АЦП. В дифференциальном режиме для сравнения используется общий результат АЦП0 и АЦП1, который содержится в регистрах данных АЦП0. На рис.5.28 и рис.5.29 приведены примеры использования детектора диапазона. Следует отметить, что флаг прерывания от детектора диапазона может устанавливаться как при попадании, так и при непопадании результата преобразования в заданный диапазон, в зависимости от значений, записанных в регистры ADC0GTx

и ADC0LTx.

Рисунок 5.24. ADC0GTH: Регистр старшего байта нижней границы диапазона

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Значение

 

 

 

 

 

 

 

 

при сбросе:

 

 

 

 

 

 

 

 

11111111

Бит 7

Бит 6

Бит 5

Бит 4

Бит 3

Бит 2

Бит 1

Бит 0

SFR Адрес: 0xC5

 

 

 

 

 

 

 

 

SFR страница: 0

Биты 7-0: Старший байт нижней границы диапазона АЦП0.

Рисунок 5.25. ADC0GTL: Регистр младшего байта нижней границы диапазона

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Значение

 

 

 

 

 

 

 

 

при сбросе:

 

 

 

 

 

 

 

 

11111111

Бит 7

Бит 6

Бит 5

Бит 4

Бит 3

Бит 2

Бит 1

Бит 0

SFR Адрес: 0xC4

 

 

 

 

 

 

 

 

SFR страница: 0

Биты 7-0: Младший байт нижней границы диапазона АЦП0.

69

Ред. 1.2

C8051F060/1/2/3/4/5/6/7

Рисунок 5.26. ADC0LTH: Регистр старшего байта верхней границы диапазона

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Значение

 

 

 

 

 

 

 

 

при сбросе:

 

 

 

 

 

 

 

 

00000000

Бит 7

Бит 6

Бит 5

Бит 4

Бит 3

Бит 2

Бит 1

Бит 0

SFR Адрес: 0xC7

 

 

 

 

 

 

 

 

SFR страница: 0

Биты 7-0: Старший байт верхней границы диапазона АЦП0.

Рисунок 5.27. ADC0LTL: Регистр младшего байта верхней границы диапазона

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Значение

 

 

 

 

 

 

 

 

при сбросе:

 

 

 

 

 

 

 

 

00000000

Бит 7

Бит 6

Бит 5

Бит 4

Бит 3

Бит 2

Бит 1

Бит 0

SFR Адрес: 0xC6

 

 

 

 

 

 

 

 

SFR страница: 0

Биты 7-0: Младший байт верхней границы диапазона АЦП0.

Ред. 1.2

70

C8051F060/1/2/3/4/5/6/7

Рисунок 5.28. Пример использования детектора диапазона 16-разрядного АЦП0 (однофазный режим работы)

 

Входное напряжение

Слово

 

Входное напряжение

Слово

 

 

 

данных

 

данных

 

 

 

(AIN0 - AIN0G)

 

АЦП0

 

(AIN0 - AIN0G)

 

АЦП0

 

 

 

REF x (65535/65536)

 

0xFFFF

 

REF x (65535/65536)

0xFFFF

 

 

 

 

 

 

 

AD0WINT

 

 

 

AD0WINT=1

 

 

 

 

 

 

не изменяется

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0x2001

 

 

 

0x2001

 

 

 

REF x (8192/65536)

 

0x2000

ADC0LTH:ADC0LTL

REF x (8192/65536)

0x2000

ADC0GTH:ADC0GTL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0x1FFF

AD0WINT=1

 

 

0x1FFF

AD0WINT

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0x1001

 

 

0x1001

не изменяется

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

REF x (4096/65536)

 

0x1000

ADC0GTH:ADC0GTL

REF x (4096/65536)

0x1000

ADC0LTH:ADC0LTL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0x0FFF

 

 

 

0x0FFF

 

 

 

 

 

 

 

AD0WINT

 

 

 

AD0WINT=1

 

 

 

 

 

 

не изменяется

 

 

 

 

 

 

0

 

 

0x0000

 

0

 

0x0000

 

 

 

Задано:

 

 

Задано:

 

 

 

 

 

 

 

 

 

 

AMX0SL = 0x00,

 

 

AMX0SL = 0x00,

 

 

 

 

ADC0LTH:ADC0LTL = 0x2000,

ADC0LTH:ADC0LTL = 0x1000,

 

 

 

ADC0GTH:ADC0GTL = 0x1000.

ADC0GTH:ADC0GTL = 0x2000.

 

По окончании преобразования будет

По окончании преобразования будет

 

инициировано прерывание от детектора

инициировано прерывание от детектора

 

диапазона (AD0WINT = ‘1’), если полученное

диапазона (AD0WINT = ‘1’), если полученное

 

слово данных АЦП0 < 0x2000 и > 0x1000.

слово данных АЦП0 > 0x2000 или < 0x1000.

 

 

 

 

 

 

 

 

 

 

 

71

Ред. 1.2

C8051F060/1/2/3/4/5/6/7

Рисунок 5.29. Пример использования детектора диапазона 16-разрядного АЦП0 (дифференциальный режим работы)

Входное напряжение

(AIN0 - AIN1)

REF x (32767/32768)

REF x (4096/32768)

REF x (-1/32768)

-REF

Слово

 

Входное напряжение

данных

 

 

(AIN0 - AIN1)

АЦП0

 

0x7FFF

 

REF x (32767/32768)

 

AD0WINT

 

 

не изменяется

 

0x1001

 

 

 

 

 

0x1000

ADC0LTH:ADC0LTL

REF x (4096/32768)

 

 

 

0x0FFF

AD0WINT=1

 

 

0x0000

 

 

 

0xFFFF

ADC0GTH:ADC0GTL

REF x (-1/32768)

 

 

 

0xFFFE

 

 

 

 

 

AD0WINT

 

 

не изменяется

 

0x8000

 

-REF

Слово

данных АЦП0

0x7FFF

 

 

AD0WINT=1

0x1001

 

0x1000

ADC0GTH:ADC0GTL

 

 

0x0FFF

AD0WINT

 

0x0000

не изменяется

 

0xFFFF

ADC0LTH:ADC0LTL

 

 

0xFFFE

 

 

 

AD0WINT=1

0x8000

 

Задано:

 

Задано:

 

AMX0SL = 0x40,

 

AMX0SL = 0x40,

ADC0LTH:ADC0LTL = 0x1000,

 

ADC0LTH:ADC0LTL = 0xFFFF,

ADC0GTH:ADC0GTL = 0xFFFF.

 

ADC0GTH:ADC0GTL = 0x1000.

По окончании преобразования будет

 

По окончании преобразования будет

инициировано прерывание от детектора

 

инициировано прерывание от детектора

диапазона (AD0WINT = ‘1’), если полученное

 

диапазона (AD0WINT = ‘1’), если полученное

слово данных АЦП0 < 0x1000 и > 0xFFFF.

 

слово данных АЦП0 < 0xFFFF или > 0x1000.

(Используется дополнительный код,

 

(Используется дополнительный код,

т.е 0xFFFF = -1).

 

т.е 0xFFFF = -1).

Ред. 1.2

72