Перейти к содержанию
    

pic18fxxx, CCP, Capture mode

я прошу вас разобрать конкретную ситуацию, прошу прокомментировать неадекватное поведение вашего кода который вы приводили. А в ответ не получаю ни йотую долю внимания к СВОИМ вопросам

Ну ладно, скажите конкретно и ВНЯТНО, в чём неадекватность поведения моего кода.

 

И конкретных вопросов от вас что-то не видно, равно, как и ответа на вопрос по приведённому вами алгоритму: почему вы инкрементируете CCP1U, если у вас не было прерывания захвата?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет не эта шел разговор о длинном захвате, а именно ситуации когда период захвата более периода
огромное вам мерси! нашла! и более того, там есть ссылка на электроникс :)

и каково было моё удивление увидеть там Уважаемого =GM= :biggrin:

 

Уважаемый =GM=.

Если у вас всё ещё есть желание выяснить чей алгоритм работоспособен а чей нет, я на 100% знаю способ это выяснить! Собственно я выложу свой готовый проект в MPLABE. на выходе которого, в переменной, в результате симуляции должно появиться 24битное захваченное значение. Вы подправите обработчик IRQ в соответствии со своим алгоритмом, и выложите ниже, я с помощью только двух кнопок (STEP и capture) прошагаю весь ваш алгоритм. Захваченное время будет лакмусовой бумажкой.

Боюсь все другие возможности найти правду исчерпаны.

 

PS. лично для меня все точки над i встали после прочтения темы 2006 года. и на это я готова пойти только ради Вас. Если и Вам это не интересно, предлагаю данную ветку считать закрытой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уважаемый =GM=, если у вас всё ещё есть желание выяснить чей алгоритм работоспособен, а чей нет, я на 100% знаю способ это выяснить! Собственно я выложу свой готовый проект в MPLABE. на выходе которого, в переменной, в результате симуляции должно появиться 24битное захваченное значение. Вы подправите обработчик IRQ в соответствии со своим алгоритмом, и выложите ниже, я с помощью только двух кнопок (STEP и capture) прошагаю весь ваш алгоритм. Захваченное время будет лакмусовой бумажкой. Боюсь все другие возможности найти правду исчерпаны. PS. лично для меня все точки над i встали после прочтения темы 2006 года. и на это я готова пойти только ради Вас

Вот и пойми этих женщин, когда они готовы пойти ради нас на что-то, а когда - нет(:-). Ну давайте поглядим на ваш алгоритм, его ещё никто не видел, по-моему. Кстати, чем вам мой-то код не угодил?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

здесь можно взять MPLAB

собственно мой проект. Capture.zip диафильм, 10МБ!!!

Но лучше стяните его в архиве 3МБ.

посмотрите, станет понятно какие ячейки чему должны равняться при правильной работе.

ну и картинка:

post-40220-1222091652_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У вас там ошибка на ошибке (:-(. Например, проверка только среднего байта захваченного времени может привести к существенным ошибкам определения длительности. Или вот, на рисунке с алгоритмом, вы инкрементируете TMR1U, хотя могло произойти не прерывание по переполнению, а второе прерывание захвата...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У вас там ошибка на ошибке (:-(.

Например, проверка только среднего байта захваченного времени может привести к существенным ошибкам определения длительности.

Не могли бы Вы указанную ситуацию продемонстрировать на примере в симуляторе? для записи диафильма я использовала бесплатную программку отсюда. Иначе Ваша реплика звучит голословно.

 

Или вот, на рисунке с алгоритмом, вы инкрементируете TMR1U, хотя могло произойти не прерывание по переполнению, а второе прерывание захвата...
картинка была для одного канала... остальные каналы по аналогии с первым.

post-40220-1222165694_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что если пришли короткие импульсы и захваты начались при Т=0х0000. Вполне может так быть, что время дойдёт до Т=0х0100, в то время как переполнение ещё не обработано. В итоге, вы получите ошибку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что если пришли короткие импульсы и захваты начались при Т=0х0000. Вполне может так быть, что время дойдёт до Т=0х0100...
Я проверяла, все 5 каналов + инкремент таймера укладывается в 229 тактов, то есть T=0x00E4.

 

а вот если бы вы ....
Дабы избежать голословных заявлений, предлагаю Вам внести те изменения , которые сочтёте нужными, а я протестирую ваш алгоритм.

 

Уважаемый =GM=

вы убрали продолжение своей мысли из предыдущего поста, которое выглядело так:

", а вот если бы вы проверяли оба младших байта захвата на 0, то такой ситуации можно было бы избежать, вплоть до Т=0хFFFF."

Редактирование ваших сообщений после того как вам на них ответили, может вводить в недоумение читателей этой ветки.

Изменено пользователем Короткова Светлана

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну подайте 200 кГц меандр на один канал захвата и увидите, что ваша система встанет, как миленькая.

 

Насчёт редакции ответов. Вроде бы я успел отредактировать до того, как кто-то мне ответил, да тут и нет никого, один я, как перст. Ну и собственно вы, как автор топика. С другой стороны, если не редактировать, то зачем тогда оно нужно, это самое редактирование собственного поста?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну подайте 200 кГц меандр на один канал захвата и увидите, что ваша система встанет, как миленькая.
Следствие зависания станет малая длительность между импульсами, и это скорее второй вопрос, который можно обсудить, но давайте будем последовательны и сначала обсудим первый!

Вы уже попробовали исправить мой алгоритм? Вставляли проверку таймера на 0?

Расскажите результаты. Именно их я от Вас сейчас ожидаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Светунь, я не знаю, какой был первый вопрос. Ваша программа как-то работать будет, чтобы сказать точнее как она будет и будет ли, надо бы посмотреть на тз, т.е. что от программы требуется. Судя по требованиям из первого вашего поста - любая программа будет работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не вдаваясь в суть Вашей дискуссии.

Когда-то давно стояла такая же задача. После долгих обсуждений пришли к выводу что адекватного рашения нет.

Поэтому. Почему бы Вам не применить 32-разрядный таймер/CCP - например в dfPIC33/PIC24

При тактовой частоте 40MHz время переполнения примерно 100сек

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поэтому. Почему бы Вам не применить 32-разрядный таймер/CCP
Уже развела плату, скоро попробую в железе. Как мне кажется и PIC18, должен работать.

 

Когда-то давно стояла такая же задача. После долгих обсуждений пришли к выводу что адекватного рашения нет.
А аргументы не помните?

 

Уважаемый GM. Пожалуйста, ответе на вопросы:

Вы видели диафильмы, которые я для Вас делала?

Вы смотрели в симуляторе, как работает программа?

Делали проверку таймера на нуль?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отвечаю по порядку, хотя вопросы...третьего порядка малости, лучше бы озвучили требования к программе.

Диафильм видел, проникся, и что?

Не смотрел, использую моск.

Что значит, делал проверку на 0?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я повторюсь. Для меня все точки над i уже расставлены. Продолжаю эту ветку исключительно ради Вас. Я сделала Вам предложение подкорректировать код, как сочтёте нужным, Вы его принимаете?

Пожалуйста, ответьте на этот вопрос, несмотря на его порядок малости.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...