Определение погрешности измерения длительности импульса — КиберПедия 

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Определение погрешности измерения длительности импульса

2020-04-01 227
Определение погрешности измерения длительности импульса 0.00 из 5.00 0 оценок
Заказать работу

Погрешность измерения длительности импульса, как уже говорилось выше, непосредственно связана непосредственно связана со скоростью работы МП, в свою очередь скорость которого задается тактовой частотой кварцевого резонатора.

Величина временного кванта (d) в нашем случае, равна периоду следования импульсов кварцевого резонатора(t) т.е. d=t. Измеренное значение одной мили секунды равно (в соответствии с ТЗ дискретность измерения длительности равна 1мСек):

T=t*N

Где N – число импульсов, поступивших на таймер/счетчик1.

Следовательно измеренное значение отличается от истинного на величину погрешности квантования DК=DtК:

DtК=T-Tx=N*t-Tx

где Tx – истинное значение.

Погрешность квантования зависит от величены кванта t и от моментов начала и окончания циклов измерения (см. рис.2) по отношения к импульсам кварцевого резонатора. Очевидно, что как начало и конец измерения длительности могут располагаться в любой точке между двумя соседними импульсами. В результате возникают две составляющих погрешности DtК Первая из них (Dt1 см. рис.2) положительная, так как измеренный временной интервал больше истинного его значения, а вторая Dt2 отрицательная, так как из за нее измеренный временной интервал получается больше фактического. Следовательно истинное значение временного интервала будет:

Тх=N*t-(Dt1-Dt2)= N*t-Dt1+Dt2

Pзакон распределения ошибок Dt1 и Dt2 с учетом их разных знаков представляет собой распределение Симпсона, а средне квадратическая погрешность квантования следуя указаниям [2, стр. 20] будет равна

 


 

Листинг программы расчета длительности импульса на языке ассемблер

Отладка программы была произведена с помощью отладчика-симулятора AVRSTUDIO 3.0

Код программы:

.include "8515def.inc"

.def fbinL =r22;двоичное значение, младший байт байт

.def fbinH =r23      ;двоичное значение, старший байт

.def tBCD0 =r23      ;BCD значение, цифры 1 и

.def tBCD1 =r24      ;BCD значение, цифры 3 и2

.def tBCD2 =r25      ;BCD значение, цифры 4

; Назначение выводов порта А:

;              bit 0 - поступает импульс

;                  длительность которого

;                  необходимо измерить

;        bit 1 - подключается кнопка

;               режима измерения

;             0 - измерение длительности

;                  отрицательного импульса

;             1 - измерение длительности 

;                  положительного импульса

;        bit 2 - индикация режима измерения

;             0 - (светодиод погашен)

;                  индикация режима измерения

;                  отрицательного импульса

;             1 - (светодиод светится)

;                  индикация режима измерения

;                  положительного импульса

;        bit 3 - подключается кнопка

;                  режима измерения

;                  длительности импульса в мС

;        bit 4 - подключается кнопка

;                  режима измерения

;                  длительности импульса в С

;        bit 5 - подключается светодиод

;                  режима измерения длительности

;                  импульса в мС

;        bit 6 - подключается светодиод

;                  режима измерения длительности

;                  импульса в С

 

.ORG 0

RJMP MET1

RJMP IMPULS

RJMP MET1

RJMP MET1

1: RJMP Prog

RJMP Prog

RJMP MET1

RJMP MET1

MET1: LDI R16,0x02

OUT SPH,R16; Инициализация 

LDI R16,0X10; стека

OUT SPL,R16

LDI R16,0B11100100

OUT DDRA,r16; НАСТРАИВАЕМ ЛИНИ b 0,1,3,4

   ; ПОРТА А НА ВВОД, а линии 2,5,6,7 на вывод

LDI R16,0B11111111; НАСТРАИВАЕМ ВСЕ ЛИНИИ

OUT DDRC,R16; ПОРТА C НА ВЫВОД

LDI R16,0B11111111; НАСТРАИВАЕМ ВСЕ ЛИНИИ

OUT DDRD,R16; ПОРТ D НА ВЫВОД

LDI R16,0B01000000;Разрешение прерывания

OUT TIMSK,R16; по переполнению T/C1

LDI R16,0B00000000;ЗАПРЕТ прерывания

OUT GIMSK,R16; по INT0

LDI R16,0X1F;Загружаем в

OUT OCR1AH,R16; компататор А - 8000

LDI R16,0X40

OUT OCR1AL,R16

LDI R16,0B00000000

OUT TCNT1L,R16

LDI R16,0B00001000;T/C1 будет обнуляться при каждом совпадении

OUT TCCR1B,R16;со значением компаратора А

LDI R16,0B10000000;Глобальное разрешение прерываний

OUT SREG,R16

LDI R16,0X9

LDI R19,0X9;R19 регистр переназначенный для сравнения

   ; с R16 если они равны, то тогда измерение

   ; длительности импульса не начиналось

CLR R17

clr r22

OPROS_KEY_OF_INVERT:; Опрос состояния кнопки

SBIC PORTA,1; режима измерения длительности импульса               

RCALL IMPULS_POLOGITELNAY; режим из-ия длительности сигнала высокого уровня

RCALL IMPULS_OTRICHATELNAY; режим из-ия длительности сигнала низкого уровня

M2:

IMPULS_POLOGITELNAY:

SBI PORTA,2;Включаем светодиод

SBIC PORTA,0;Идет сканирование линии PA0

RCALL IMPULS

SBIS PORTA,0; Происходит проверка на наличие 1

RCALL IMPILS_1_TO_0; на PA1, если ее нет, тогда переход

M5: CPI R17,0xFF

BRCS M2; если R17 переполнится, то

LDI R17,0XA; тогда занесем в R17 10

RJMP M2;

Prog: INC R17;

CPI R17,0XA; Отчет длительности импульса начнется

BRCS M3; тогда когда в R17 будет 10(DEX)(пройдет 10 мС)

INC R16;инкремент R17(счетчик прошедших мСекунд срабатывает при R17>10)

BRBC 1,M3; если R16 переполнится

INC R18; тогда инкрементируем R18(Длительность импульса

     ; Прошло десять мС далее идет счет каждой мС

M3: RETI; находится в R18(ст. разряд),R16(мл. разряд)

IMPULS:

LDI R20, 0B00001001; если приходит импульс то тогда запускается T/C1

OUT TCCR1B,R20

RET

IMPILS_1_TO_0:

LDI R20,0B00000000; если импульс закончился T/C1 останавливается

OUT TCCR1B,R20

CPSE R16,R19;проверка на начало цикла измерения если он начился

RCALL TEST_OF_STOP_TC1; то тогда переход на TEST_OF_STOP_TC1

SBIC PORTA,1; Опрос состояния кнопки режима измерения длительности импульса

RCALL IMPULS_POLOGITELNAY; режим из-ия высокого уровня длительности

RCALL IMPULS_OTRICHATELNAY; режим из-ия низкого уровня длительности

RET

TEST_OF_STOP_TC1:; подпрограмма проверки (действительно ли T/C1 остановился

IN R21,TCCR1B;во время режима измерения длительности)

ANDI R21,0B000000000;если все в порядке, то тогда переходим на bin16BCD5

BRNE ENDTEST_OF

RCALL bin16BCD5

ENDTEST_OF:

RET

M2OTR:

IMPULS_OTRICHATELNAY:

CBI PORTA,2;Выключаем светодиод

SBIS PORTA,0; Происходит проверка на наличие 0

RCALL IMPULS_OTR

SBIC PORTA,0

RCALL IMPILS_0_TO_1; на PA1, если его нет, тогда переход

M5OTR: CPI R17,0xFF

BRCS M2OTR

LDI R17,0XA

RJMP M2OTR;

IMPULS_OTR:

;LDI R16,0X9

;LDI R17,0X0

LDI R20, 0B00001001; то тогда запускается T/C1

OUT TCCR1B,R20

RET

IMPILS_0_TO_1:

LDI R20,0B00000000;T/C1 остановлен

OUT TCCR1B,R20

CPSE R16,R19 

RCALL TEST_OF_STOP_TC1_OTR

SBIC PORTA,1

RCALL IMPULS_POLOGITELNAY

RCALL IMPULS_OTRICHATELNAY

RET

TEST_OF_STOP_TC1_OTR:

IN R21,TCCR1B

ANDI R21,0B000000000

BRNE ENDTEST_OF_OTR

RCALL bin16BCD5

ENDTEST_OF_OTR:

RET

    

bin16BCD5: Подпрограмма перевода двоичного числа в двоично-десятичное

 MOV R22,R16

 MOV R23,R18

   ldi tBCD2, -1

bin16BCD5_loop_1:

   inc tBCD2      ; определение

   subi fbinL, low(10000); количества

   sbci fbinH, high(10000); десятков тысяч

   brsh bin16BCD5_loop_1;в числе которое переводится

   subi fbinL, low(-10000)

   sbci fbinH, high(-10000)

   ldi tBCD1, -0x11

bin16BCD5_loop_2:

   subi tBCD1, -0x10;определение

   subi fbinL, low(1000); количества

   sbci fbinH, high(1000); тысяч

   brsh bin16BCD5_loop_2;в числе которое переводится

   subi fbinL, low(-1000)

   sbci fbinH, high(-1000)

bin16BCD5_loop_3:

   inc tBCD1      ;определение

   subi fbinL, low(100); количества

   sbci fbinH, high(100); десятков

   brsh bin16BCD5_loop_3;в числе которое переводится

   subi fbinL, -100

   ldi tBCD0, -0x10

bin16BCD5_loop_4:

   subi tBCD0, -0x10  ;определение

   subi fbinL, 10  ; количества

   brsh bin16BCD5_loop_4; единиц

   subi fbinL, -10 ;в числе которое переводится

   add tBCD0, fbinL

   LDI R16,0X9

 LDI R17,0X0

 ldi r18,0x0

 LDI R27,0X0 

WAIT_PRESS_KEY:; Подпрограмма проверки, в чем отображать

   ; индикацию в мСекундах или Секутдах

   ; Примечание:

   ; если ни одна из кнопок режима отображения

   ; не нажата или нажаты все, индикация отображаться не БУДЕТ

SBRC R27,0

RJMP EXIT

SBIC PORTA,3; Если нажата кнопка мСекунды

RCALL FLASH_mC; то тогда переход на FLASH_mC

SBIC PORTA,4; если нажата кнопка Секунды

RCALL FLASH_C; то тогда переход на FLASH_C

RJMP WAIT_PRESS_KEY; если ни одна из кнопок не нажата

        ; то тогда ожидаем нажатия

SBIS PORTA,3; в противном случае выход из подпрограммы

RJMP EXIT

SBIC PORTA,4; если нажаты все две кнопки, то тогда

        ; ожидаем пока одну кнопку не отключат

RJMP WAIT_PRESS_KEY

OUT PORTD,R23; вывод на порт D двоично-десятичного числа

OUT PORTC,R24; вывод на порт C двоично-десятичного числа

OUT TCNT1H,R18;обнуление регистра NCNT1H (ст. регистр T/C1)

OUT TCNT1L,R18;обнуление регистра NCNT1L (мл. регистр T/C1)

 

EXIT: RET

FLASH_mC:

SBI PORTA,5; Включаем светодиод (режим мСекунды)

CBI PORTA,6; Выключаем светодиод (режим Секунды)

CBI PORTA,7; и выключаем разделительную точку

INC R27

RET

FLASH_C:

CBI PORTA,5; Включаем светодиод (режим Секунды)

SBI PORTA,6;Выключаем светодиод (режим мСекунды)

SBI PORTA,7; и включаем разделительную точку

INC R27

RET

 


 


Поделиться с друзьями:

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.053 с.