Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Топ:
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
Интересное:
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Дисциплины:
2020-04-01 | 227 |
5.00
из
|
Заказать работу |
|
|
Погрешность измерения длительности импульса, как уже говорилось выше, непосредственно связана непосредственно связана со скоростью работы МП, в свою очередь скорость которого задается тактовой частотой кварцевого резонатора.
Величина временного кванта (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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!