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

 
 
> Измерение временных интервалов, с высокой точностью
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 10 2006, 23:11
Сообщение #2


.
******

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



defunct
Скучали тут без Вас smile.gif

А почему все думают, что у АВР одноуровневой КП? Может уже я чего-то не знаю?

Цитата(defunct)
Я таки все так же против увеличения латентности других прерываний и использования проверки последнего бита.
Так... Вы - против, я - за. Что будем с этим делать?
Ограничение только в том, что любое допустимое в системе прерывание обязано занимать время меньшее, чем минимум времени между двумя исследуемыми импульсами. А уж сколько оно будет на практике, 100 мкс или 30 мс - это должен учитывать разработчик конкретного устройства. Эта программа даёт ему такую возможность вплоть до 32 мс.

Поясните, плиз, как можно ошибиться уже в обратную сторону?


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


кекс
******

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



Цитата(GetSmart @ Oct 11 2006, 02:01) *
А почему все думают, что у АВР одноуровневой КП? Может уже я чего-то не знаю?

А почему "думают"? ;>
Об этом в ДШ сказано.

When an interrupt occurs, the Global Interrupt Enable I-bit is cleared and all interrupts
are disabled. The user software can write logic one to the I-bit to enable nested interrupts.
All enabled interrupts can then interrupt the current interrupt routine. The I-bit is
automatically set when a Return from Interrupt instruction – RETI – is executed.
....
When the AVR exits from an interrupt, it will always return to the main program and execute
one more instruction before any pending interrupt is served.


Если к примеру сравнить с C51, то в нем предусмотрено два уровня, L0, L1.
Когда выполняется обработчик L0, то другие прерывания с приоритетом L0 не могут быть вызваны, зато прерывание с приоритетом L1 - может. В AVR такого нет по определению, а установка флага I внутри обработчика прерывания, можно назвать не иначе как "глюкодром" smile.gif , ведущий к deadlock основной программы.

Цитата
Так... Вы - против, я - за. Что будем с этим делать?

Ничего smile.gif оставим как есть - 2 варианта.
Не бывает единственно верных решений.

Цитата
Поясните, плиз, как можно ошибиться уже в обратную сторону?

по тактам начиная с такта i:

i - переход на длительный обработчик (пусть будет Uart0) TCNT1 = 0x7FFE
i + 0x1 - срабатывание захвата TIF1 = 1, ICR = 0x7FFF, TOV1 = 0.
i + 0x7FF8 - Uart0 обработка завершена выполнение RETI (4 такта), TCNT1 = FFF6, TOV1 = 0
i + 0x7FFC - возврат в основную, выполнение хотя бы одной команды, TCNT1 = 0xFFFA
i + 0x7FFD - начало входа в обработчик (не менее 4х тактов) T1_ICAP, TCNT1 = 0xFFFB, TOV1 = 0
i + 0x8001 - первая команда обработчика T1_ICAP, TCNT1 = 0xFFFF, TOV1 = 0
i + 0x8002 - вторая команда обработчика T1_ICAP, TOV1 = 1 <------ !
ну и коррекция рез-тата +0x10000, т.к. попадаем под условие коррекции (ICR < 32k, TOV=1).

Эта одна из возможных иллюстраций. На самом деле все ухудшается еще и наличием более высокоприоритетных чем T1_ICAP прерываний от T2 и INTx и т.п.
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
- - GetSmart   Цитата(=GM=)Ничего не понял, поясните. Здесь никак...   Oct 9 2006, 16:24
|- - =GM=   Цитата(GetSmart @ Oct 9 2006, 15:24) Цита...   Oct 10 2006, 10:43
|- - singlskv   Цитата(=GM= @ Oct 10 2006, 14:43) 3) Одна...   Oct 10 2006, 11:49
|- - =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   Цитатакак "глюкодром" Класс! Не, ну...   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 Текстовая версия Сейчас: 19th July 2025 - 03:45
Рейтинг@Mail.ru


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