Микроконтроллеры | Ликбез по программированию PIC |
|
---|---|---|
Я что-то невнимательно читаю Zandy: При любой длительности входного сигнала, даже в сотни раз превышающей период прерываний, всегда при анализе прерываний обнаружится такой момент, когда изменение сигнала (или фронт) будет иметь место. И что мы с этим будем делать? Будем организовывать измерение длительности бесконечно большого периода, инкрементируя бесконечно длинный регистр ROLLOVER? Я же уже написал, как это решается. Заводим флажок, который сигнализирует, что следующий импульс в канале будет первым. А при получении импульса смотрим, взведён этот флажок, или нет. Если взведён - только запоминаем значение таймера, и сбрасываем флажок. Если не взведён - то вычисляем длительность импульса.. Этот же флажок поможет нам при старте программы. |
|
|
AHTOXA: и ждём импульса. |
|
|
AHTOXA: Заводим флажок, который сигнализирует, что следующий импульс в канале будет первым. А при получении импульса смотрим, взведён этот флажок, или нет. Если взведён - только запоминаем значение таймера, и сбрасываем флажок. Если не взведён - то вычисляем длительность импульса.. Этот же флажок поможет нам при старте программы. |
|
|
Ладно. Что-то мы зациклились на одном. Меня вот что интересует. Усреднять мы будем за 8 периодов или еще как? Откуда взялась эта цифра 8? Усреднять будем КАЖДЫЙ период по 8-и текущим отсчетам, или 8 периодов усредним, обнулим регистры, запишем новые 8 текущих значений, опять усредним и т. д? Усреднение будем проводить в прерывании или в основной программе? Сравнение с пороговыми значениями частот опять же где будем делать? В прерывании проще, но займет лишнее время, а это влияет на точность. В основной программе сложнее - опять надо будет дополнительно выстраивать очередность действий по каждому каналу. Выравнивать времена обработки по различным сценариям, т. к. еще и моргалки куда-то встраивать надо, т. е. вводить таймеры задержки. Как соорудить гистерезис при оценке значений? Короче, еще много ??????? Просто подумалось опять, а зачем нам такая быстрая обработка каналов (в прерывании), если самое быстрое мигание светодиода - 0.5 Гц. Это я по поводу предлагаемой в самом начале обсуждения последовательной обработки с ожиданием сигнала по каждому каналу. |
|
|
Zandy: Так вот, импульс пришел, и довольно быстро после обнаружения тайм-аута. Что делать? Сбрасывать все флажки? В следующем прерывании опять есть импульс. И еще пять прерываний подряд есть импульс. Работаем штатно. На шестом прерывании опять тайм-аут. Мы так и будем дергаться? Вот я про что! Я и предлагал обработку именно такой ситуации. Ну во-первых, можно и подёргаться, раз уж ТЗ такое Zandy: Да, так можно. Одним выстрелом - двух зайцев. Но это возможно только в том случае, если, как вы и предлагаете, производить измерение в течении не менее двух периодов прерываний. Тогда получается. Но если нам этого не надо делать? Если нас в нашей задаче удовлетворяет измерение в течении одного периода, зачем же усложнять программу? Нет, флажки никак не связаны с этим. Их можно применить в любом случае. Насчёт остального. Начните уже писать программу, наконец |
|
|
Zandy: picmaniaca давно не слыхать. Способ, предложенный им, с задействованием дополнительного таймера тайм-аута самый простой и понятный Я тут, никуда не делся. Просто вы так рванули вперёд, что мне не угнаться. На работе много дел свалилось, мозги работают там. Для расслабления вечерком уже выпил пивка. И сегодня буду не писателем, а читателем. |
|
|
AHTOXA: Начните уже писать программу, наконец |
|
|
picmaniac: Просто вы так рванули вперёд, что мне не угнаться. |
|
|
Спасибо, конечно, на добром слове и за доверие. Но, как сказано выше, на сегодня у меня - тайм-аут! |
|
|
Просматривая ещё раз ветку, я вот под влиянием пива подумал - а не лучше ли будет сделать так, как скромно и тихо предложил chav1961 ещё на стр.50? |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2025 |