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

 
 
> Измерение временных интервалов, с высокой точностью
AVR
сообщение Jun 2 2006, 17:03
Сообщение #1


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Здравствуйте!
Как можно измерить временные интервалы дительностью несколько секунд на AVRах с точностью до микросекунды? При том что кварц стоит на 1 МГц? Емкости таймера-счетчика 16 бит для такой задачи не хватает...


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GetSmart
сообщение Oct 9 2006, 16:24
Сообщение #2


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(=GM=)
Ничего не понял, поясните. Здесь никакой идеи, просто проверка содержимого r5:r4 на 0, только 0 может показать, что был перенос.
Я же написал, что там может быть и 10 и 100 и при этом быть перенос. Что Вы не поняли? Что в системе может быть больше чем эти два прерывания? Вы хоть поняли как предыдущая версия программы работала?


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
=GM=
сообщение Oct 10 2006, 10:43
Сообщение #3


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(GetSmart @ Oct 9 2006, 15:24) *
Цитата(=GM=)
Ничего не понял, поясните. Здесь никакой идеи, просто проверка содержимого r5:r4 на 0, только 0 может показать, что был перенос.
Я же написал, что там может быть и 10 и 100 и при этом быть перенос. Что Вы не поняли? Что в системе может быть больше чем эти два прерывания? Вы хоть поняли как предыдущая версия программы работала?


Как там (в r5-r4) может быть 10 или 100 и быть перенос? Его не может быть или я ничего не понимаю. Перенос может быть, если только в ICR1H-ICR1L (читай r5-r4) было 0хFFFF, а потом стало 0х0000. Никак не 10 или 100.

Ладно, отбросим предрассудки и недоразумения(:-), и начнем сначала.

1) Есть переменная в r7-r6-r5-r4, показывающая время. Содержимое регистров r5-r4 отражает содержимое аппаратных регистров захвата, по сути текущее время таймера1 на конец (или начало, не суть) измеряемого интервала. Каждые 65536 мкс содержимое таймера1 обнуляется и возникает перенос, который программно учитывается в регистрах r7-r6. Согласны?

2) Пойдем дальше. Как только возникает конец интервала, тут же происходит захват и мы имеем точное время записи, копируя содержимое ICR1L, ICR1H в r5-r4, и содержимое r3-r2 в r7-r6. Согласны?

3) Однако, если захват произойдет на 65536 микросекунде нашего таймера, возникнет перенос, который еще не учтен в r3-r2, и следовательно, в r7-r6. Как его учесть? Использовать ТЕКУЩИЙ аппаратный перенос от таймера1 НЕЛЬЗЯ, т.к. он никакого отношения к времени захвата не имеет. Согласны?

4) Наличие 0х0000 в r5-r4 означает, что в момент захвата произошло переполнение таймера1, и что перенос следует учесть в r7-r6. Согласны?

Ответьте по пунктам, если не трудно.

Цитата
Что в системе может быть больше чем эти два прерывания? Вы хоть поняли как предыдущая версия программы работала?

Я-то понял, а вот вы похоже нет, хотя вы один из авторов(:-). И при чем здесь количество прерываний?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
singlskv
сообщение Oct 10 2006, 11:49
Сообщение #4


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(=GM= @ Oct 10 2006, 14:43) *
3) Однако, если захват произойдет на 65536 микросекунде нашего таймера, возникнет перенос, который еще не учтен в r3-r2, и следовательно, в r7-r6. Как его учесть? Использовать ТЕКУЩИЙ аппаратный перенос от таймера1 НЕЛЬЗЯ, т.к. он никакого отношения к времени захвата не имеет.

Код
                          <---- ICR1=FFFF  момент захвата
                          <---- TCNT1=FFFF
TIM1_CAPT:
                              <---- ICR1=FFFF начало обработки прерывания
                              <---- TCNT1=5
                              <---- TOV1=1
    in    _Sreg,SREG
    in    R4, ICR1L     <---- R4=FF
    in    R5, ICR1H     <---- R5=FF
    tst   R5                <---- R5==0 ???
    brne  _do_not_correct_result <---- переходим без коррекции
    in    AL, TIFR
    andi  AL, (1 << TOV1)
    breq  _do_not_correct_result
    out   TIFR, AL
    add   R2, Const1
    adc   R3, Const0
_do_not_correct_result:
    mov   R6, R2
    mov   R7, R3
    out   SREG,_Sreg
    reti
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- AVR   Измерение временных интервалов   Jun 2 2006, 17:03
- - WHALE   C точностью до микросекунды с кварцем на 1Мгц ника...   Jun 2 2006, 17:07
- - GetSmart   А инкрементировать ещё одни (старшие) 16 бит по пе...   Jun 2 2006, 17:10
|- - rezident   Цитата(GetSmart @ Jun 2 2006, 23:10) А ин...   Jun 2 2006, 17:20
|- - AVR   Цитата(GetSmart @ Jun 2 2006, 21:10) А ин...   Jun 2 2006, 17:24
- - GetSmart   ЦитатаC точностью до микросекунды с кварцем на 1Мг...   Jun 2 2006, 17:23
- - GetSmart   Чё-то я ослеп. Речь как раз об AVR. Берёте Мегу8, ...   Jun 2 2006, 17:43
|- - defunct   Цитата(GetSmart @ Jun 2 2006, 20:43) Чё-т...   Jun 2 2006, 19:26
- - GetSmart   ЦитатаНельзя выйти на точность в 1мкс в случае ког...   Jun 2 2006, 19:51
|- - defunct   Цитата(GetSmart @ Jun 2 2006, 22:51) Немн...   Jun 2 2006, 20:32
- - GetSmart   ЦитатаНу представьте захвачен ICR = 0. Что делать?...   Jun 2 2006, 20:54
|- - defunct   Цитата(GetSmart @ Jun 2 2006, 23:54) Цита...   Jun 2 2006, 20:57
|- - smk   Цитата(GetSmart @ Jun 2 2006, 23:54) Цита...   Oct 5 2006, 16:30
|- - defunct   Цитата(smk @ Oct 5 2006, 19:30) У меня си...   Oct 6 2006, 11:11
- - GetSmart   Надо только в прерывании захвата смотреть, если чи...   Jun 2 2006, 21:18
|- - defunct   Цитата(GetSmart @ Jun 3 2006, 00:18) Надо...   Jun 2 2006, 21:45
- - GetSmart   ЦитатаТам это учтено: Да, я это написал когда ещё ...   Jun 2 2006, 21:53
|- - defunct   Цитата(GetSmart @ Jun 3 2006, 00:53) Кста...   Jun 2 2006, 22:05
- - GetSmart   Вроде нормальный пример. Тока непонятно зачем R0 и...   Jun 2 2006, 23:02
|- - defunct   Цитата(GetSmart @ Jun 3 2006, 02:02) Хотя...   Jun 3 2006, 13:02
- - GetSmart   ???   Jun 3 2006, 05:22
- - Rst7   О чем вы, господа? Забыли, что внутри проца есть е...   Jun 3 2006, 06:28
- - GetSmart   О чём вы, господин? Задержка всегда постоянная. И ...   Jun 3 2006, 06:53
- - Rst7   Э, да, вспылил, был неправ   Jun 3 2006, 07:20
- - Валентиныч   А чем вызвано ограничение по кварцу - 1 МГц? (Или ...   Jun 3 2006, 14:17
- - GetSmart   defunct Ну ёкарный бабай... Ещё нужно заменить ...   Jun 3 2006, 17:16
|- - defunct   Цитата(GetSmart @ Jun 3 2006, 20:16) defu...   Jun 3 2006, 19:05
- - Sergiy   все хорошо ребята - мона конечно извращаться с АВР...   Jun 3 2006, 21:14
|- - smk   Цитата(Sergiy @ Jun 4 2006, 00:14) частот...   Oct 5 2006, 17:02
|- - SasaVitebsk   Цитата(Sergiy @ Jun 4 2006, 00:14) все хо...   Oct 5 2006, 23:37
|- - Stanislav   Цитата(SasaVitebsk @ Oct 6 2006, 03:37) Ц...   Oct 6 2006, 11:58
- - Sergiy   Да кстати в продолжение темы, а знаете зачем у ква...   Jun 3 2006, 21:29
- - king2   И вот все равно не понимаю я... Предположим, в эт...   Oct 5 2006, 01:30
- - CD_Eater   Не пойму, к чему эти обсуждения наилучшего кода, е...   Oct 5 2006, 17:56
- - khach   Как померять? Используя ГЛИН (генератор пилы) и вн...   Oct 5 2006, 19:49
- - =GM=   Ну вот, опоздал к началу обсуждения, как всегда, в...   Oct 6 2006, 16:22
|- - Stanislav   Цитата(=GM= @ Oct 6 2006, 20:22) Задача д...   Oct 9 2006, 10:46
|- - =GM=   Цитата(Stanislav @ Oct 9 2006, 09:46) Цит...   Oct 9 2006, 12:56
|- - Stanislav   Цитата(=GM= @ Oct 9 2006, 16:56) Поясните...   Oct 9 2006, 16:09
- - _artem_   =GM=, использование арифметических операций предпо...   Oct 6 2006, 17:17
|- - =GM=   Цитата(_artem_ @ Oct 6 2006, 16:17) =GM=,...   Oct 6 2006, 22:48
- - _artem_   Правильно говорите - я то невнимательно прочитал п...   Oct 7 2006, 00:10
- - singlskv   Подправил немного код GetSmart и defunct - добавил...   Oct 7 2006, 10:37
- - GetSmart   Забавно. На этой странице всех повело совсем не в ...   Oct 9 2006, 13:35
|- - =GM=   Цитата(singlskv @ Oct 7 2006, 09:37) Подп...   Oct 9 2006, 13:59
|- - singlskv   Цитата(=GM= @ Oct 9 2006, 17:59) Хочу нем...   Oct 9 2006, 16:34
|- - Леонид Иванович   ЦитатаНу и последнее, в подобных случаях предпочит...   Oct 9 2006, 20:15
|- - =GM=   Цитата(Леонид Иванович @ Oct 9 2006, 19:1...   Oct 10 2006, 11:04
|- - singlskv   Цитата(=GM= @ Oct 10 2006, 15:04) Что оче...   Oct 10 2006, 11:19
|- - SasaVitebsk   Цитата(singlskv @ Oct 10 2006, 14:19) Цит...   Oct 10 2006, 13:25
|- - =GM=   Цитата(SasaVitebsk @ Oct 10 2006, 12:25) ...   Oct 10 2006, 14:36
|- - defunct   Цитата(SasaVitebsk @ Oct 10 2006, 16:25) ...   Oct 10 2006, 22:32
- - GetSmart   Цитата(=GM=)Код mov temp,r4 ;с возможным п...   Oct 9 2006, 15:22
|- - =GM=   Цитата(GetSmart @ Oct 9 2006, 14:22) Цита...   Oct 9 2006, 16:06
- - _artem_   Для микросекундной точности mожно скорректировать...   Oct 9 2006, 16:11
|- - Stanislav   Цитата(_artem_ @ Oct 9 2006, 20:11) Для м...   Oct 9 2006, 16:13
|- - =GM=   Чудак-человек, я согласен, что практически ваша пр...   Oct 10 2006, 12:51
|- - singlskv   Цитата(=GM= @ Oct 10 2006, 16:51) Пусть о...   Oct 10 2006, 13:23
- - GetSmart   Павезло так павезло   Oct 9 2006, 20:37
- - smk   По моему скромному мнению, мне очень понравилась и...   Oct 10 2006, 14:09
- - GetSmart   Ой-Ой-Ой. Ладно, господа. Я вас примирю. Использ...   Oct 10 2006, 14:14
- - GetSmart   Цитата(=GM=)Просто механически повторил ваш код, р...   Oct 10 2006, 14:33
- - singlskv   Еще подправил код: - заменил на одну константу Con...   Oct 10 2006, 16:20
|- - =GM=   Цитата(singlskv @ Oct 10 2006, 15:20) Еще...   Oct 10 2006, 17:15
|- - singlskv   Цитата(=GM= @ Oct 10 2006, 21:15) Мне каж...   Oct 10 2006, 17:52
||- - =GM=   Цитата(singlskv @ Oct 10 2006, 16:52) Цит...   Oct 11 2006, 11:10
||- - singlskv   Цитата(=GM= @ Oct 11 2006, 15:10) Ну раз ...   Oct 11 2006, 16:06
|- - singlskv   Цитата(=GM= @ Oct 10 2006, 21:15) Цитата(...   Oct 10 2006, 18:06
|- - =GM=   Цитата(singlskv @ Oct 10 2006, 17:06) Цит...   Oct 11 2006, 10:54
- - GetSmart   Цитата(singlskv)Код in R5, ICR1H mov R7, ConstF...   Oct 10 2006, 20:19
|- - singlskv   [quote name='GetSmart' date='Oct 11 20...   Oct 10 2006, 20:58
- - GetSmart   defunct Скучали тут без Вас А почему все думают,...   Oct 10 2006, 23:11
|- - defunct   Цитата(GetSmart @ Oct 11 2006, 02:01) А п...   Oct 10 2006, 23:14
- - GetSmart   Цитатакак "глюкодром" Класс! Не, ну...   Oct 10 2006, 23:34
|- - defunct   Цитата(GetSmart @ Oct 11 2006, 02:34) Не,...   Oct 10 2006, 23:57
- - GetSmart   Цитата(defunct)i - переход на длительный обработчи...   Oct 11 2006, 02:49
- - GetSmart   Цитата(=GM=)Автор топика намеревался измерять длит...   Oct 11 2006, 16:25
|- - AVR   Прошу прощения за оффтоп, но для самого автора тем...   Oct 11 2006, 17:25
||- - singlskv   Цитата(AVR @ Oct 11 2006, 21:25) Прошу пр...   Oct 11 2006, 17:30
||- - GetSmart   Цитата(AVR @ Oct 11 2006, 23:25) Прошу пр...   Oct 11 2006, 17:43
|- - =GM=   Цитата(singlskv @ Oct 11 2006, 15:06) Цит...   Oct 12 2006, 09:31
|- - defunct   Цитата(=GM= @ Oct 12 2006, 12:31) А недав...   Oct 15 2006, 02:25
|- - =GM=   Цитата(defunct @ Oct 15 2006, 01:25) Что ...   Oct 16 2006, 13:06
|- - defunct   Цитата(=GM= @ Oct 16 2006, 16:06) Я и не ...   Oct 18 2006, 11:44
|- - =GM=   Цитата(defunct @ Oct 18 2006, 10:44) Зате...   Oct 18 2006, 14:14
|- - defunct   Цитата(=GM= @ Oct 18 2006, 17:14) хотя ко...   Oct 18 2006, 16:04
|- - singlskv   Цитата(=GM= @ Oct 18 2006, 18:14) Но вот ...   Oct 18 2006, 20:07
|- - =GM=   Цитата(singlskv @ Oct 18 2006, 19:07) Цит...   Oct 19 2006, 15:21
- - CD_Eater   Цитата(defunct @ Oct 11 2006, 03:57) Цита...   Oct 11 2006, 17:59
- - singlskv   Цитата(defunct @ Oct 11 2006, 03:14) Цита...   Oct 11 2006, 20:51
- - GetSmart   Цитата(=GM=)GetSmart, хорош бурчать, это у вас так...   Oct 12 2006, 10:18
- - GetSmart   Цитата(=GM=)Как-то вы несистемно подходите к задач...   Oct 18 2006, 14:43
|- - =GM=   Цитата(GetSmart @ Oct 18 2006, 13:43) Цит...   Oct 19 2006, 14:55
- - GetSmart   defunct Любопытная вещь. Это я где-то уже видел и ...   Oct 18 2006, 17:17
- - singlskv   Цитата(=GM= @ Oct 19 2006, 18:55) Код.......   Oct 19 2006, 17:20
- - GetSmart   Цитата(=GM=)Похоже вам слово системщик, как быку к...   Oct 20 2006, 02:23
- - =GM=   GetSmart У вас же в последней проге слишком много ...   Oct 20 2006, 10:08
2 страниц V   1 2 >


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

 


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


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