Считать последовательность импульсов.
|
|
Klim |
Дата: Вт, 27.12.2011, 14:55 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
79
Замечания:
±
На сайте с 21.12.2009
Статус:
Offline
|
Есть прекрасная штука - ключ от домофона Cyfral. Надо считать его 8-ми байтный код. При подаче на него напряжения от начинает стучать кодовое слово. Работает в режиме токового ключа. При этом логические 0 и 1 формируются длительностью импульса. Скажем примерно так. 1 - импульс 10мс, 0 - импульс 20 мс. Напряжение ниже логической 1, поэтому читать будем через АЦП. А вот как организовать чтение и преобразование? У кого какие мысли есть?
|
|
|
|
DAlexV |
Дата: Вт, 27.12.2011, 15:45 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
http://www.picbasic.ru/publ....-1-0-23 В архиве есть схемка с помощью которой читаешь код
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
|
|
|
|
retas |
Дата: Вт, 27.12.2011, 16:18 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
445
Замечания:
±
На сайте с 10.09.2007
Статус:
Offline
|
http://www.xakep.ru/magazine/xa/104/026/1.asp
|
|
|
|
Klim |
Дата: Вт, 27.12.2011, 16:36 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
79
Замечания:
±
На сайте с 21.12.2009
Статус:
Offline
|
Все не то... Схему я ту собирал, она прекрасно работает и читает ключи (кстати она выполнена в виде компаратора). В данный момент меня интересует сам алгоритм считывания ключа (захват и оцыфровка). Сейчас начал делать девайс для считки, копирования и эмуляции ключей Метаком и Цыфрал. На радиокоте есть данный девайс на АТМеге, но там нет исходников, да и АТМега мне не подходит, т.к. я дружу исключительно с Пиками и Протоном.
|
|
|
|
DAlexV |
Дата: Вт, 27.12.2011, 16:57 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Тогда таймер и прерывание по спаду и фронту (B4-B7) или 2 ноги (одну настраиваешь на прерывание по фронту, другую по спаду сигнала)
В прерывании по фронту считываем то что насчитал таймер(это длительность лог. 0),сбрасываем таймер. В прерывании по спаду считываем то что насчитал таймер(это длительность лог. 1),сбрасываем таймер. В прерывании по переполнению таймера определяем что ключа нет.(стопорим таймер)
В основной программе преобразовываем значение таймера в 1 и 0.
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
|
|
|
|
Klim |
Дата: Вт, 27.12.2011, 17:27 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
79
Замечания:
±
На сайте с 21.12.2009
Статус:
Offline
|
Это все клево, но есть одно но... Читаем через АЦП одной ногой (там уровень порядка 2 вольт). Мысли?
|
|
|
|
DAlexV |
Дата: Вт, 27.12.2011, 17:32 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Quote (Klim) Это все клево, но есть одно но... Читаем через АЦП одной ногой (там уровень порядка 2 вольт). Мысли? В цикле считываем значение АЦП и детектим 0 или 1(можно при желании это залепить в прерывание) в зависимости от того что пришло делаем действия в таймером.
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
|
|
|
|
Klim |
Дата: Вт, 27.12.2011, 17:40 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
79
Замечания:
±
На сайте с 21.12.2009
Статус:
Offline
|
Уже проясняется. А каким способом отловить прерывание?
|
|
|
|
DAlexV |
Дата: Вт, 27.12.2011, 17:46 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Quote (Klim) Уже проясняется. А каким способом отловить прерывание? Смотря чего !!!! таймер - битами состояния. При этом не обязательно использовать программу прерывания. Если произошло переполнение, а прерывание от таймера запрещено TMR0IF будет равен 1(если до этого таймер был включен TMR0.ON)
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
|
|
|
|
Klim |
Дата: Вт, 27.12.2011, 17:52 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
79
Замечания:
±
На сайте с 21.12.2009
Статус:
Offline
|
Про PORTB.0 Все и так ясно. Включили бит сработки по переднему фронту, сработало - переключили на сработку по заднему фронту и считаем. Это все ясно. А как быть, когда мы читаем через АЦП? Если пойти в лоб, то можно закосячить компаратор и через диод (у на portb.0 висит кнопка) отслеживать, но это усложнит схему.
Сообщение отредактировал
Klim - Вт, 27.12.2011, 18:02
|
|
|
|
DAlexV |
Дата: Вт, 27.12.2011, 18:03 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 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).Старею :)
|
|
|
|
Klim |
Дата: Вт, 27.12.2011, 18:10 | Сообщение # 12 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
79
Замечания:
±
На сайте с 21.12.2009
Статус:
Offline
|
Мудрено... Уже начал задумываться над копмаратором. Хотя на Радиокоте написали наоборот, что АЦП читать предельно легче получилось. Алгоритмом не делятся. Что делать уже не знаю. Или мучаться с АЦП, или строить компаратор. Попробую более точно поставить задачу: Есть постоянный сигнал уровня порядка 2 вольта, состоящий из 9 байт. 1-й байт - стартовое слово, остальные 8 - код ключа. Все это крутиться по кругу, пока на ключе есть питание. Как захватить этот код?
Сообщение отредактировал
Klim - Вт, 27.12.2011, 18:14
|
|
|
|
DAlexV |
Дата: Вт, 27.12.2011, 18:16 | Сообщение # 13 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Quote (Klim) Что делать уже не знаю. Или мучаться с АЦП, или строить компаратор. Лично мое мнение... Компаратор проще. На преобразование АЦП и перевод в лог. 1 или 0 требуется время. Хоть не большое, но время. А это может повлиять на точность значений таймера. С цифровым сигналом меньше заморочек. Ну а выбор уж за вами Сэр. Удачи
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
Сообщение отредактировал
DAlexV - Вт, 27.12.2011, 18:16
|
|
|
|
Klim |
Дата: Вт, 27.12.2011, 18:18 | Сообщение # 14 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
79
Замечания:
±
На сайте с 21.12.2009
Статус:
Offline
|
Ясно, я в принципе уже тоже склонился к компаратору. Будут успехи - отпишусь.
|
|
|
|
retas |
Дата: Ср, 28.12.2011, 00:10 | Сообщение # 15 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
445
Замечания:
±
На сайте с 10.09.2007
Статус:
Offline
|
--или строить компаратор--. Возьмите МК с компаратором!
|
|
|
|