Radiohobby Forum

Интернет конференция журнала "Радиохобби"

Вы не вошли.

Объявление

Подписка на новые материалы от Николая Сухова - ролики, схемы, модели, онлайн конференции, консультации, чат.

Внимание! Почта в доменах Яндекс и Mail.ru не будет работать в профилях форумчан, из-за введённых правительством Украины санкций против этих компаний. Всем, кто ранее использовал подобную почту, для сохранения прежней функциональности форума, рекомендуется её поменять.

Огромная просьба, заливать тематические картинки и файлы в личные файловые каталоги на форуме, чтобы они не потерялись, со временем!

Ссылка "Загрузки" находится справа внизу формы набора сообщения.

Подписка на журнал "Радиохобби" прекращена. Подробности. Форум же - продолжает свою работу.

#211 01.11.2006 18:50:25

Dmitry
Забанен
Откуда: Запорожье
Здесь с 03.02.2004
Сообщений: 3,105
Сайт

Re: AVR для "чайников"

Liv пишет:

... Нормальный декодер должен работать ...

Читал такую идею:

в системе делается прерывание по таймеру, расчитанное так, чтоб его период был равен 1/8-й от 1,778 мс. По данному прерыванию сдвигается содержимое регистрика , а в его крайний разряд записывается текущее состояние входа от ик-приемника...


Почему когда мы нарушаем, нас штрафуют, а когда всё делаем правильно, с нас берут налоги?....

Вне форума

#212 01.11.2006 19:01:04

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: AVR для "чайников"

Матроскин пишет:

Тока вот сдвиг не влево а вправо.

Конечно! Я ошибся. Свиг влево - умножение на степень двойки, сдвиг вправо - деление.

Вне форума

#213 01.11.2006 19:13:19

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: AVR для "чайников"

Dmitry пишет:

Читал такую идею:

в системе делается прерывание по таймеру, расчитанное так, чтоб его период был равен 1/8-й от 1,778 мс. По данному прерыванию сдвигается содержимое регистрика , а в его крайний разряд записывается текущее состояние входа от ик-приемника...

Это прерывание нужно синхронизировать с посылкой. А то начнет попадать ровно на переход, что тогда делать? Прием распространенный: по прерыванию от фотоприемника определяется начало бита, запускается таймер с периодом 3/4 периода, в прерывании которого делается выборка входного сигнала и переключение фронта для перывания, если требуется. Это простой способ декодирования, но он не осуществляет контроль длительности входных импульсов.

rc5_dec.gif

Вне форума

#214 01.11.2006 20:09:53

Dmitry
Забанен
Откуда: Запорожье
Здесь с 03.02.2004
Сообщений: 3,105
Сайт

Re: AVR для "чайников"

Леонид! Вы торопитесь отвечать...

Какая разница кто и куда попадет. При том шаге кто нибудь да попадется! Факт отсутствия посылки - FF  в крутящемся регистре после восьми сдвигов. "Отличающийся от FF результат" - шаблон "единицы", XOR с FF от "отличающегося от FF результата" - шаблон "ноля"...


Почему когда мы нарушаем, нас штрафуют, а когда всё делаем правильно, с нас берут налоги?....

Вне форума

#215 01.11.2006 21:03:39

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: AVR для "чайников"

А как быть уверенным, что 8 выборок, задвинутых врегистр, взяты на интервале одного передаваемого бита, а не на кусках двух соседних?

Вне форума

#216 01.11.2006 23:12:05

Матроскин
Ветеран
Откуда: Краснодар
Здесь с 06.02.2006
Сообщений: 2,022

Re: AVR для "чайников"

Liv пишет:

А как быть уверенным, что 8 выборок, задвинутых врегистр, взяты на интервале одного передаваемого бита, а не на кусках двух соседних?

Да, синхронизация нужна, однозначно. Иначе нет никакой уверенности, что ты там надекодировал.



Зачем вызвать прерывание на каждом такте??
Может пусть прерывание инициирует первый стартовый бит, затем по второму определяем нужные времена (3/4 и 5/4 такта), дальше принимаем сигнал, попутно контролируя длительность импульсов. Да и по первому биту, кстати уже можно намерить все, что надо. Результатом работы обработчика прерывания будет адрес системы и код команды в каких-либо регистрах или переменных в ОЗУ. (дай Бог бы теперь все это написать smile )

Я вот только никак в толк не возьму одно дело. В состоянии покоя (когда нет ИК сигнала) на выходе приемника что? Ноль или единица? И полярность импульсов на выходе приемника такая как у Вас в статье на рис. 4?? И опять-таки про те 3,5 мс. Вы писали, что перед посылкой должна быть тишина. Тишина есть, пока посылки нет, но если на выходе приемника сигнал не меняется, как мы прерывание-то вызовем?? Или в случае использования прерывания ждать 3,5 мс не надо??

Да и вот еще что. Прерывание вызывается положительным или отрицательным перепадом?

Отредактировано Матроскин (02.11.2006 00:35:56)


......There is someone in my head, but it's not me.......

Вне форума

#217 02.11.2006 10:19:04

Dmitry
Забанен
Откуда: Запорожье
Здесь с 03.02.2004
Сообщений: 3,105
Сайт

Re: AVR для "чайников"

Liv пишет:

А как быть уверенным, что 8 выборок, задвинутых врегистр, взяты на интервале одного передаваемого бита, а не на кусках двух соседних?

Вы делаете восемь выборок за 1,778 мс. Всё.

ЗЫ. Иногда чтоб осознать идею, с ней нужно "переспать"...

ЗЫ. to Матроскин
В "покое" на выходе ИК-приемника - единица.
Прерывание вызываете по спаду.


Почему когда мы нарушаем, нас штрафуют, а когда всё делаем правильно, с нас берут налоги?....

Вне форума

#218 02.11.2006 12:18:52

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: AVR для "чайников"

Dmitry пишет:

Вы делаете восемь выборок за 1,778 мс. Всё.

Так а в какой момент начинается эта серия выборок? Я так понял из Ваших слов, что таймер работает непрерывно, т.е. процесс выборок совершенно асинхронен по отношению к принимаемому сигналу. В таком случае в 8-разрядный регистр будут вдвинуты куски соседних принятых бит. Как это потом разгребать? В принципе, конечно, возможно, если записывать с периодом < 1.778 / 2 мс всё, что приходит с приемника, а затем этот массив просматривать неким скользящим алгоритмом с целью поиска корреляции с валидной посылкой RC-5... Но это так сложно (кстати, подобный алгоритм пришлось применить для декодирования посылки карточки RFID). Не проще ли синхронизироваться с принятым сигналом?

Dmitry пишет:

ЗЫ. Иногда чтоб осознать идею, с ней нужно "переспать"...

А Вы с этой идеей уже переспали? smile А то как-то туманно объясняете принцип smile Я пока не понял рационального зерна... Особенно магического числа выборок 8.

Еще раз курю Вашу фразу:

Dmitry пишет:

Какая разница кто и куда попадет. При том шаге кто нибудь да попадется! Факт отсутствия посылки - FF  в крутящемся регистре после восьми сдвигов. "Отличающийся от FF результат" - шаблон "единицы", XOR с FF от "отличающегося от FF результата" - шаблон "ноля"...

Предположим, была тишина, в регистре - FF. Предположим, очередной раз серия своим последним сэмплом попала на начало старт - бита, прямо на переход. Естественно, что такой результат нельзя использовать как шаблон "единицы", потому что в каждой последующей серии последний сэмпл будет иметь нестабильное значение. Как и "XOR с FF", а это инверсия всего байта, нельзя использовать как шаблон "ноля". Причем в такой ситуации данный алгоритм вполне может декодировать посылку с ошибкой, что говорит о его низкой помехозащищенности.

P.S. У AVR прерывание может вызываться фронтом, спадом, любым переходом или низким уровнем.

Отредактировано Liv (02.11.2006 12:51:08)

Вне форума

#219 02.11.2006 12:38:59

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: AVR для "чайников"

Матроскин пишет:

Зачем вызвать прерывание на каждом такте??
Может пусть прерывание инициирует первый стартовый бит, затем по второму определяем нужные времена (3/4 и 5/4 такта), дальше принимаем сигнал, попутно контролируя длительность импульсов. Да и по первому биту, кстати уже можно намерить все, что надо. Результатом работы обработчика прерывания будет адрес системы и код команды в каких-либо регистрах или переменных в ОЗУ.

Это плохое предложение. Очень длинный обработчик прерывания получится. Я так делал на 8051, потому что они сами имели низкую производительность, там это не так заметно. Для AVR очень глупо сидеть в прерывании и ждать, пока придет следующий бит. Бесполезно тратится процессорное время. Прерывания должны быть как можно более короткими. Естественно, что в таком случае понадобится одно или два внешних прерывания на каждый принятый бит и, возможно, одно таймерное прерывание. Всё зависит от конкртной реализации декодера. Довольно хороший декодер RC-5 есть по ссылке (правда, на Си): markh.de/software/rc5dec.c

Матроскин пишет:

В состоянии покоя (когда нет ИК сигнала) на выходе приемника что? Ноль или единица?

А осциллографом или тестером посмотреть слабо? Или datasheet почитать? В состоянии покоя там единица, интегральный фотоприемник SFH-506 и подобные инвертирует сигнал.

Матроскин пишет:

И опять-таки про те 3,5 мс. Вы писали, что перед посылкой должна быть тишина. Тишина есть, пока посылки нет, но если на выходе приемника сигнал не меняется, как мы прерывание-то вызовем?? Или в случае использования прерывания ждать 3,5 мс не надо??

В примере AVR410 не используются прерывания от фотоприемника. Это плохой декодер. Если работать по прерываниям, то, естественно, никаких 3.5 мс ждать не надо.

Матроскин пишет:

Прерывание вызывается положительным или отрицательным перепадом?

Опять двадцать пять smile И Вы еще в другой теме жалуетесь, что Вас не берут инженером. Вы даже не знаете, что перед тем, как начинать работать с какой-то микросхемой, нужно хотя бы прочитать datasheet!

Вне форума

#220 02.11.2006 18:59:06

Dmitry
Забанен
Откуда: Запорожье
Здесь с 03.02.2004
Сообщений: 3,105
Сайт

Re: AVR для "чайников"

Для наглядности картинку взял из Вашей же статьи:
pic3.gif

Liv пишет:

Так а в какой момент начинается эта серия выборок? Я так понял из Ваших слов, что таймер работает непрерывно, т.е. процесс выборок совершенно асинхронен по отношению к принимаемому сигналу.

Таймер работает асинхронно.
Возьмем идеальный вариант, когда первые 4 семпла со входа дадут 1, вторые дадат нули. В итоге в регистре F0 - "шаблон единицы" (имеется ввиду навых. ик-приемника, а не в соответствии с приведенным мной Вашим рисунком). XOR с FF дает 0F - "шаблон нуля". Сканирование идет все время. В итоге при приеме 3-х единиц, в регистре три раза подряд будет F0. Приедет ноль, даст 0F.

Теперь допустим, что самый первый перепад приехал не посредине восьми выборок, а допустим после 2-й. В итоге - шаблон единицы - С0.  А сканирование продолжается - приедет следующая единица, снова будет С0, а приедет ноль - в регистре будет 3F (XOR с FF wink )...

Liv пишет:

... Предположим, очередной раз серия своим последним сэмплом попала на начало старт - бита, прямо на переход.

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

Liv пишет:

P.S. У AVR прерывание может вызываться фронтом, спадом, любым переходом или низким уровнем.

Не понял к чему это. У пиков - или фронтом или спадом...

Отредактировано Dmitry (02.11.2006 19:05:06)


Почему когда мы нарушаем, нас штрафуют, а когда всё делаем правильно, с нас берут налоги?....

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.131 сек, 8 запросов выполнено - Использовано памяти: 633.97 Кбайт (Пик: 684.34 Кбайт) ]