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

 
 
> Точный подсчёт времени, как реализовать?
Leo_vrn
сообщение Aug 6 2006, 14:11
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 21-11-05
Из: Воронеж
Пользователь №: 11 151



Господа гуру в программировании AVR. Вопрос к вам.

Есть задачка точного измерения промежутков времени. Точность нужна до тысячной доли секунды. Подскажите, каким боком такое можно реализовать. Не должно быть погрешности измерения более 1 тысячной в интервале до 30 секунд.
В идеале нужна параллельная работа двух таких секундомеров. В принципе можно и по одному на разных кристаллах.
Выбор самого кристалла не очень важен. Главное, чтобы имел USART.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
defunct
сообщение Aug 6 2006, 21:03
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Leo_vrn @ Aug 6 2006, 17:11) *
Есть задачка точного измерения промежутков времени. Точность нужна до тысячной доли секунды.

Уточните задачу:
Как и какие события будут сигнализировать МК о старте измерения и о финише?

Потому что просто "отмерять" интервалы времени - тривиальная задача:
зная возможности аппаратуры - 16 битный таймер в режиме CTC с генерацией прерывания, обеспечит абсолютно точное деление частоты осциллятора на любое натуральное число больше 11+(количество тактов требующихся на обработку). Дальше не составит труда преобразовать полученную таким образом частоту в интервал времени: T = OCR1X/ Fosc. Ну и подобрать осциллятор который обеспечит Вам требующуюся точность.

Например пусть нужно точно отмерять интервал времени в 1ms, тогда, подставив этот интервал в формулу
OCR1X = Fosc * 0.001c.
для обеспечения высокой точности OCR1X должен быть натуральным числом >11, т.о. нам остается только подобрать кварц (любой из 4.000Mhz, 8.000Mhz, 10.000Mhz и т.п.).
Go to the top of the page
 
+Quote Post
Leo_vrn
сообщение Aug 7 2006, 07:49
Сообщение #3





Группа: Участник
Сообщений: 12
Регистрация: 21-11-05
Из: Воронеж
Пользователь №: 11 151



Цитата(defunct @ Aug 7 2006, 01:03) *
Цитата(Leo_vrn @ Aug 6 2006, 17:11) *

Есть задачка точного измерения промежутков времени. Точность нужна до тысячной доли секунды.

Уточните задачу:
Как и какие события будут сигнализировать МК о старте измерения и о финише?

Потому что просто "отмерять" интервалы времени - тривиальная задача:
зная возможности аппаратуры - 16 битный таймер в режиме CTC с генерацией прерывания, обеспечит абсолютно точное деление частоты осциллятора на любое натуральное число больше 11+(количество тактов требующихся на обработку). Дальше не составит труда преобразовать полученную таким образом частоту в интервал времени: T = OCR1X/ Fosc. Ну и подобрать осциллятор который обеспечит Вам требующуюся точность.

Например пусть нужно точно отмерять интервал времени в 1ms, тогда, подставив этот интервал в формулу
OCR1X = Fosc * 0.001c.
для обеспечения высокой точности OCR1X должен быть натуральным числом >11, т.о. нам остается только подобрать кварц (любой из 4.000Mhz, 8.000Mhz, 10.000Mhz и т.п.).


В качестве события для старта и останова замера времени используется подача лог.0 на какую-нибудь ногу контроллера. То-есть пришёл 0 на одну ногу - запускаем таймер, пришёл 0 на другую ногу - останавливаем таймер.
Получается, что во времяцикла измерения контроллер должен будет постоянно опрашивать состояние одной из своих ног.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Leo_vrn   Точный подсчёт времени   Aug 6 2006, 14:11
- - AVR   Цитата(Leo_vrn @ Aug 6 2006, 18:11) Точно...   Aug 6 2006, 14:45
- - junoSynthesizer   я конечно не гуру а тоже нуб =), но кажись математ...   Aug 6 2006, 19:33
- - bodja74   1 Инициализируем таймер Т1,если нужна точность ,ил...   Aug 6 2006, 20:45
|- - Леонид Иванович   Лучше всего использовать аппаратную схему захвата ...   Aug 7 2006, 08:11
|- - singlskv   Цитата(Леонид Иванович @ Aug 7 2006, 12:1...   Aug 7 2006, 09:03
|- - defunct   Цитата(singlskv @ Aug 7 2006, 12:03) А чт...   Aug 7 2006, 09:45
||- - singlskv   Цитата(defunct @ Aug 7 2006, 13:45) Где-т...   Aug 7 2006, 10:50
|- - bodja74   Цитата(singlskv @ Aug 7 2006, 12:03) А чт...   Aug 7 2006, 11:44
|- - singlskv   Цитата(singlskv @ Aug 7 2006, 12:03) А чт...   Aug 7 2006, 11:50
|- - bodja74   Цитата(singlskv @ Aug 7 2006, 14:50) Цита...   Aug 7 2006, 12:28
|- - singlskv   Цитата(bodja74 @ Aug 7 2006, 16:28) Угу,в...   Aug 7 2006, 12:58
|- - singlskv   Цитата(defunct @ Jun 2 2006, 23:26) Код.d...   Aug 7 2006, 13:22
|- - defunct   singlskv дык почитайте ветку дальше.. Цитатапере...   Aug 7 2006, 14:49
|- - singlskv   Цитата(defunct @ Aug 7 2006, 18:49) singl...   Aug 7 2006, 15:32
|- - singlskv   2 defunct кажется я понял откуда растут "уши...   Aug 7 2006, 16:01
|- - defunct   Цитата(singlskv @ Aug 7 2006, 18:32) прос...   Aug 7 2006, 16:10
|- - singlskv   Был неправ tst r5 действительно решает проблем...   Aug 7 2006, 19:43
|- - defunct   Цитата(singlskv @ Aug 7 2006, 22:43) толь...   Aug 7 2006, 20:04
|- - singlskv   Цитата(defunct @ Aug 8 2006, 00:04) Цитат...   Aug 7 2006, 20:12
- - arttab   а если не серийка, то и поправочный коэфициетн для...   Aug 7 2006, 01:45
- - defunct   Долго искал, но таки отыскал ветку где обсуждался ...   Aug 7 2006, 11:56
- - singlskv   Цитата(defunct @ Aug 7 2006, 15:56) Долго...   Aug 7 2006, 12:13
- - singlskv   ИМХО: при любой попытке "уточнить" значе...   Aug 7 2006, 12:46
- - defunct   Цитата(singlskv @ Aug 7 2006, 15:13) Цита...   Aug 7 2006, 12:54


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

 


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


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