|
Измерение ширины импульса, с помощью Меги 16 |
|
|
|
Jul 7 2008, 02:04
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(dvs85 @ Jul 7 2008, 09:04)  Все пытаюсь сделать программу для измерения ширины импульса. Мне посоветовали следующий алгоритм:
1. Настроить таймеры и компаратор
2. Включить прерывание по нарастающему фронту
3. По сработке прерывания запустить таймер
4. Переключить срабатывание прерывания по фронту
5. Сбросить флаг прерывания компаратора
6. Когда сработает прерывание по ниспадающему фронту - остановить таймер
Подскажите, это правильный алгоритм? Не могу понять также, как посчитать сам интервал таймером.. А какой формы сигнал: прмоугольник, пила, синус...? Максимальная частота, амплитуда? Если речь идет о компараторе, то, полагаю, что сигнал аналоговый. Тогда нужно копать в сторону захвата. Т.е. компаратор можно настроить так, чтобы он запускал/останавливал таймер. Таким образом измерение сведется к чтению регистров.
--------------------
Выбор.
|
|
|
|
|
Jul 7 2008, 05:17
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(dvs85 @ Jul 7 2008, 03:04)  Подскажите, это правильный алгоритм? Не могу понять также, как посчитать сам интервал таймером.. Такой алгоритм имеет право быть. Только необходимо определиться с параметрами импульса и точностью измерений. Например, приведенный Вам алгоритм не сможет замерить длительность "очень коротких" импульсов - если импульс закончится до того, как программа выйдет из прерывания, инициирующего начало измерений. Как считать интервал? Зависит от длительности и требуемой точности измерения. Например, можно измерять импульс по счетному регистру (зная, что каждая единица = Х мс или = Х мкс), можно считать ещё и переполнения таймера, расширяя программным путём счетный регистр таймера... P.S. А, можно считать только переполнения таймера, если импульс очень длинный...
|
|
|
|
|
Jul 7 2008, 05:27
|

Частый гость
 
Группа: Участник
Сообщений: 86
Регистрация: 24-03-08
Из: Владивосток
Пользователь №: 36 170

|
Цитата Например, можно измерять импульс по счетному регистру (зная, что каждая единица = Х мс или = Х мкс), можно считать ещё и переполнения таймера, расширяя программным путём счетный регистр таймера... А можно об этом попобробнее? Что значит Цитата каждая единица = Х мс ?
|
|
|
|
|
Jul 7 2008, 05:40
|

Частый гость
 
Группа: Участник
Сообщений: 86
Регистрация: 24-03-08
Из: Владивосток
Пользователь №: 36 170

|
Единица это имеется в виду тик таймера? То есть таймер тикнул, значение регистра изменилось на 1? Цитата можно считать ещё и переполнения таймера, расширяя программным путём счетный регистр таймера.. Каким образом происходит расширение счетного регистра?
Сообщение отредактировал dvs85 - Jul 7 2008, 05:47
|
|
|
|
|
Jul 7 2008, 05:50
|

Частый гость
 
Группа: Участник
Сообщений: 86
Регистрация: 24-03-08
Из: Владивосток
Пользователь №: 36 170

|
Цитата Значение счетного регистра изменяются в зависимости от режима работы таймера, частоты источника тактирования и пределителя. То есть если частота кварца 4000000, предделитель = 1, режим работы по сравнению с регистром сравнения. Что из этого получается? Мне написали как расчитывать, только я никак понять не могу как это применить Написано так (24 бит * К) / 4 МГц Может кто расшифрует, что это значит?
Сообщение отредактировал dvs85 - Jul 7 2008, 05:56
|
|
|
|
|
Jul 7 2008, 06:11
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(dvs85 @ Jul 7 2008, 08:40)  Единица это имеется в виду тик таймера? То есть таймер тикнул, значение регистра изменилось на 1? Что Вы понимаете под "тик таймера"? Обычно - это прерывание от таймера... Цитата(dvs85 @ Jul 7 2008, 08:40)  Каким образом происходит расширение счетного регистра? Таймер имеет счетный регистр (8 бит или 16). Пусть, счетный регистр - 8 бит, тогда если подсчитывать число переполнений таймера в восьмибитном регистре (или ячейке памяти), мы расширяем программным путём его значение - оно становится 16-тибитным: старшие 8 бит -в ячейке памяти или регистре (число переполнений), младшие 8 бит - счетный регистр таймера. По-аналогии, подсчет в 16-тибитном слове числа переполнений таймера, имеющего 16-тибитный счетный регистр, расширяем счетный регистр до 32 бит. Цитата(dvs85 @ Jul 7 2008, 08:50)  То есть если частота кварца 4000000, предделитель = 1, режим работы по сравнению с регистром сравнения. Что из этого получается? Это что за режим - не понимаю? Каждые 1/4000000=0.25 мкс к счетному регистру таймера будет прибавляться (вычитаться) единица. Дальнейшее поведение зависит от режима таймера: normal, PWM, fast PWM, CTC - и всё это в разновидностях...
|
|
|
|
|
Jul 7 2008, 06:16
|

Частый гость
 
Группа: Участник
Сообщений: 86
Регистрация: 24-03-08
Из: Владивосток
Пользователь №: 36 170

|
В общем, что нужно сделать чтобы посчитать короткие импульсы (я так понимаю, если будет возможность считать короткие импульсы, то будет и возможность считать и импульсы подлинее)? А то я не совсем понял, что програмно нужно сделать.. Э Цитата то что за режим - не понимаю? Каждые 1/4000000=0.25 мкс к счетному регистру таймера будет прибавляться (вычитаться) единица. Дальнейшее поведение зависит от режима таймера: normal, PWM, fast PWM, CTC - и всё это в разновидностях... Я пытался сделать в режиме сброса при совпадении
Сообщение отредактировал dvs85 - Jul 7 2008, 06:20
|
|
|
|
|
Jul 7 2008, 06:54
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(dvs85 @ Jul 7 2008, 09:29)  Длительность от мсек до минут.. точность - сотые мсек У Вас - что? Устройство исключительно для определения длительности импульсов? Уж очень требования - широкие... Тагда, наверное, так: Таймер1, пределитель 1, normal (от 0 до FFFF). Ловить начало импульса на ICR1. Подсчитывать программно переполнения таймера. Ловить конец импульса на ICR1. По двум значениям регистра захвата и числу переполнений вычислять длительность. P.S. Пределитель 1 - не догма, можно и 8 или 64 (может быть).
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|