Easyelectronics.ru

Электроника для всех
Текущее время: 22 янв 2021, 21:07

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 51 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 20 авг 2014, 00:15 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4910
Откуда: КЧР, поселок Нижний Архыз
ShadS, ненадежно как-то. Да и лишние телодвижения: прерывание по перепаду, прерывание по таймеру... Эдак дойдет до того, что будете nop'ы в цикле крутить для задержки... Проще надо, проще.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 20 авг 2014, 00:20 
Старожил

Зарегистрирован: 30 апр 2010, 22:56
Сообщения: 1589
Откуда: Киев
Да, выборка на 3/4 - это еще один способ декодирования. Не забыть перед этим синхронизироваться )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 20 авг 2014, 00:26 
Старожил
Аватара пользователя

Зарегистрирован: 05 фев 2010, 16:57
Сообщения: 2193
Откуда: Нальчик
Eddy_Em писал(а):
ShadS, ненадежно как-то. Да и лишние телодвижения: прерывание по перепаду, прерывание по таймеру... Эдак дойдет до того, что будете nop'ы в цикле крутить для задержки... Проще надо, проще.
Чет вы о противоположных вещах говорите...
Тут варианта два...
1). пользоваться для обработки манчестера внешними прерываниями, и железным счетчиком для проверки корректности данных...
2). крутить в цикле обработку манчестера, отсчитывая NOP-ы для задержки...

Каким образом по вашему, можно прийти от первого варианта ко второму?????


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 20 авг 2014, 00:27 
Старожил
Аватара пользователя

Зарегистрирован: 05 фев 2010, 16:57
Сообщения: 2193
Откуда: Нальчик
Steel.ne писал(а):
Да, выборка на 3/4 - это еще один способ декодирования. Не забыть перед этим синхронизироваться )
Синхронизация достигается просто, например передачей пилотного байта 0xAA...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 20 авг 2014, 00:29 
Старожил

Зарегистрирован: 30 апр 2010, 22:56
Сообщения: 1589
Откуда: Киев
Эдди, у манчестера есть преимущество, которое вылезет для высоких скоростей - максимальная частота всего в два раза выше битовой. Для твоей zacwire - в четыре. Уже в полосу может не влезть, например.

Если это не важно, то, при прочих равных, да, манчестер декодируется чуть сложнее. Ну ужас, но не ужас-ужас-ужас.

На маленьких скоростях хоть морзянку используй: единица - импульс 1мс, ноль - импульс 2 мс. Между ними, например, 0.5 мс. И помехоустойчиво, и просто ))

PS. Про постоянную составляющую не говорю, потому что здесь оно не критично совчем, но еще раз отмечу - для всякого кодирование есть область применимости. И огульно хаять не стоит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 20 авг 2014, 00:45 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4910
Откуда: КЧР, поселок Нижний Архыз
Steel.ne, подозреваю, что на больших скоростях Манчестер тоже может боком выйти: все эти прыжки между обработчиками прерываний вполне могут добавить ошибок, если в промежутке вдруг еще какое-нибудь прерывание сработает!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 20 авг 2014, 00:49 
Старожил

Зарегистрирован: 30 апр 2010, 22:56
Сообщения: 1589
Откуда: Киев
Eddy_Em писал(а):
Steel.ne, подозреваю, что на больших скоростях Манчестер тоже может боком выйти: все эти прыжки между обработчиками прерываний вполне могут добавить ошибок, если в промежутке вдруг еще какое-нибудь прерывание сработает!

Коряво написать можно обработчик любого сигнала. Неаргументный аргумент :)

Про большую скорость имел в виду: например пара передатчик-приемник может передавать импульсы минимальной длительности 1 мс (гипотетически). В этом случае манчестером я смогу передавать 500 бит в секунду, zacware - всего 250. В пределах миллисекунды обработать прерывание не проблема ))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 20 авг 2014, 00:57 
Старожил
Аватара пользователя

Зарегистрирован: 05 фев 2010, 16:57
Сообщения: 2193
Откуда: Нальчик
Steel.ne писал(а):
Эдди, у манчестера есть преимущество, которое вылезет для высоких скоростей
Манчестер на высоких скоростях - это скорее подходит для аппаратных решений, как например LAN...

Eddy_Em писал(а):
на больших скоростях Манчестер тоже может боком выйти: все эти прыжки между обработчиками прерываний вполне могут добавить ошибок, если в промежутке вдруг еще какое-нибудь прерывание сработает!
В программной реализации (пусть даже используются внешние прерывания и таймеры) говорить о высокой скорости конечно не приходится...
Тут нужно выбирать...
Если нужна скорость (в случае с AVR), то например UART с качественной линией и кварцованными точками...
Если нужно дешево и сердито, то лучше манчестер... при этом можно работать без кварцев, в зашумленной среде, но придется пожертвовать большими скоростями (по сравнению с аппаратными возможностями UART)...


Я например пользуюсь своей библиотекой, с возможностью работать на скоростях 1,2,4,8,16 кбит\сек...
На скорости 32 кбит\сек у меня не получилось состыковаться, но думаю это реально после оптимизации обработчика, просто когда я писал либу, мне скорость не была нужна, вот и не старался особо... (в принципе скорость больше 16 кбит\сек мне и сейчас не нужна...)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 20 авг 2014, 01:33 
Старожил

Зарегистрирован: 30 апр 2010, 22:56
Сообщения: 1589
Откуда: Киев
Я тут вспомнил о своем разделе "извращения" и о том, что собирался расписать кодирование/декодирование манчестера через UART. Если будет интересно - накатаю статью. Ну а пока - http://www.quickbuilder.co.uk/qb/articles/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 20 авг 2014, 02:11 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4910
Откуда: КЧР, поселок Нижний Архыз
Steel.ne писал(а):
Про большую скорость имел в виду: например пара передатчик-приемник может передавать импульсы минимальной длительности 1 мс (гипотетически). В этом случае манчестером я смогу передавать 500 бит в секунду, zacware - всего 250. В пределах миллисекунды обработать прерывание не проблема ))

Какая ж это скорость-то? Я про микросекундные задержки говорю!

На радиоканале при частоте 315МГц можно, по-моему, запросто гонять данные со скоростью не меньше мегабита в секунду!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 20 авг 2014, 02:18 
Старожил
Аватара пользователя

Зарегистрирован: 05 фев 2010, 16:57
Сообщения: 2193
Откуда: Нальчик
Eddy_Em писал(а):
На радиоканале при частоте 315МГц можно, по-моему, запросто гонять данные со скоростью не меньше мегабита в секунду!
Я так понимаю, что скорость вам важна чисто лишь бы було... а что передавать на такой скорости, вы еще наверное не придумали :).....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 20 авг 2014, 02:34 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4910
Откуда: КЧР, поселок Нижний Архыз
Эт точно! ☺

Но можно вполне придумать, что передавать. Скажем, требуется чему-то миллисекундное реагирование. Куда уж тут 9600?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 20 авг 2014, 03:33 
Старожил
Аватара пользователя

Зарегистрирован: 05 фев 2010, 16:57
Сообщения: 2193
Откуда: Нальчик
BrMisha писал(а):
Если кто то выложит рабочий код приема RFID, работающего на прерываниях, буду сильно благодарен)))))
Лови...


Вложения:
mega8_RFID_to_UART_example.7z [28.83 Кб]
Скачиваний: 604
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 20 авг 2014, 05:07 
Старожил

Зарегистрирован: 22 мар 2010, 22:54
Сообщения: 3995
ShadS писал(а):
Вспомните кривой писк на магнитофонах для загрузки программ в спектрумы... это манчестер...
в спектруме не манчестер:)
Eddy_Em писал(а):
На радиоканале при частоте 315МГц можно, по-моему, запросто гонять данные со скоростью не меньше мегабита в секунду!
при какой полосе?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 20 авг 2014, 08:56 
Старожил

Зарегистрирован: 22 авг 2011, 17:36
Сообщения: 254
Вобщем, в течении этой бессонной ночи я понял, почему мой код не работает. Если не врет осцыл, то в самом начале приходит какая то балабурда, а потом уже нормальный сигнал, вот почему у меня периоды разные получались. Думал, определять начало сигнала по 9 нарастающих уровнях, при условии, что расстояние между ими будет примерно равно одному периоду, это будет первые 9 единичек, но потом понял, что 9 единичек может быть и в номере карты, поэтому этот вариант не канает. Придется искать другую схему. Может кто посоветует?
ShadS, пасибки! Буду пробовать. А можно еще и схему?
И еще, получается, что в вашем коде прерывание по таймеру вызывается каждые 64 цикла? Не многовато ли?


Вложения:
Снимок5.png
Снимок5.png [ 16.94 Кб | Просмотров: 12747 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 20 авг 2014, 12:21 
Старожил
Аватара пользователя

Зарегистрирован: 05 фев 2010, 16:57
Сообщения: 2193
Откуда: Нальчик
Ink писал(а):
ShadS писал(а):
Вспомните кривой писк на магнитофонах для загрузки программ в спектрумы... это манчестер...
в спектруме не манчестер:)
Да ладно...

BrMisha писал(а):
ShadS, пасибки! Буду пробовать. А можно еще и схему?
Там же рабочий файл протеуса есть...
Если нет протеуса, то вот схемка... Там при нажатии кнопок первая мега отправляет код RFID карты, а вторая мега его принимает и кидает номер карты в терминал...
Вложение:
sh1.png
sh1.png [ 32.77 Кб | Просмотров: 12729 ]


BrMisha писал(а):
И еще, получается, что в вашем коде прерывание по таймеру вызывается каждые 64 цикла? Не многовато ли?
Это вы про код на mega8, и про такты контроллера? И почему решили что каждые 64 такта - прерывание?

Там прерывания происходят когда прошло 3\4 времени манчестерского бита, ну и непосредственно когда приходит сам следующий бит...
Если частота манчестера 2кгц (например RFID карта), то период следования битов - 0,5 мсек... а это огого сколько тактов...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 20 авг 2014, 15:49 
Старожил

Зарегистрирован: 22 авг 2011, 17:36
Сообщения: 254
Сори, я протупил. Только что проспался, теперь вроде мозг норм работает.
Скажите, пожалуйста, а что будет, если на вход поступит сначала несколько десятков ошибочных периодов, а затем манчестерский код, Ваша прошивка его зафиксирует или нужно чтобы сразу передавался манчестерский код?
Как я и писал выше, у меня в начале на вход попадает какой то мусор, а потом уже манчестерский код. Пробовал отлавливать начало по 9 единицам, а потом читать остальные биты. В итоге, эти биты были одинаковые для одной и той же карты, но разные для разных карт, с чего можно сделать вывод, что биты успешно прочитаны, но так как 9 бит может быть не только в начале, прочитаная последовательность битов не является верной:(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 20 авг 2014, 20:07 
Старожил

Зарегистрирован: 22 авг 2011, 17:36
Сообщения: 254
С горем пополам удалось отфильтровать мусор и принять рабочие данные. Итак, беру USB ридер, тыкаю в него RFID метку (брелок), мне выдает 30067971210 (это его серийный номер).
Вот какие биты выдает мой ридер:
1111111110000001111000000000000110000001101101001100011010011110.
Как видим, в начале 9 единиц, в конце 0, как и должно быть. Вот разделил (9 начальных единичек убрал):
Код:
-----VERSION-----
0000
0
0111
1

-----TAG SERIAL NUMBER-----
0000
0
0000
0
0011
0
0000
0
1101
1
0100
1
1000
1
1010
0

-----COLUMN PARITY BITS-----
1111

-----STOP BIT-----
0

Как вычислить column parity bits я еще не понял, но остальные биты четности совпадают. Могу предположить, что пакет пришел правильный. Но как связан номер 30067971210 (считанный покупным ридером) с тем, который прочитал мой ридер?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 20 авг 2014, 20:20 
Старожил

Зарегистрирован: 30 апр 2010, 22:56
Сообщения: 1589
Откуда: Киев
Ну так сложи все данные в кучку:

Код:
-----VERSION-----
0000
0111
0000
0000
0011
0000
1101
0100
1000
1010
-----COLUMN PARITY BITS-----


получится 0000011100000000001100001101010010001010 в двоичном, это и есть 30067971210 в десятичном


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 20 авг 2014, 20:21 
Старожил

Зарегистрирован: 22 авг 2011, 17:36
Сообщения: 254
PS: как вычислить column parity bits уже понял.
Steel.ne, Хм, а я сразу что то не то вычислил))))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 21 авг 2014, 02:35 
Старожил

Зарегистрирован: 22 авг 2011, 17:36
Сообщения: 254
Товарищи, никто не подскажет, как можно сделать printf для uint64_t? %llu не работает, выводит пустую строку.
Ну или просто как вывести uint64_t в строку, не обязательно через printf.
PS: пишу в Atmel studio 6


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 21 авг 2014, 12:46 
Старожил

Зарегистрирован: 30 апр 2010, 22:56
Сообщения: 1589
Откуда: Киев
printf("%lu%lu", var/1000000000, var%1000000000)

Или в шестнадцатеричном выводи, если разницы нет


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 21 авг 2014, 14:04 
Старожил

Зарегистрирован: 22 авг 2011, 17:36
Сообщения: 254
Пасибо! Работает)))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 21 авг 2014, 15:08 
Старожил

Зарегистрирован: 22 авг 2011, 17:36
Сообщения: 254
Вобщем, все готово.
Исходя с того, что в начале мусор, могу сделать вывод, что определить время периода не возможно.
Как работает код:
1. Ждем пока придет 9 единичек, для этого включаем захват по нарастающему, если первые 9 нарастающих равны длине указанного периода, то продолжаем, если нет, начинаем сначала.
2. Принимаем биты в кольцевой буфер.
3. Когда пришло 64 бита, проверяем их (чтобы в начале было 9 единичек, в конце 0, совпадал паритет). Если проверка не прошла, переходим к пункту 2.
4. Если за 3/4 периода не было перехода (который должен быть в середине бита), переходим к пункту 1.
Работа довольно стабильная. Исходники прилагаю.


Вложения:
RFID.rar [9.31 Кб]
Скачиваний: 390
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Распознавание RFID
СообщениеДобавлено: 03 апр 2015, 14:34 
Здравствуйте!
Аватара пользователя

Зарегистрирован: 14 апр 2014, 10:40
Сообщения: 4
Откуда: Одесса
ShadS писал(а):
Чет вы там с декодированием слишком мудрите... там все просто делается... вот как я декодировал...

1) Входим в обработчик прерывания при любом перепаде, хоть из 0 в 1, хоть из 1 в 0...
2) Выключаем внешнее прерывание на период длиной в 3\4 слота бита.
Вложение:
pic1.png


3) Проверка на корректность длительности замера
Если замер не попадает в окно допустимых значений - инициализируем прием сначала...
Вложение:
pic2.png


4) Значение принятого бита (уровень в линии после прерывания) задвигаем в байт приемник ByteIn


Подскажите пожалуйста, а как согласно этой схеме определять значение MAN_PERIOD_LEN?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 51 ]  На страницу Пред.  1, 2, 3  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB