реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Запуск таймера 16бит по внешнему прерыванию, Атмега+CodeVision
Сергей Борщ
сообщение Dec 19 2008, 07:33
Сообщение #31


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Vny4ek @ Dec 18 2008, 13:20) *
Как мне измерить поступивший импульс,
Вам не надо останавливать и запускать таймер. Пусть он свободно бежит, а вы используйте его модуль capture. Читайте описание на input capture unit и регистр ICR. Вам надо застатвить таймер защелкивать в ICR значение счетчика в начале и в конце импульса, а затем вычитая первое из второго получите длину импульса. Заметьте, без погрешностей из-за неодинакового времени на вход в прерывание.

P.S. и не используйте кнопку цитирования на форме ввода для оформления кода. Для оформления кода есть кнопка '#'.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Dec 19 2008, 08:59
Сообщение #32


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Цитата(Сергей Борщ @ Dec 19 2008, 10:33) *
Вам не надо останавливать и запускать таймер. Пусть он свободно бежит...

Так даже красивше будет. Только в этом случае надо по любому надо учитывать переход таймера через 0.
Цитата(Сергей Борщ @ Dec 19 2008, 10:33) *
Читайте описание на input capture unit и регистр ICR. Вам надо застатвить таймер защелкивать в ICR значение счетчика в начале и в конце импульса...

Не забыв про бит ICES1 регистра TCCR1B...
Цитата(Сергей Борщ @ Dec 19 2008, 10:33) *
Заметьте, без погрешностей из-за неодинакового времени на вход в прерывание.

Только с пренебрежимо малой погрешностью (1 такт максимум) обусловленной каскадом синхронизатор+детектор фронтов...

Ради интереса, какая максимальная методологическая относительная погрешность может быть при измерении импульсов длительностью 360-600мкс, при 0.125мкс на тактовый (8Мгц, Т1 от тактовой)? Если использовать прерывание по изменению уровня с запуском/остановкой таймера...


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 19 2008, 10:30
Сообщение #33


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Goodefine @ Dec 19 2008, 10:59) *
Так даже красивше будет. Только в этом случае надо по любому надо учитывать переход таймера через 0.
Если длительность измеряемого импульса меньше 65536 тиков таймера, то не нужно.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Dec 19 2008, 12:57
Сообщение #34


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Цитата(Сергей Борщ @ Dec 19 2008, 14:30) *
Если длительность измеряемого импульса меньше 65536 тиков таймера, то не нужно.

Учет, в данном случае, выразится в сравнении двух значений счетчика, поочередно попадающих в ICR1...


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 19 2008, 13:51
Сообщение #35


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Goodefine @ Dec 19 2008, 14:57) *
Учет, в данном случае, выразится в сравнении двух значений счетчика, поочередно попадающих в ICR1...
Естественно. В их вычитании.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 9th July 2025 - 17:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01372 секунд с 7
ELECTRONIX ©2004-2016