|
Измерение временных интервалов, с высокой точностью |
|
|
|
 |
Ответов
|
Oct 10 2006, 23:11
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
defunctСкучали тут без Вас  А почему все думают, что у АВР одноуровневой КП? Может уже я чего-то не знаю? Цитата(defunct) Я таки все так же против увеличения латентности других прерываний и использования проверки последнего бита. Так... Вы - против, я - за. Что будем с этим делать? Ограничение только в том, что любое допустимое в системе прерывание обязано занимать время меньшее, чем минимум времени между двумя исследуемыми импульсами. А уж сколько оно будет на практике, 100 мкс или 30 мс - это должен учитывать разработчик конкретного устройства. Эта программа даёт ему такую возможность вплоть до 32 мс. Поясните, плиз, как можно ошибиться уже в обратную сторону?
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Oct 10 2006, 23:14
|

кекс
     
Группа: Свой
Сообщений: 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 внутри обработчика прерывания, можно назвать не иначе как "глюкодром"  , ведущий к deadlock основной программы. Цитата Так... Вы - против, я - за. Что будем с этим делать? Ничего  оставим как есть - 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 и т.п.
|
|
|
|
Сообщений в этой теме
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 страниц
1 2 >
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|