|
Как считать значение аппаратно-программного таймера... |
|
|
|
 |
Ответов
|
Nov 3 2006, 11:19
|

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

|
Цитата(Alechin @ Nov 3 2006, 10:50)  Есть некий системный таймер, построенный на аппаратном таймере контроллера и расширенный его программным счетчиком (по переполнению таймера) (пример - 32-ух разрядный счетчик микросекунд системного времени). Задача - чтение на лету его значения. Пока без остановки таймера это сделать у меня не получается (периодически получалась рассинхронизация переполнения счетчика аппаратного таймера и еще не инкрементированного старшего слова). Но при останове таймера происходит потеря точности счета. Приходится корректировать значение. Т.е. все довольно сложно. Какие еще могут быть варианты? Если переполнение таймера обрабатывается прерыванием, то возможен такой вариант. Запрещаете прерывания, читаете содержимое таймера и остальных байт и сохраняете их в памяти, затем разрешаете прерывания. Теперь спокойно анализируете содержимое таймера, если оно равно 0, то значит было переполнение, следовательно надо добавить перенос к старшим байтам, сохраненным в памяти, ни в коем случае не байты системного времени. Если оно не равно 0, значит переполнение уже учтено прерыванием, просто используете ваше текущее время по своему усмотрению.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Nov 3 2006, 12:46
|
Частый гость
 
Группа: Свой
Сообщений: 158
Регистрация: 27-06-05
Из: Химки, Моск.обл.
Пользователь №: 6 334

|
Цитата Если переполнение таймера обрабатывается прерыванием, то возможен такой вариант. Запрещаете прерывания, читаете содержимое таймера и остальных байт и сохраняете их в памяти, затем разрешаете прерывания. Теперь спокойно анализируете содержимое таймера, если оно равно 0, то значит было переполнение, следовательно надо добавить перенос к старшим байтам, сохраненным в памяти, ни в коем случае не байты системного времени. Если оно не равно 0, значит переполнение уже учтено прерыванием, просто используете ваше текущее время по своему усмотрению. Делал такой вариант - все равно проскакивают сбои - ведь пока читали одно из значений могло измениться. И непонятно, когда появился флаг переполнения до чтения таймера или после (у меня чтение значения таймера возможно и в прерывании с более высоким приоритетом, чем прерывание по перепролнению). А понятие "маленькое" растяжимо. Такой вариант уменьшил число сбоев многократно, но не исключил их (я по этому таймеру вычисляю период между метками, подаваемыми на прерывания - до этого раз в пять-шесть секунд были сбои, с данным вариантом раз в 20-30 секунд, с остановом - не дождался сбоя).
|
|
|
|
Сообщений в этой теме
Alechin Как считать значение аппаратно-программного таймера... Nov 3 2006, 10:50  CDT Цитата(Alechin @ Nov 3 2006, 15:46) (я по... Nov 3 2006, 13:11   Alechin ЦитатаА если по подробней о задаче и поискать друг... Nov 3 2006, 13:37    singlskv Покажите свой код.
Попробуем подправить. Nov 3 2006, 15:01     Alechin Цитата(singlskv @ Nov 3 2006, 18:01) Пока... Nov 3 2006, 19:37      singlskv Цитата(Alechin @ Nov 3 2006, 22:37) А чег... Nov 3 2006, 20:24    CDT О точности измерения частоты опять промолчали.
Ес... Nov 7 2006, 05:31     prottoss Цитата(CDT @ Nov 7 2006, 12:31) О точност... Nov 7 2006, 05:47      CDT Цитата(prottoss @ Nov 7 2006, 08:47) [ Че... Nov 7 2006, 06:36       prottoss Цитата(CDT @ Nov 7 2006, 13:36) Тогда для... Nov 7 2006, 06:54        prottoss 2 Alechin
Че й то я так и не понял проблемы. Я де... Nov 7 2006, 07:04         Alechin ЦитатаЧе й то я так и не понял проблемы. Я делаю в... Nov 7 2006, 12:34          prottoss Цитата(Alechin @ Nov 7 2006, 19:34) Отлич... Nov 7 2006, 12:54          =GM= Цитата(Alechin @ Nov 7 2006, 12:34) У мен... Nov 7 2006, 14:24           singlskv Цитата(=GM= @ Nov 7 2006, 17:24) Попробуй... Nov 7 2006, 14:34            =GM= Цитата(singlskv @ Nov 7 2006, 14:34) Цита... Nov 7 2006, 15:36         singlskv 2 prottoss
Цитата(prottoss @ Nov 7 2006, 10... Nov 7 2006, 13:49          prottoss Цитата(singlskv @ Nov 7 2006, 20:49) 2 pr... Nov 7 2006, 14:06           singlskv Цитата(prottoss @ Nov 7 2006, 17:06) Цита... Nov 7 2006, 14:22            prottoss Цитата(singlskv @ Nov 7 2006, 21:22) В Ва... Nov 7 2006, 14:37             singlskv Цитата(prottoss @ Nov 7 2006, 17:37) Цита... Nov 7 2006, 14:56              prottoss Цитата(singlskv @ Nov 7 2006, 21:56) А ко... Nov 7 2006, 15:23               singlskv Цитата(prottoss @ Nov 7 2006, 18:23) Цита... Nov 7 2006, 16:18                prottoss Цитата(singlskv @ Nov 7 2006, 23:18) Пред... Nov 7 2006, 16:30                 singlskv Цитата(prottoss @ Nov 7 2006, 19:30) У на... Nov 7 2006, 16:47                  prottoss Цитата(singlskv @ Nov 7 2006, 23:47) Нет,... Nov 7 2006, 16:52                   singlskv Цитата(prottoss @ Nov 7 2006, 19:52) Цита... Nov 7 2006, 17:02                    prottoss Цитата(singlskv @ Nov 8 2006, 00:02) Совт... Nov 7 2006, 17:18                     singlskv Цитата(prottoss @ Nov 7 2006, 20:18) Мне ... Nov 7 2006, 18:41                      prottoss Цитата(singlskv @ Nov 8 2006, 01:41) Вы о... Nov 7 2006, 19:06                       singlskv Цитата(prottoss @ Nov 7 2006, 22:06) КодU... Nov 7 2006, 19:55                        prottoss Цитата(singlskv @ Nov 8 2006, 02:55) Толь... Nov 7 2006, 20:14                         singlskv Цитата(prottoss @ Nov 7 2006, 23:14) Хм, ... Nov 7 2006, 20:38                          prottoss Цитата(singlskv @ Nov 8 2006, 03:38) Цита... Nov 7 2006, 21:06 singlskv Цитата(Alechin @ Nov 3 2006, 13:50) Есть ... Nov 3 2006, 11:20 xemul имхо, при входе в п/п обработки прерываний по вход... Nov 3 2006, 16:34 prottoss Может быть вот так?
Код__interrupt void SPEED_SENS... Nov 7 2006, 14:48 prottoss Продолжая свой пост, скажу, что счетчик TCNT1 инкр... Nov 7 2006, 16:10 ARIM Цитата(Alechin @ Nov 3 2006, 13:50) Есть ... Nov 8 2006, 07:00 ARIM Цитата(Alechin @ Nov 3 2006, 13:50) Какие... Nov 8 2006, 07:44 prottoss Цитата(ARIM @ Nov 8 2006, 14:44) Цитата(A... Nov 8 2006, 08:09  ARIM Цитата(prottoss @ Nov 8 2006, 11:09) Цита... Nov 8 2006, 08:46   defunct Цитата(ARIM @ Nov 8 2006, 11:46) или возь... Nov 9 2006, 17:09   prottoss Цитата(ARIM @ Nov 8 2006, 15:46) или возь... Nov 9 2006, 17:40    ARIM Цитата(prottoss @ Nov 9 2006, 20:40) Цита... Nov 10 2006, 06:51     prottoss Цитата(ARIM @ Nov 10 2006, 13:51) Цитата(... Nov 10 2006, 12:40      ARIM Цитата(prottoss @ Nov 10 2006, 15:40) Цит... Nov 10 2006, 12:59       prottoss Цитата(ARIM @ Nov 10 2006, 19:59) АРМ был... Nov 10 2006, 13:19 prottoss Вчера проверил все то, что выкладывал выше на трех... Nov 9 2006, 16:49 Alechin Цитата(prottoss @ Nov 9 2006, 19:49) А чт... Nov 9 2006, 19:00  singlskv Цитата(Alechin @ Nov 9 2006, 22:00) Цитат... Nov 9 2006, 19:27   prottoss Цитата(singlskv @ Nov 10 2006, 02:27) Цит... Nov 10 2006, 12:13
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|