|
pic18fxxx, CCP, Capture mode, помогите правильно измерить время между импульсами |
|
|
|
Sep 16 2008, 06:55
|
Участник

Группа: Свой
Сообщений: 47
Регистрация: 15-09-08
Из: Россия, Москва, САО
Пользователь №: 40 220

|
задача: померить время между импульсами, с разрешением 0.1us. Максимальная длительность между импульсами - 1.5sec моё решение: настраиваю собственно CCP, прерывание по захвату ССP и по переполнению таймера. в прерывании по переполнению таймера - увеличиваю доп переменную. в прерывании по захвату ССP - сохраняю захваченные значения и доп переменную. суть проблемы: для перехода в прерывание требуется минимум три такта микроконтроллера, + анализ флажков источников прерывания (дабы понять источник прерывания) так вот если захват происходит либо за 3-4 такта до переполнения таймера либо чуть после, подняты оба флажка. И как понять происходил захват до переполнения таймера или после? Всё что я придумала - это анализировать захваченные данные, но очень хочется узнать как поступают здравомыслящие люди
|
|
|
|
|
 |
Ответов
|
Sep 17 2008, 10:36
|

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

|
Цитата(Короткова Светлана @ Sep 16 2008, 05:55)  суть проблемы: для перехода в прерывание требуется минимум три такта микроконтроллера, + анализ флажков источников прерывания (дабы понять источник прерывания) так вот если захват происходит либо за 3-4 такта до переполнения таймера либо чуть после, подняты оба флажка. И как понять происходил захват до переполнения таймера или после? Всё что я придумала - это анализировать захваченные данные, но очень хочется узнать как поступают здравомыслящие люди  Можно сделать так. 1) Назначаете прерывания по захвату и по переполнению на вектор с высоким приоритетом. 2) При возникновении прерывания проверяете флаг захвата. - Если есть захват, то проверяете захваченное время на 0, если 0, то копируете доппеременную в другую ячейку и добавляете к ней 1, т.к. перенос мог возникнуть только в единственном случае, когда в регистре таймера было 0хFFFF и стало 0х0000. Если не 0, то просто копируете доппеременную в другую ячейку. - Если нет захвата, то переходите к п.3 3) Проверяете флаг переполнения, если есть переполнение, то инкрементируете доппеременную, иначе выходите из прерывания.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
Сообщений в этой теме
Короткова Светлана pic18fxxx, CCP, Capture mode Sep 16 2008, 06:55 Короткова Светлана Цитата(=GM= @ Sep 17 2008, 13:36) т.к. пе... Sep 17 2008, 11:00  =GM= Цитата(Короткова Светлана @ Sep 17 2008, 10... Sep 17 2008, 12:26 Короткова Светлана Цитата(=GM= @ Sep 17 2008, 15:26) Немного... Sep 17 2008, 23:58 =GM= Цитата(Короткова Светлана @ Sep 17 2008, 22... Sep 18 2008, 09:32 konstanta RE: pic18fxxx, CCP, Capture mode Sep 18 2008, 02:37 Короткова Светлана пока ничего умнее не придумала. требуется критика,... Sep 18 2008, 02:50 DL36 Цитата(Короткова Светлана @ Sep 18 2008, 05... Sep 18 2008, 05:26 Короткова Светлана Цитата(DL36 @ Sep 18 2008, 08:26) Посмотр... Sep 18 2008, 13:08 =GM= Цитата(Короткова Светлана @ Sep 18 2008, 12... Sep 18 2008, 14:14  Короткова Светлана Цитата(=GM= @ Sep 18 2008, 17:05) 1) Воз... Sep 18 2008, 14:48   =GM= Похоже, у вас какое-то фундаментальное недопониман... Sep 18 2008, 15:49    Короткова Светлана Цитата(=GM= @ Sep 18 2008, 18:49) Похоже,... Sep 18 2008, 17:33     =GM= Цитата(Короткова Светлана @ Sep 18 2008, 16... Sep 18 2008, 23:05 DL36 Цитата(Короткова Светлана @ Sep 18 2008, 16... Sep 18 2008, 20:14 Короткова Светлана Цитата(DL36 @ Sep 18 2008, 23:14) Нет не ... Sep 20 2008, 03:26 =GM= Цитата(Короткова Светлана @ Sep 20 2008, 02... Sep 21 2008, 23:10 Короткова Светлана здесь можно взять MPLAB
собственно мой проект. ди... Sep 22 2008, 13:58 =GM= У вас там ошибка на ошибке (:-(. Например, проверк... Sep 23 2008, 08:50  Короткова Светлана Цитата(=GM= @ Sep 23 2008, 11:50) У вас т... Sep 23 2008, 10:37   =GM= Что если пришли короткие импульсы и захваты начали... Sep 23 2008, 13:19    Короткова Светлана Цитата(=GM= @ Sep 23 2008, 16:19) Что есл... Sep 23 2008, 14:04     =GM= Ну подайте 200 кГц меандр на один канал захвата и ... Sep 23 2008, 14:19      Короткова Светлана Цитата(=GM= @ Sep 23 2008, 17:19) Ну пода... Sep 23 2008, 14:49       =GM= Светунь, я не знаю, какой был первый вопрос. Ваша ... Sep 24 2008, 09:01 NickB Не вдаваясь в суть Вашей дискуссии.
Когда-то давно... Sep 24 2008, 10:08 Короткова Светлана Цитата(NickB @ Sep 24 2008, 13:08) Поэтом... Sep 24 2008, 11:16  =GM= Отвечаю по порядку, хотя вопросы...третьего порядк... Sep 24 2008, 11:29   Короткова Светлана Я повторюсь. Для меня все точки над i уже расставл... Sep 24 2008, 11:50    =GM= Уважаемая Светлана,
Во-первых, с вашей помощью об... Sep 25 2008, 11:06 Короткова Светлана Лишь в споре рождается истина Рада, что мы с ва... Sep 25 2008, 13:00 =GM= Ещё вот, по мелочи, чувствуя свою невольную вину(:... Sep 25 2008, 14:21
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|