приемник сигналов от ИК-пульта (PIC12F629). Часть 1

Здесь обсуждаем устройства на МК и программы для них
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: приемник сигналов от ИК-пульта (PIC12F629)

Сообщение rhf-admin »

Нет. Вот смотри. В программе 2 части (процедуры/подпрограммы): одна принимает информацию, вторая (которая как раз называется "рабочая часть") - обрабатывает эту информацию. И есть ещё цикл сканирования, в котором определяется: во-первых, не началась ли передача (появился сигнал от фотоприёмника), во-вторых - не принят ли пакет, который требует обработки (по наличию стартового бита в регистре MBC, поскольку в этой программе мы попадём назад в цикл сканирования только когда примем пакет целиком).
Ты после паузы пытаешься опять выполнить подпрограмму обработки. Но никакой новой информации ещё не принято. И не известно, придёт новый пакет или нет. И если придёт, то с чем. Смысл?
Правильно сделать так (по крайней мере я так это вижу): 1) приняли инфу (после этого опять попадаем в цикл сканирования). В конце подпрограммы приёма запускаем таймер на время чуть больше межпакетного интервала (надо использовать встроенный таймер и прерывания) 2) обработали эту инфу, зажгли светодиод. это всё надо сделать быстрее, чем кончится межпакетный интервал, иначе мы попадём в прерывание не успев принять новую информацию. в нашем случае это и так произойдёт быстрее, но это так, к сведению. Так вот, после того как эту инфу обработали - попадаем опять в цикл сканирования и ждём новых данных. Если приняли ту же команду - мы получается включим этот же светодиод, то есть он как горел, так и будет гореть. Если мы попадаем в прерывание от таймера (то есть таймер отработал, но новая инфа не появилась/ кнопку отпустили) - надо всё гасить.
В начале цикла приёма надо естественно таймер сбрасывать или вообще выключать (в конце всё равно включим).
И ещё. Зажигать диоды надо не так, как в проге на сайте (там сначала всё гасят, причём не совсем правильно, а потом нужный зажигают), а просто загружать в порт нужную комбинацию.
P.S. И, кстати, паузу в конце рабочей части надо сделать поменьше. Просто вся эта прога выполняется быстрее, чем полбита по RC-5 приходят и вернувшись раньше времени в цикл сканирования мы снова попали бы в подпрограмму приёма, потому что последний полубит ещё бы не кончился и на входе висел бы низкий уровень. Так что там одной паузы в полбита как раз бы и хватило. То есть после

Код: Выделить всё

out         bcf           MBC,7
надо оставить только

Код: Выделить всё

call wait
и всё, дальше выход.
С уважением, администрация сайта.
Viktor
Читатель
Читатель
Сообщения: 14
Зарегистрирован: 27 янв 2012, 02:13
Откуда: Саратов

Re: приемник сигналов от ИК-пульта (PIC12F629)

Сообщение Viktor »

На счет прерываний не совсем понятно, точнее совсем не понятно :?
в программе же стоит запрет прерываний?
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: приемник сигналов от ИК-пульта (PIC12F629)

Сообщение rhf-admin »

Ну так надо разрешить и настроить прерывание от таймера. Иначе как узнать, что мы выждали время, через которое должен прийти код повтора, а он так и не пришёл и значит кнопку отпустили и пора выключать светодиод? И как отличить пакет, который пришёл через полдня от пакета, который пришёл через 100 мс. Этот таймер будет типа вочдога, если по нему произошло прерывание - значит кнопку отпустили и повторные пакеты больше не приходят.
С уважением, администрация сайта.
Viktor
Читатель
Читатель
Сообщения: 14
Зарегистрирован: 27 янв 2012, 02:13
Откуда: Саратов

Re: приемник сигналов от ИК-пульта (PIC12F629)

Сообщение Viktor »

я не могу понять, как выполнен в этой программе запрет прерываний :?
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: приемник сигналов от ИК-пульта (PIC12F629)

Сообщение rhf-admin »

Их не надо как-то специально при старте запрещать. Изначально они все запрещены (замаскированы/биты разрешения сброшены в ноль). Вот чтобы разрешить какие-нить прерывания - надо в соответствующих регистрах, в соответствующих битах установить единички + установить глобальный флаг, который разрешает все немаскированные прерывания (7-й бит регистра intcon). Посмотри примеры программ с прерываниями и почитай доку на контроллер, там написано как включаются различные прерывания.
С уважением, администрация сайта.
Viktor
Читатель
Читатель
Сообщения: 14
Зарегистрирован: 27 янв 2012, 02:13
Откуда: Саратов

Re: приемник сигналов от ИК-пульта (PIC12F629)

Сообщение Viktor »

Не могу я понять как все это осуществляется :(
Возможно потому, что не с самого начала начал изучать программирование и микроконтроллеры. У меня просто нет сейчас времени :(
Помогите, пожалуйста с программой!
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: приемник сигналов от ИК-пульта (PIC12F629)

Сообщение rhf-admin »

Возможно потому, что не с самого начала начал изучать программирование и микроконтроллеры.
Начни сейчас, это несложно. Вот, для затравки, с самого начала:
http://www.radiohlam.ru/teory/progr_asm_1.htm
И далее все части. Теоретически, прочитав это, ты должен понять, что алгоритм и даташит - это всё, что тебе нужно для написания программы :)
С уважением, администрация сайта.
Viktor
Читатель
Читатель
Сообщения: 14
Зарегистрирован: 27 янв 2012, 02:13
Откуда: Саратов

Re: приемник сигналов от ИК-пульта (PIC12F629)

Сообщение Viktor »

Я уже начал. Просто боюсь, что не успею научиться и сделать вовремя :(
Просто данный приемник будет практической частью дипломной работы одной девушки с техникума, вот меня преподаватель и попросил сделать его.
Получилось так, что я чуть ли не единственный кто дружит с паяльником в техникуме)
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: приемник сигналов от ИК-пульта (PIC12F629)

Сообщение rhf-admin »

Успеешь, до лета ещё времени - вагон, а мы я думаю к концу февраля управимся, если всё нормально пойдёт. :lol:
С уважением, администрация сайта.
Viktor
Читатель
Читатель
Сообщения: 14
Зарегистрирован: 27 янв 2012, 02:13
Откуда: Саратов

Re: приемник сигналов от ИК-пульта (PIC12F629)

Сообщение Viktor »

Надеюсь :-)
Ответить

Вернуться в «Устройства на микроконтроллерах»