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

 
 
> pic18fxxx, CCP, Capture mode, помогите правильно измерить время между импульсами
Constantka
сообщение Sep 16 2008, 06:55
Сообщение #1


Участник
*

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



задача:
померить время между импульсами, с разрешением 0.1us.
Максимальная длительность между импульсами - 1.5sec

моё решение:
настраиваю собственно CCP,
прерывание по захвату ССP и по переполнению таймера.

в прерывании по переполнению таймера - увеличиваю доп переменную.
в прерывании по захвату ССP - сохраняю захваченные значения и доп переменную.

суть проблемы:
для перехода в прерывание требуется минимум три такта микроконтроллера,
+ анализ флажков источников прерывания (дабы понять источник прерывания)
так вот если захват происходит либо за 3-4 такта до переполнения таймера либо чуть после, подняты оба флажка. И как понять происходил захват до переполнения таймера или после? Всё что я придумала - это анализировать захваченные данные, но очень хочется узнать как поступают здравомыслящие люди wink.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Constantka
сообщение Sep 18 2008, 13:08
Сообщение #2


Участник
*

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



Цитата(DL36 @ Sep 18 2008, 08:26) *
Посмотрите на телесистемах, было интересное решение для захвата в 32 бита.
Пересмотрела всю конференцию где упоминалось про CCP. Потратила час времени.
Нет ни одного обсуждения сохранения хотя бы флажка переполнения таймера!!!
Вы вероятно имели ввиду ветку Можно ли используя аппаратные возможности Capture/Compare (Timer_B) в MSP430F149, реализовать 4 счетчика внешних импульсов (32-разрядные), с частотой счета до 1МГц? (МК работает на 8МГц) так это как говорится ноу коментс...

Цитата(=GM= @ Sep 18 2008, 12:32) *
Создаётся впечатление, что вы не понимаете идеи моего кода, придётся немного поаргументировать, чтобы вы тоже порадовались.
Уважаемый =GM=, я крайне благодарна Вам за Вше внимание к проблеме.
Однако очень прошу вас отойти от мысли, что Вас не понимают. Ваша идея мне понятна как 5 копеек! И я всячески пытаюсь обратить Ваше внимание на её неработоспособность, уже и в картинках и развлекательных видеофильмах biggrin.gif Попробуйте хоть на 10 минут посмотреть с позиции, что что-то в вашем алгоритме не так. И тогда у нас скорее всего получится нормальное обсуждение.
Цитата(=GM= @ Sep 18 2008, 12:32) *
Если в моём коде сначала произойдёт прерывание по переполнению TMR1, то будет скорректирован дополнительный байт auxbyt3, если затем произойдёт захват CCP1, то при проверке захваченное значение естественно будет больше нуля, и допбайт времени auxbyt3 будет благополучно скопирован в байт newtim3 без инкрементирования. Ну и что здесь неверного?
Да и мне тоже сначала так показалось. Давайте предположим что этот "...если затем произойдёт захват CCP1, то..." произойдёт на первой или второй строчке нашего обработчика прерывания. тогда оба флажка будут в 1! и CCP1IF и TMR1IF, рассмотрите пожалуйста эту ситуацию! Именно она продемонстрирована на диафильме
Цитата(=GM= @ Sep 18 2008, 12:32) *
Рассмотрим ситуацию с точки зрения системного времени Т, системных тиков, если хотите, которые фиксирует таймер1 в переменных time2, time1, time0 (две последние переменные по сути - регистры таймера). Время захвата фиксируется в переменных capt2, capt1, capt0 (две последние переменные по сути - регистры схемы захвата).
Ok давайте рассмотрим.
Цитата(=GM= @ Sep 18 2008, 12:32) *
Ситуация 1. T=0xFFFF. Прерывания по переполнению нет, и может возникнуть прерывание захвата. Если прерывание захвата возникло, capt2=time2=0х02(произвольно), capt1=time1=0xFF, capt0=time0=0xFF. Что и должно быть.
Не вызывает сомнений! 5+
Цитата(=GM= @ Sep 18 2008, 12:32) *
Ситуация 2. T=0x0000. Есть прерывание по переполнению, и может возникнуть прерывание захвата. Если прерывание захвата возникло, в моём коде оно обрабатывается первым, тогда capt2=time2=0х02, capt1=time1=0x00, capt0=time0=0x00. Поскольку время захвата равно 0х0000,
Вот давайте посчитаем! Команды перехода выполняются за два таката, следовательно значение таймера будет=2. а вы только на на адресе 0008h и до первого btfss CCP1IF надо ещё сохранить WREG, а если сейчас произойдет захват? захваченное значение будет 0002h, (и появится флаг CCP1IF см диафильм)
Цитата(=GM= @ Sep 18 2008, 12:32) *
Ситуация 3. T=0x0001. Прерывания по переполнению нет, и может возникнуть прерывание захвата. Если прерывание захвата возникло, capt2=time2=0х03, capt1=time1=0x00, capt0=time0=0x00.
тут я не поняла почему не возникло прерывание по таймеру...
Цитата(=GM= @ Sep 18 2008, 12:32) *
Вопрос по приведённому алгоритму. Почему вы инкрементируете CCP1U, если у вас не было прерывания захвата?
предположим у меня только два источника прерывания, ССP1 и TMR1.
Ну может конечно я чего то недопонимаю, Но тогда вам нужно дать конкретный комментарий именно к тому месту моих рассуждений который вам кажется неверным. А не просто повторять свою идею да ещё в мельчайших подробностях. Пожалуйста обратите внимание на ход моих мыслей!
Go to the top of the page
 
+Quote Post
DL36
сообщение Sep 18 2008, 20:14
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 460
Регистрация: 5-10-06
Из: Херсон
Пользователь №: 21 006



Цитата(Короткова Светлана @ Sep 18 2008, 16:08) *
Пересмотрела всю конференцию где упоминалось про CCP. Потратила час времени.
Нет ни одного обсуждения сохранения хотя бы флажка переполнения таймера!!!
Вы вероятно имели ввиду ветку Можно ли используя аппаратные возможности Capture/Compare (Timer_B) в MSP430F149, реализовать 4 счетчика внешних импульсов (32-разрядные), с частотой счета до 1МГц? (МК работает на 8МГц)

Всего час. sad.gif

Нет не эта шел разговор о длинном захвате, а именно ситуации когда период захвата более периода таймера. Рассуждения показались интересными но до конца в код не вникал поскольку это далеко от моих предпочтений на этот момент. Посмотрите еще сахару, часто теме перекликаются, может что в исходниках есть. Кстати тут у соседей довольно активная ветка многие решения я часто просто переношу с АВРа благо Си это позволяет.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Короткова Светлана   pic18fxxx, CCP, Capture mode   Sep 16 2008, 06:55
- - =GM=   Цитата(Короткова Светлана @ Sep 16 2008, 05...   Sep 17 2008, 10:36
|- - Короткова Светлана   Цитата(=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
|- - =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, 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


Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 20:26
Рейтинг@Mail.ru


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