0 / 0 / 0
Регистрация: 09.01.2014
Сообщений: 69

Как посчитать длительность Прямоугольного импульса (Меандр)

30.01.2014, 17:45. Показов 12613. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток .
Поставленная задача : при поступлении сигнала МК должен отсчитывать время действия данного сигнала , т.е. его продолжительность ( от 0 до t1 на нижеприведенном рисунке ). Затруднения вызваны тем , что сигнал представляет собой Прямоугольные импульсы , Меиндр .

<Изображение удалено>
Старался написать программу , ниже приведена часть(и) исходного кода программы . Проверял при поступающем сигнале частотой 1Гц ( собственно будет использоваться только данная частота ), работает нормально . Имеются небольшие сомнения , на счет того , что программа вряд ли будет работать при небольшом изменении частоты поступающего сигнала (0.8 Гц , 0.9ГЦ , 1.1Гц ) . Хотелось бы "универсальную" программу/алгоритм .
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
Ldi Temp1 , 0
Ldi Temp2 , 0
Ldi Temp4 , 0
Ldi Count_Time , 0
Ldi Temp3 , 2
 
...
 
Sig:                         ; проверка поступления сигнала
In Temp ,PinB
cpi Temp,0b00000000
brne Sig
breq Sig1            ; перейти если есть сигнал на Sig1
 
Sig1:
 
Ldi Temp,0b00000100          ; прерывания по переполнению Timer1
out TIMSK,Temp
Ldi Temp,0b00000011          ; предделитель таймера CK/64
out TCCR1B,Temp
sei                          ; разрешаем прерываня
 
Inf:rjmp Inf                 ; бесконечный цикл
 
Timer1_Int:                  ; обработчик прерывания Timer1
 
clr Temp                     ; Обнуляем Timer1
Out TCNT1H , Temp            ; Обнуляем Timer1
Out TCNT1L , Temp            ; Обнуляем Timer1
 
cpi Temp1 ,0
breq Pr_Schet             ; переход если равно
cpi Temp1 ,1
breq Obr_Schet
 
; ********************************
 
Pr_Schet:
 
In Temp ,PinB
cpi Temp,0b00000000
breq m1
brne m2
m1: cpi Temp4 , 0
breq m11
brne m12
m11:Inc Count_Time
Inc Temp2 ;
Out PortD , Temp2
reti
m12:Inc Count_Time
Inc Temp2 ;
Out PortD , Temp2
Inc Temp3
reti
m2: Ldi Temp4 , 1
Dec Temp3
cpi Temp3 , 0
breq m5
Inc Count_Time
Inc Temp2 ;
Out PortD , Temp2
reti
m5: Ldi Temp1 , 1
Dec Count_Time
Ldi Temp,0b00000000
out TCCR1B,Temp
rjmp Sig
 
; ********************************
 
; ********************************
 
Obr_Schet:
 
...
 
; ********************************
Дорогие посетители форума ! Помогите составить алгоритм подсчета длительности сигнала , время сигнала .


<Изображение удалено>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.01.2014, 17:45
Ответы с готовыми решениями:

Как сделать так чтобы длительность импульса регулировалось кнопками + и -? МК Atmega328P
идёт прерывание по спадающему фронту на INT0, после 3 прерываний должен последовать импульс регулируемой длины. #define F_CPU...

Длительность импульса RESET
Хочу сделать прошивалку по Bluetooth HC-05 для Aduino. Меня интересует можно ли где-то найти требования к длительности импульса RESET...

Как влияет длительность импульса на спектр фаз или амплитуд периодического сигнала?
Вообще может посоветуете, где об этом написано. Уменьшили мы длительность импульса, а фазы начали скакать какие-то вверх, то другие вниз,...

22
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
01.02.2014, 20:46
Студворк — интернет-сервис помощи студентам
Корявенько (новичок в ассемблере?):
Code
1
2
3
4
5
6
7
8
    breq m1             ; если да , то идем на метку m1
brne m2             ; если нет , то идем на m2
m1:
... ...
 
breq m12
brne m13
m12:
СмотрИте, как то же самое записывается вдвое короче:
Code
1
2
3
4
5
6
    brne m2
m1:
... ...
 
brne m13
m12:
Цитата Сообщение от shirysom
Все регистры ... до прерывания равны 0.
Правильной программе должно быть по фигу, чему равны регистры до прерывания. На то оно и есть прерывание, чтобы "застать" основную программу в самый неподходящий момент, с любыми значениями любых регистров.
0
0 / 0 / 0
Регистрация: 09.01.2014
Сообщений: 69
01.02.2014, 21:57
Цитата Сообщение от OtyxPM
Корявенько (новичок в ассемблере?):
Навичак не то слово . Я согласился выполнить данное задание ради собственного интереса и получения навыков создания алгоритма , программы и прошивки МК , т.е. мое согласие не подкреплено мега знаниями. Все дается очень тяжело .
А проект серьезный и очень хочется чтобы заработало все .
0
0 / 0 / 0
Регистрация: 09.01.2014
Сообщений: 69
01.02.2014, 21:59
Программа пока считает время при частоте прерываний 1 сек , т.е. инкрементирует по 1 с . Стоит ли делать частоту прерываний больше 10-100Гц ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.02.2014, 21:59

Длительность импульса
Всем привет, как посчитать длительность импульса ? Задача состоит в определении интеграла вообще, но что то не получается через функцию,...

Измерить длительность импульса
Помогите написать программу: измерить длительность импульса положительной полярности(лог.1) таймером/счётчиком Т/С0 и, если его...

Длительность импульса с энергетическим критерием
Добрый день, форумчане. Мне нужно с помощью матлаба найти длительность импульса с использованием тау (использовал свои) и...

Значение функции на интервале превышающем длительность импульса
Совершенно не понимаю в чем проблема. Функция должна повторять импульс, но этого не происходит #include &lt;conio.h&gt; #include...

Спектр прямоугольного импульса
Привет всем! У меня есть задачка, первая часть которой кажется тривиальной. Нужно написать прогу в матлабе, которая строит спектр...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Опции темы

Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru