F40-43a (1041604), страница 16
Текст из файла (страница 16)
АЦП0 находится в активном режиме и готов к преобразованию данных.Бит 6: AD0TM: Бит установки режима слежения АЦП00: Когда АЦП0 включен, слежение осуществляется всегда, за исключением момента преобразования.1: Режим слежения определяется битами AD0CM1-0.Бит 5: AD0INT: Флаг прерывания от АЦП0 (устанавливается при завершении преобразования)Этот флаг должен быть сброшен программно.0: АЦП0 не закончил преобразование данных (с момента последнего обнуления этого флага)1: АЦП0 закончил преобразование данныхБит 4: AD0BUSY: Бит занятости АЦП0Чтение:0: Преобразование данных завершено или в данный момент преобразование не осуществляется.При аппаратном обнулении этого бита флаг AD0INT устанавливается в 1.1: Идет процесс преобразования данныхЗапись0: Не вызывает никаких действий1: Инициирует запуск преобразования АЦП0, если биты AD0CM1-0 = 00bБиты 3-2: AD0CM1-0: Биты выбора режима запуска преобразования АЦП0Если AD0TM = 0:00: Запуск преобразования осуществляется установкой в 1 бита AD0BUSY.01: Запуск преобразования осуществляется при переполнении Таймера 3.10: Запуск преобразования осуществляется нарастающим фронтом внешнего сигнала CNVSTR.11: Запуск преобразования осуществляется при переполнении Таймера 2.Если AD0TM = 1:00: слежение (выборка) начинается в момент установки в 1 бита AD0BUSY и длится 3 периодасигнала дискретизации АЦП0, затем начинается преобразование данных.01: слежение (выборка) начинается при переполнении Таймера 3 и длится 3 периода сигналадискретизации АЦП0, затем начинается преобразование данных.10: слежение (выборка) происходит лишь при низком уровне сигнала на входе CNVSTR;преобразование запускается нарастающим фронтом сигнала на входе CNVSTR.11: слежение (выборка) начинается при переполнении Таймера 2 и длится 3 периода сигналадискретизации АЦП0; затем начинается преобразование данных.Бит 1: AD0WINT: Флаг прерывания от детектора диапазона АЦП0 (сбрасывается программно)0: Преобразованные данные не соответствуют заданному диапазону (с момента последнегообнуления этого флага).1: Преобразованные данные соответствуют заданному диапазонуБит 0: AD0LJST: Бит выравнивания результата преобразования0: Данные в регистровой паре ADC0H:ADC0L выровнены вправо1: Данные в регистровой паре ADC0H:ADC0L выровнены влево77Ред.
1.3C8051F040/1/2/3Рисунок 6.14. ADC0H: Регистр старшего байта слова данных АЦП0R/WR/WR/WR/WR/WR/WR/WR/WЗначениепри сбросе:Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0SFR Адрес: 0xBFSFR страница: 000000000Бит 7Биты 7-0: Старшие биты слова данных АЦП0.Для AD0LJST = 0: Биты 7-2 являются знаковым расширением бита 1.
Биты 1-0 представляютсобой старшие 2 бита 10-разрядного слова данных АЦП0.Для AD0LJST = 1: Биты 7-0 являются старшими 8 битами 10-разрядного слова данных АЦП0.Рисунок 6.15. ADC0L: Регистр младшего байта слова данных АЦП0R/WR/WR/WR/WR/WR/WR/WR/WЗначениепри сбросе:Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0SFR Адрес: 0xBESFR страница: 000000000Бит 7Биты 7-0: Младшие биты слова данных АЦПДля AD0LJST = 0: Биты 7-0 являются младшими 8 битами 10-разрядного слова данных АЦП0.Для AD0LJST = 1: Биты 7-6 представляют собой младшие 2 бита 10-разрядного слова данныхАЦП0.
Биты 5-0 всегда читаются как ‘0’.Ред. 1.378C8051F040/1/2/3Рисунок 6.16. Пример слова данных АЦП010-разрядный результат преобразования АЦП0 получается следующим образом:ADC0H[1:0]:ADC0L[7:0], если AD0LJST = 0(в случае преобразования дифференциального сигнала биты ADC0H[7:2] будут знаковымрасширением бита ADC0H.1, в случае одиночного сигнала ADC0H[7:2] = 000000b)ADC0H[7:0]:ADC0L[7:6], если AD0LJST = 1(ADC0L[5:0] = 000000b)Пример: Порядок записи результата преобразования, вход AIN0 работает в одиночном режиме(AMX0CF=0x00, AMX0SL=0x00)AIN0 – AGND(Вольты)VREF * (1023/1024)VREF/2VREF * (511/1024)0ADC0H:ADC0L(AD0LJST = 0)0x03FF0x02000x01FF0x0000ADC0H:ADC0L(AD0LJST = 1)0xFFC00x80000x7FC00x0000Пример: Порядок записи результата преобразования, входы AIN0-AIN1 работают вдифференциальном режиме (AMX0CF=0x01, AMX0SL=0x00)AIN0 – AIN1(Вольты)VREF * (511/512)VREF/2VREF * (1/512)0- VREF * (1/512)- VREF/2- VREFADC0H:ADC0L(AD0LJST = 0)0x01FF0x01000x00010x00000xFFFF(-1)0xFF00(-256)0xFE00(-512)ADC0H:ADC0L(AD0LJST = 1)0x7FC00x40000x00400x00000xFFC00xC0000x8000Для AD0LJST = 0:nCode = Vin x (Gain/VREF) x 2 ;‘n’ = 10, если входы работают в одиночном режиме;‘n’ = 9, если входы работают в дифференциальном режиме.79Ред.
1.3C8051F040/1/2/36.4. Программируемый детектор диапазона АЦП0Программируемый детектор диапазона АЦП0 постоянно проверяет выходные данные АЦП0 насоответствие заданному пользователем диапазону значений и уведомляет систему при обнаружениинесоответствия. Это особенно эффективно в управляемых прерываниями системах, т.к. позволяет уменьшитьобъем кода и улучшить производительность при одновременном уменьшении времени реакции системы.
Флагпрерывания от детектора диапазона (бит AD0WINT в регистре ADC0CN) можно использовать также в режимепрограммного опроса. Старшие и младшие байты граничных значений загружаются в регистры нижней иверхней границ диапазона АЦП0 (ADC0GTH, ADC0GTL, ADC0LTH и ADC0LTL).
На рис.6.21, рис.6.22,рис.6.23 и рис.6.24 приведены примеры использования детектора диапазона. Следует отметить, что флагпрерывания от детектора диапазона может устанавливаться как при попадании, так и при непопаданиирезультата преобразования в заданный диапазон, в зависимости от значений, записанных в регистры ADC0GTxи ADC0LTx.Рисунок 6.17.
ADC0GTH: Регистр старшего байта нижней границы диапазонаR/WR/WR/WR/WR/WR/WR/WR/WЗначениепри сбросе:Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0SFR Адрес: 0xC5SFR страница: 011111111Бит 7Биты 7-0: Старший байт нижней границы диапазона АЦП0.Рисунок 6.18. ADC0GTL: Регистр младшего байта нижней границы диапазонаR/WR/WR/WR/WR/WR/WR/WR/WЗначениепри сбросе:Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0SFR Адрес: 0xC4SFR страница: 011111111Бит 7Биты 7-0: Младший байт нижней границы диапазона АЦП0.Рисунок 6.19.
ADC0LTH: Регистр старшего байта верхней границы диапазонаR/WR/WR/WR/WR/WR/WR/WR/WЗначениепри сбросе:Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0SFR Адрес: 0xC7SFR страница: 000000000Бит 7Биты 7-0: Старший байт верхней границы диапазона АЦП0.Рисунок 6.20. ADC0LTL: Регистр младшего байта верхней границы диапазонаR/WR/WR/WR/WR/WR/WR/WR/WЗначениепри сбросе:Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0SFR Адрес: 0xC6SFR страница: 000000000Бит 7Биты 7-0: Младший байт верхней границы диапазона АЦП0.Ред. 1.380C8051F040/1/2/3Рисунок 6.21.
Пример использования детектора диапазона 10-разрядного АЦП0(данные выровнены вправо, вход одиночный)Входное напряжение(AD0 - AGND)REF x (1023/1024)Слово данныхАЦПВходное напряжение(AD0 - AGND)REF x (1023/1024)0x03FFСлово данныхАЦП0x03FFAD0WINTне изменяетсяAD0WINT=10x0201REF x (512/1024)0x02000x0201REF x (512/1024)ADC0LTH:ADC0LTL0x01FF0x02000x01FFAD0WINT=10x0101REF x (256/1024)0x01000x0101REF x (256/1024)ADC0GTH:ADC0GTL0x00FF0x0100AD0WINTне изменяетсяADC0LTH:ADC0LTL0x00FFAD0WINTне изменяется0ADC0GTH:ADC0GTLAD0WINT=10x000000x0000Задано:Задано:AMX0SL = 0x00, AMX0CF = 0x00, AD0LJST = 0,ADC0LTH:ADC0LTL = 0x0200,ADC0GTH:ADC0GTL = 0x0100.По окончании преобразования будет инициированопрерывание от детектора диапазона (AD0WINT=1), еслиполученное слово данных АЦП0 < 0x0200 и > 0x0100.AMX0SL = 0x00, AMX0CF = 0x00, AD0LJST = 0,ADC0LTH:ADC0LTL = 0x0100,ADC0GTH:ADC0GTL = 0x0200.По окончании преобразования будет инициированопрерывание от детектора диапазона (AD0WINT=1), еслиполученное слово данных АЦП0 < 0x0100 или > 0x0200.81Ред.
1.3C8051F040/1/2/3Рисунок 6.22. Пример использования детектора диапазона 10-разрядного АЦП0(данные выровнены вправо, вход дифференциальный)Входное напряжение(AD0 - AD1)REF x (511/512)Слово данныхАЦПВходное напряжение(AD0 - AD1)0x01FFREF x (511/512)Слово данныхАЦП0x01FFAD0WINTне изменяетсяAD0WINT=10x0101REF x (256/512)0x01000x0101ADC0LTH:ADC0LTLREF x (256/512)0x00FF0x01000x00FFAD0WINT=10x0000REF x (-1/512)0xFFFF0x0000ADC0GTH:ADC0GTLREF x (-1/512)0xFFFE0xFFFFAD0WINTне изменяетсяADC0LTH:ADC0LTL0xFFFEAD0WINTне изменяется-REFADC0GTH:ADC0GTLAD0WINT=10xFE00-REF0xFE00Задано:Задано:AMX0SL = 0x00, AMX0CF = 0x01, AD0LJST = 0,ADC0LTH:ADC0LTL = 0x0100,ADC0GTH:ADC0GTL = 0xFFFF.AMX0SL = 0x00, AMX0CF = 0x01, AD0LJST = 0,ADC0LTH:ADC0LTH = 0xFFFF,ADC0GTH:ADC0GTL = 0x0100.По окончании преобразования будет инициированопрерывание от детектора диапазона (AD0WINT=1), еслиполученное слово данных АЦП0 < 0x0100 и > 0xFFFF.(используется дополнительный код, т.е.
0xFFFF = -1.)По окончании преобразования будет инициированопрерывание от детектора диапазона (AD0WINT=1), еслиполученное слово данных АЦП0 < 0xFFFF или > 0x0100.(используется дополнительный код, т.е. 0xFFFF = -1.)Ред. 1.382C8051F040/1/2/3Рисунок 6.23. Пример использования детектора диапазона 10-разрядного АЦП0(данные выровнены влево, вход одиночный)Входное напряжение(AD0 - AGND)REF x (1023/1024)Слово данныхАЦПВходное напряжение(AD0 - AGND)REF x (1023/1024)0xFFC0Слово данныхАЦП0xFFC0AD0WINTне изменяетсяAD0WINT=10x8040REF x (512/1024)0x80000x8040ADC0LTH:ADC0LTLREF x (512/1024)0x7FC00x80000x7FC0AD0WINT=1REF x (256/1024)0x40400x4000ADC0GTH:ADC0GTLREF x (256/1024)0x3FC00x40400x4000AD0WINTне изменяетсяADC0LTH:ADC0LTL0x3FC0AD0WINTне изменяется0ADC0GTH:ADC0GTLAD0WINT=10x000000x0000Задано:Задано:AMX0SL = 0x00, AMX0CF = 0x00, AD0LJST = 1,ADC0LTH:ADC0LTL = 0x8000,ADC0GTH:ADC0GTL = 0x4000.AMX0SL = 0x00, AMX0CF = 0x00, AD0LJST = 1,ADC0LTH:ADC0LTL = 0x4000,ADC0GTH:ADC0GTL = 0x8000.По окончании преобразования будет инициированопрерывание от детектора диапазона (AD0WINT=1), еслиполученное слово данных АЦП0 < 0x8000 и > 0x4000.По окончании преобразования будет инициированопрерывание от детектора диапазона (AD0WINT=1), еслиполученное слово данных АЦП0 < 0x4000 или > 0x8000.83Ред.
1.3C8051F040/1/2/3Рисунок 6.24. Пример использования детектора диапазона 10-разрядного АЦП0(данные выровнены влево, вход дифференциальный)Входное напряжение(AD0 - AD1)REF x (511/512)Слово данныхАЦПВходное напряжение(AD0 - AD1)0x7FC0REF x (511/512)Слово данныхАЦП0x7FC0AD0WINTне изменяетсяAD0WINT=10x2040REF x (128/512)0x20000x2040ADC0LTH:ADC0LTLREF x (128/512)0x1FC00x20000x1FC0AD0WINT=1REF x (-1/512)0x00000xFFC0ADC0GTH:ADC0GTLREF x (-1/512)0xFF800x00000xFFC0AD0WINTне изменяетсяADC0LTH:ADC0LTL0xFF80AD0WINTне изменяется-REFADC0GTH:ADC0GTLAD0WINT=10x8000-REFЗадано:AMX0SL = 0x00, AMX0CF = 0x01, AD0LJST = 1,ADC0LTH:ADC0LTL = 0x2000,ADC0GTH:ADC0GTL = 0xFFC0.По окончании преобразования будет инициированопрерывание от детектора диапазона (AD0WINT=1), еслиполученное слово данных АЦП0 < 0x2000 и > 0xFFC0.(используется дополнительный код, т.е.