Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: demanik, ivan_fd  
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Считать последовательность импульсов.
Считать последовательность импульсов.
Klim Дата: Вт, 27.12.2011, 14:55  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 79
Репутация: 0   ±
Замечания:   ±
На сайте с 21.12.2009

Статус: Offline

Есть прекрасная штука - ключ от домофона Cyfral. Надо считать его 8-ми байтный код. При подаче на него напряжения от начинает стучать кодовое слово. Работает в режиме токового ключа. При этом логические 0 и 1 формируются длительностью импульса. Скажем примерно так. 1 - импульс 10мс, 0 - импульс 20 мс. Напряжение ниже логической 1, поэтому читать будем через АЦП. А вот как организовать чтение и преобразование? У кого какие мысли есть?
ЯНДЕКС Дата: 27.12.2011
DAlexV Дата: Вт, 27.12.2011, 15:45  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 657
Репутация: 27   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

http://www.picbasic.ru/publ....-1-0-23
В архиве есть схемка с помощью которой читаешь код


Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
retas Дата: Вт, 27.12.2011, 16:18  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 447
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

http://www.xakep.ru/magazine/xa/104/026/1.asp
Klim Дата: Вт, 27.12.2011, 16:36  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 79
Репутация: 0   ±
Замечания:   ±
На сайте с 21.12.2009

Статус: Offline

Все не то... Схему я ту собирал, она прекрасно работает и читает ключи (кстати она выполнена в виде компаратора). В данный момент меня интересует сам алгоритм считывания ключа (захват и оцыфровка). Сейчас начал делать девайс для считки, копирования и эмуляции ключей Метаком и Цыфрал. На радиокоте есть данный девайс на АТМеге, но там нет исходников, да и АТМега мне не подходит, т.к. я дружу исключительно с Пиками и Протоном.
DAlexV Дата: Вт, 27.12.2011, 16:57  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 657
Репутация: 27   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Тогда таймер и прерывание по спаду и фронту (B4-B7) или 2 ноги (одну настраиваешь на прерывание по фронту, другую по спаду сигнала)

В прерывании по фронту считываем то что насчитал таймер(это длительность лог. 0),сбрасываем таймер.
В прерывании по спаду считываем то что насчитал таймер(это длительность лог. 1),сбрасываем таймер.
В прерывании по переполнению таймера определяем что ключа нет.(стопорим таймер)

В основной программе преобразовываем значение таймера в 1 и 0.


Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
Klim Дата: Вт, 27.12.2011, 17:27  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 79
Репутация: 0   ±
Замечания:   ±
На сайте с 21.12.2009

Статус: Offline

Это все клево, но есть одно но... Читаем через АЦП одной ногой (там уровень порядка 2 вольт). Мысли?
DAlexV Дата: Вт, 27.12.2011, 17:32  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 657
Репутация: 27   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Quote (Klim)
Это все клево, но есть одно но... Читаем через АЦП одной ногой (там уровень порядка 2 вольт). Мысли?
В цикле считываем значение АЦП и детектим 0 или 1(можно при желании это залепить в прерывание) в зависимости от того что пришло делаем действия в таймером.


Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
Klim Дата: Вт, 27.12.2011, 17:40  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 79
Репутация: 0   ±
Замечания:   ±
На сайте с 21.12.2009

Статус: Offline

Уже проясняется. А каким способом отловить прерывание?
DAlexV Дата: Вт, 27.12.2011, 17:46  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 657
Репутация: 27   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Quote (Klim)
Уже проясняется. А каким способом отловить прерывание?
Смотря чего !!!! таймер - битами состояния. При этом не обязательно использовать программу прерывания. Если произошло переполнение, а прерывание от таймера запрещено TMR0IF будет равен 1(если до этого таймер был включен TMR0.ON)


Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
Klim Дата: Вт, 27.12.2011, 17:52  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 79
Репутация: 0   ±
Замечания:   ±
На сайте с 21.12.2009

Статус: Offline

Про PORTB.0 Все и так ясно. Включили бит сработки по переднему фронту, сработало - переключили на сработку по заднему фронту и считаем. Это все ясно. А как быть, когда мы читаем через АЦП? Если пойти в лоб, то можно закосячить компаратор и через диод (у на portb.0 висит кнопка) отслеживать, но это усложнит схему.
Сообщение отредактировал Klim - Вт, 27.12.2011, 18:02
DAlexV Дата: Вт, 27.12.2011, 18:03  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 657
Репутация: 27   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Quote (Klim)
А как быть, когда мы читаем через АЦП?

У АЦП есть то же биты признака конца преобразования (когда готов новый результат) сброс бита GO/DONE

или

ADIF: A/D Converter Interrupt Flag bit
1 = An A/D conversion completed (must be cleared in software)
0 = The A/D conversion is not complete


Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
ЯНДЕКС Дата: 27.12.2011
Klim Дата: Вт, 27.12.2011, 18:10  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 79
Репутация: 0   ±
Замечания:   ±
На сайте с 21.12.2009

Статус: Offline

Мудрено... Уже начал задумываться над копмаратором. Хотя на Радиокоте написали наоборот, что АЦП читать предельно легче получилось. Алгоритмом не делятся. Что делать уже не знаю. Или мучаться с АЦП, или строить компаратор. Попробую более точно поставить задачу: Есть постоянный сигнал уровня порядка 2 вольта, состоящий из 9 байт. 1-й байт - стартовое слово, остальные 8 - код ключа. Все это крутиться по кругу, пока на ключе есть питание. Как захватить этот код?
Сообщение отредактировал Klim - Вт, 27.12.2011, 18:14
DAlexV Дата: Вт, 27.12.2011, 18:16  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 657
Репутация: 27   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Quote (Klim)
Что делать уже не знаю. Или мучаться с АЦП, или строить компаратор.
Лично мое мнение... Компаратор проще. На преобразование АЦП и перевод в лог. 1 или 0 требуется время. Хоть не большое, но время. А это может повлиять на точность значений таймера. С цифровым сигналом меньше заморочек. Ну а выбор уж за вами Сэр. Удачи wink


Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
Сообщение отредактировал DAlexV - Вт, 27.12.2011, 18:16
Klim Дата: Вт, 27.12.2011, 18:18  |                                                                                                                Сообщение # 14
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 79
Репутация: 0   ±
Замечания:   ±
На сайте с 21.12.2009

Статус: Offline

Ясно, я в принципе уже тоже склонился к компаратору. Будут успехи - отпишусь.
retas Дата: Ср, 28.12.2011, 00:10  |                                                                                                                Сообщение # 15
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 447
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

--или строить компаратор--.
Возьмите МК с компаратором!
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Считать последовательность импульсов.
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: