Инструменты пользователя

Инструменты сайта


prog:debug:timeadc

Измерение времени преобразования АЦП в МК 1886ВЕ61У

Программа для МК 1886ВЕ61У TimeADC, позволяющая измерить время преобразования, приведена в архиве, вместе с таблицей Excel, необходимой для расчётов.

Модуль АЦП может работать в спящем режиме микроконтроллера (SLEEP), при этом в качестве источника тактовых импульсов для АЦП должен быть выбран внутренний RC генератор. В случае выбора другого источника тактирования, АЦП при переходе в режим SLEEP прервёт преобразование и выключится.

Частота внутреннего RC генератора не обладает высокой точностью и зависит от температуры, напряжения питания, технологического разброса и прочих факторов. Поэтому в общем случае время преобразование, зависящее от частоты RC генератора, должно измеряться при определённых условиях для каждого МК отдельно. Согласно спецификации, для достоверного аналогово-цифрового преобразования источник импульсов должен иметь период (TAD) не менее 1,6 мкс и не более 8 мкс. Встроенный RC генератор обеспечивает выполнение этого условия, однако точный период не нормируется.

Методика измерения времени преобразования, а соответственно и периода тактирования внутреннего RC генератора, приведена ниже. Для измерения понадобится отладочная плата на МК 1886ВЕ61У, программатор и осциллограф. Программа приведена в архиве выше. Здесь будет рассмотрен только основной цикл выполнения преобразования.

Методика измерения времени преобразования АЦП

1. Подключить программатор к плате и загрузить программу TimeADC в МК с помощью среды разработки IDE1886.

2. Отключить программатор, подключить питание к плате, подключить осциллограф к выводу PD2 и запустить выполнение программы.

3. Измерить длительность 5 различных импульсов.

4. Внести полученные значения в таблицу Excel, получить значения преобразования АЦП и частоты тактирования RC генератора.

Описание методики измерения

Для определения времени преобразования модуля АЦП в программе проводится 5 различных циклов по 20 аналогово-цифровых преобразований. На время каждого цикла подаётся логическая 1 на вывод PD2. Длительность этого импульса можно легко измерить с помощью осциллографа.

Время одного преобразования состоит из двух времён: времени преобразования (tпреобр) и задержки до начала следующего преобразования (tзадержки > 2*TAD). Общее измеренное время цикла:

tизм=(tпреобр + tзадержки)*20

Листинг цикла преобразований АЦП:

            MOVLB Bank1				
            BCF	DDRD,2	             ; установить на выход			
            BSF	PORTD,2	             ; включение порта PORTD, 2=1
            
            MOVLB       06H          ; переход в банк 6
            GOTO ACP1
            
;******************************************************************************          
            ORG         30H          ; пропускаем область прерываний
;******************************************************************************
ACP1:       
            MOVFP       Loop, Capas  ; Capas = Loop;
Chold:      DECFSZ      Capas,1      ; задержка до начала преобразования tзадержки
            GOTO        Chold
            
            BSF         ADCON0,2     ; старт преобразования
WD:         BTFSC       ADCON0,2     ; ожидание окончания отцифровки            
            GOTO        WD
            
Chold1:     DECFSZ      Period,1     ; счётчик циклов преобразований
            GOTO        ACP1
            
            MOVLB	Bank1				
            BCF	DDRD,2				
            BCF	PORTD,2	; выключение порта PORTD,2=0

20 преобразований необходимы для вычисления лучшей точности времени преобразования. Задержка до начала следующего преобразования (tзадержки) должна быть не менее 2*TAD. Максимальное время TAD = 8 мкс, следовательно, tзадержки должно быть не менее 16 мкс. Выполнения одной итерации в цикле Chold занимает 3 цикла процессора (1 цикл команда DECFSZ и 2 цикла команда GOTO). Выполнения 1 цикла процессора занимает 4 такта. Следовательно, выполнение 1 итерации в цикле Chold займёт 12 тактов. На отладочной плате установлен резонатор на 16 МГц, период составляет 62.5 нс. Для задержки в 16 мкс необходимо 22 итерации цикла Chold. Мы возьмём с запасом 25 итераций, что составляет 18,75 мкс.

В уравнении для измеренного времени преобразований 2 неизвестных величины: tпреобр и tзадержки.

tизм=(tпреобр + tзадержки)*20

Поэтому будем варьировать tзадержки и по полученным измерениям составим и решим систему уравнений. Решать будем методом наименьших квадратов, так как зависимость линейная. Всего 5 циклов, каждый последующий цикл будет увеличивать tзадержки на 25 итераций. Изображение, полученное с осциллографа:

Для получения времени преобразования АЦП и частоты тактирования RC генератора, введём измеренные значения импульсов в таблицу Excel, которая находится в архиве в начале статьи. В моём случае получилось значение tзадержки = 18.8 мкс, время преобразования = 34.6 мкс, частота RC генератора = 404,6 кГц.

prog/debug/timeadc.txt · Последнее изменение: 2022/04/03 23:09 (внешнее изменение)