Обсуждаем цифровые устройства...
Ответить

Re: Копировщик RFID-ключей T5557

Чт мар 22, 2018 08:21:51

Подскажите пожалуйста у вас программа выложена ведь,вы в какой проге пишите?,хочу полностью проект открыть,раньше смотрел через блокнот.
Нашел вчера у ся ошибку,вывел все передаваемые данные с устройства по юарт,ошибок в данных больше нет,все исправил,проверял несколько раз,но запись не идет,вот хотелось бы все длительности точно посмотреть,может чего упустил.

Тут вы тоже что то непонятное пишите:
"//в слова 5 и 6 карты EM4305 записываем UID (40 бит сначала конвертируем в 64 бита)"

всмысле???

мы же передаем карте:

сначала в 5 блок тоесть мы отправляем 45 бит

Код:
D00D01D02D03D04D05D06D07 P0
D08D09D10D11D12D13D14D15 P1
D16D17D18D19D20D21D22D23 P2
D24D25D26D27D28D29D30D31 P3
PC0PC1PC2PC3PC4PC5PC6PC7 "0"


а потом в 6 блок отправляем 45 бит
Код:
D00D01D02D03D04D05D06D07 P0
D08D09D10D11D12D13D14D15 P1
D16D17D18D19D20D21D22D23 P2
D24D25D26D27D28D29D30D31 P3
PC0PC1PC2PC3PC4PC5PC6PC7 "0"


так же ведь и также с конфигурацией

Еще вопросик, смотрите я честность столбцов смотрю как?,к примеру я все байты перевернул , что такое PC0? это четность столбцов D00D08D16D24?,или же D07D15D23D31 - тобишь четность тех байтов которые уже перевернул, а потом еще раз переворачиваем младшим байтом или как?

тоесть смотрите к примеру я байты уже перевернутые т е отправленные байты младшим битом вперед

Код:
00001111 0
11110000 0
10101010 0
10000000 1
;//////////
11010101 0
или же так шлем четность столбцов?
10101011 0

Re: Копировщик RFID-ключей T5557

Чт мар 22, 2018 11:02:14

вы в какой проге пишите?


В WinAVR. Но по сути там достаточно обычного текстового редактора.

всмысле???


А чего тут не понятного-то? :roll: Полный передаваемый номер карты - 64 бита (с битами чётности, девятью единицами и нулём в конце). Вот это и надо записать в блок 5 и блок 6. Блики по 32 бита. А нужно 64. Значит, нужно два блока.

,к примеру я все байты перевернул , что такое PC0?


А вы не пробовали взять строго, как в программе сделано? ;)

Re: Копировщик RFID-ключей T5557

Чт мар 22, 2018 11:07:57

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

я же писал уже я си вспоминать полностью не хочу,что то я помню.
PC0-это D0D8D16D24 как в даташите, или же это D7D15D23D31 -тобишь перевернули опять?

кстати even parity-это у нас как получается 11=0?- это по строкам
а по столбцам также even parity?

я так понимаю для записи это все что нужно отослать карте?
Код:
;///////////////////////////////////
FieldOn()
delay_ms(500);
 //запись конфигурации (манчестер, RF/64, выдача слова 6)
 WriteEM4305Word(4,0x5F,0x80,0x01,0x00);
 //запись ID карты в слова 5 и 6
 WriteEM4305Word(5,RFID_Send_Buffer[0],RFID_Send_Buffer[1],RFID_Send_Buffer[2],RFID_Send_Buffer[3]);
 WriteEM4305Word(6,RFID_Send_Buffer[4],RFID_Send_Buffer[5],RFID_Send_Buffer[6],RFID_Send_Buffer[7]);
 FieldOff();//отключаем электромагнитное поле
 _delay_ms(500);

;/////////////////////////////
каждый байт мы переворачиваем и шлем младшим байтом вперед?
странно что у вас функция Логин стоит на первом месте перед записью,тоесть тот кто повторит ваш проект,если у него карточка пустая без пароля получается не запишет данные?

Re: Копировщик RFID-ключей T5557

Пт мар 23, 2018 08:11:15

я же писал уже я си вспоминать полностью не хочу,что то я помню.


Там такой Си, что и вспоминать нечего. ;)

я так понимаю для записи это все что нужно отослать карте?


Да. Записать вот это в 5 и 6 слова.

странно что у вас функция Логин стоит на первом месте перед записью,тоесть тот кто повторит ваш проект,если у него карточка пустая без пароля получается не запишет данные?


Запишет. Логин на карточке включать надо, чтобы он работал. Изначально он отключён.

Re: Копировщик RFID-ключей T5557

Вс мар 25, 2018 14:02:33

Логин на карточке включать надо, чтобы он работал. Изначально он отключён.


Автор я конечно все понимаю,если вы не знаете зачем вы путаете людей,если на карте нет пароля нахрен этот логин,тем более он выключен у вас в конфиге:

логин не читается если 0

Код:
co18: Read Login
When set to logic 1, the reading of all words, except
Words 0 and 1, by using the Read Word command is
protected. Reading any of these words using the Read
Word command, can be done upon successful execution
of a Login command.


;//запись пароля запрещена если 0
Код:
co20: Write Login
When the Write Login bit is set to logic 1, modification of
EEPROM content is protected. Writing any word using
Write Word command or changing protection using
Protect command, can be done upon successful
execution of a login command.
Note: Independent of write login configuration bit state, Password
(word 2) reprogramming can be done upon successful execution
of a login command


Вообщем я собрал устройство и все работает,даташит рулит как всегда,но не ваша программа.

Напишу основные ошибки из-за которых сделать по алгоритму автора ничего не выйдет это все 100 процентов.
Пишу для тех кто будет делать протокол для карт EM4305.

Во первых всегда смотрим даташит:

Кому лень искать то даташит есть на первой странице этой Ветке:

viewtopic.php?f=2&t=133776

смотрим два даташита который выложил автор.

Дальше...

Код:
void FirstFieldStop_4305(void)
{
 FieldOff();
 _delay_us(6*8);
 FieldOn();
 _delay_us(12*8);
 FieldOff();
 _delay_us(40*8);
 FieldOn();
 _delay_us(17*8);
 FieldOff();
}


Что это вообще такое??? :))) ,я не хочу вас обидеть но это угар.
Открываем даташит и пишем правильно:
Как говориться останавливаем поле на 55 циклов и включаем 17
Код:
void FirstFieldStop_4305(void)
{
 FieldOff();
 _delay_us(55*8);
 FieldOn();
 _delay_us(17*8);
}

Правим остальное:
не 30 а 32 цикла
Код:
void SendOne_4305(void)
{
 FieldOn();
 _delay_us(32*8);
}


Дальше...
Код:
void SendZero_4305(void)
{
 FieldOff();
 _delay_us(15*8);
 FieldOn();       
 _delay_us(17*8);
}


Итак с этим разобрались,теперь с остальным.
Внимание у тех у кого карточка пустая не нужно при записи ставить вначале Логин и сбрасывать его ,либо еще что то с ним делать,в этом нету смысла!!!,ИТАК ВСЕ ЗАПИШЕТСЯ.
///////////////////////////////////////////////////

Поле было включено....
ИТак дальше делаем так:


Команда записи 0101

Пишем конфигурацию в 4 блок (0010 00 1):

Код:
FirstFieldStop_4305
SendZero_4305
0101
0010 00 1

Так теперь пишем данные,смотрим их в даташите,для ленивых напишу,незабываем про четность строк и колонок:
В данной конфигурации Write Логин отменен,данные не переворачиваем!!!

0xFA 0 0x01 1 0x80 1 0x00 0 0x7B 0

вконце делаем:

FieldOn
delayms 20

////////////////////////////////////////////////////
Пишем 32 бита, 1 часть данных в 5 блок (1010 00 0) :

Код:
FirstFieldStop_4305
SendZero_4305
0101
1010 00 0

Так теперь пишем данные,внимание Данные с карточки переворачивать не нужно,как это делает автор!!! ,и пишет тут что данные идут младшим битом вперед,это путает людей,https://habrahabr.ru/post/330710/
Приведу пример моей карточки:
111111111 0000 0 1011 1 0000 0 0000 0 0011 0 0101 0 1111 0 0111 1 0001 1 1010 0 1110 0

Шлём вот так(незабываем про четность строк и колонок):

11111111 0
10000010 0
11100000 1
00000001 1
10011100 0

вконце делаем:

FieldOn
delayms 20



Пишем 32 бита, 2 часть данных в 6 блок (0110 00 0) :

Код:
FirstFieldStop_4305
SendZero_4305
0101
0110 00 0

внимание Данные с карточки переворачивать не нужно,как это делает автор!!!

Шлём вот так(незабываем про четность строк и колонок):

10010101 0
11100111 0
10001110 0
10011100 0
01100000 0

вконце делаем:

FieldOn
delayms 20


Теперь Особое внимание уделю для тех кто хочет поставить свой пароль на карточку делается это так,отправляем конфиг :


Код:
FirstFieldStop_4305
SendZero_4305
0101
0010 00 1

Так теперь пишем данные,смотрим их в даташите,для ленивых напишу,незабываем про четность строк и колонок:
В этих настройках разрешен write логин

0xFA 0 0x01 1 0x88 0 0x00 0 0x76 0

вконце делаем:

FieldOn
delayms 20


Тут в конфиге указано что мы можем сделать Логин,тоесть запаролить карту

Дальше...

Незабываем про то что в данных не нужно переворачивать быйты!!!,кроме адрессации.
Шлём...

SendEM4305Login(0x00,0x00,0x00,0x00);//сброс
шлём свой пароль:

Код:
FirstFieldStop_4305
SendZero_4305
0101
0100 00 1
тУТ ПИШЕМ ПАРОЛЬ НАПРИМЕР:

0x05 0 0xD7 0 0x3B 1 0x9F 0 0x76 0

fieldon
delayms 20


Теперь Логинимся к нашей карточке с этим паролем:

Код:
FirstFieldStop_4305
SendZero_4305
0011
тУТ ПИШЕМ ПАРОЛЬ НАПРИМЕР:

0x05 0 0xD7 0 0x3B 1 0x9F 0 0x76 0

fieldon
delayms 20

Re: Копировщик RFID-ключей T5557

Вс мар 25, 2018 14:42:32

Автор я конечно все понимаю,если вы не знаете зачем вы путаете людей,если на карте нет пароля нахрен этот логин,тем более он выключен у вас в конфиге:


Я же сказал, всё это оставлено на будущее для тех, кому это потребуется. 8)

Вообщем я собрал устройство и все работает,даташит рулит как всегда,но не ваша программа.


Странно, а как же тогда она работает вот уже почти два года? :tea:
И ещё удивительнее, что у вас по даташиту заработало. Вы, наверное, первый, у кого по этому даташиту карточка записалась. :) На kazus протокол записи em4305 долго был камнем преткновения даже с даташитом.

Напишу основные ошибки из-за которых сделать по алгоритму автора ничего не выйдет это все 100 процентов.


Учитывая, что снималось всё это с реального копировщика, это не вышло почему-то только у вас. ;)

Что это вообще такое???


Это то, что было снято с реального копировщика.

Внимание у тех у кого карточка пустая не нужно при записи ставить вначале Логин и сбрасывать его ,либо еще что то с ним делать,в этом нету смысла!!!,ИТАК ВСЕ ЗАПИШЕТСЯ.


Я же сказал, что он не нужен для незапароленых карточек. ;)

Re: Копировщик RFID-ключей T5557

Вс мар 25, 2018 16:26:46

Хм да уж,поверьте не вышло, это снималось тоже с реального копировщика,там ничего сверхестественного нет,а протокол этот никакая ни тайна,все написано в даташите:
вот осциллограммы действительно с реального копировщика :))) :

Я даже не удивлен что у меня ваш алгоритм не заработал,а по даташиту с первого раза запахал,странно неправда ли.
Вложения
осцил2.jpg
(110.77 KiB) Скачиваний: 710
осцилл.jpg
(111.93 KiB) Скачиваний: 607

Re: Копировщик RFID-ключей T5557

Вс мар 25, 2018 16:30:29

Хм да уж,поверьте не вышло,


Что у вас не вышло - поверю. У остальных-то вышло. :)
Последний раз редактировалось da-nie Вс мар 25, 2018 16:32:57, всего редактировалось 2 раз(а).

Re: Копировщик RFID-ключей T5557

Вс мар 25, 2018 16:31:12

Обратите внимание на Field Stop,там такой кракозябры как у вас нету

Код:
FieldStop 32-100 циклов:

Fieldoff
пауза 55 циклов
Fieldon
пауза 17 циклов

всеееееее.....откуда у вас такая каша

дальше идет 0

fieldoff
пауза 15 циклов
fieldon
пауза 17 циклов


ну а дальше

0101 и так далее -это на осцилл видно.

Вы даташит плохо значит смотрели,данные не переворачиваем.
Последний раз редактировалось sirha Вс мар 25, 2018 16:33:13, всего редактировалось 1 раз.

Re: Копировщик RFID-ключей T5557

Вс мар 25, 2018 16:35:08

Я даже не удивлен что у меня ваш алгоритм не заработал,а по даташиту с первого раза запахал,странно неправда ли.


У меня обратная ситуация. По даташиту не работало ни в какую. А по снятой диаграмме заработало сразу. ;)
Посмотрите начало темы:

Пришли брелоки em4305. Пробую реализовать протокол записи ключа. Я нашёл руководство по записи ключа (оно во вложении). Как я понял, ключ можно записать, например, в блок 5, а в блок 4 нужно записать конфигурационное слово (манчестер, RF/64, выдача слова 5). Согласно руководству (как я его понял), для записи блока нужно сделать следующее:
1 ) Включить поле на некоторое время.
2 ) Сформировать First Field Stop - отключить поле на 55 циклов (8 микросекунд один цикл = 1/125000)
3 ) Включить поле на 17 циклов.
4 ) Послать "0".
5 ) Послать команду с битом чётности в конце ("0101" - запись блока). Для всех блоков данных принят порядок "младший бит первый".
6 ) Послать адрес блока (4 бита).
7 ) Послать "00".
8 ) Послать бит чётности для адреса.
9 ) Послать блок данных (32 бита данных): после каждых 8 бит данных шлётся бит чётности этих переданных восьми бит. После передачи всех 32 бит данных шлётся 8 бит чётности этих бит данных по столбцам.
10 ) Послать "0".
11 ) Включить поле и подержать его ещё некоторое время, чтобы произошла запись и пришёл ответ. Ответ я не принимаю и не анализирую.

Чтобы послать "0" нужно:
1) На 15 циклов убрать поле.
2) На 17 циклов включить поле.

Чтобы послать "1" нужно на 32 цикла включить поле.

Я, собственно, так и сделал. Но брелок не записывается. :roll: Может, кто-нибудь знает, что я делаю не так?


Добавлено after 2 minutes 1 second:
Вы даташит плохо значит смотрели,данные не переворачиваем.


Всё я там перевернул как надо. :)

Re: Копировщик RFID-ключей T5557

Вс мар 25, 2018 16:39:36

Всё я там перевернул. :)


Вот именно что перевернули,почитайте как я выше данные отправляю,я их не переворачиваю,а вы данные шлете так: начиная с младшего бита и заканчивая старшим

Код:
111111111 0000 0 1011 1 0000 0 0000 0 0011 0 0101 0 1111 0 0111 1 0001 1 1010 0 1110 0


покажите в битах как вы их шлете попорядку со всеми битами четности строк и колонок,на моем примере номера карточки

Re: Копировщик RFID-ключей T5557

Вс мар 25, 2018 16:44:41

покажите в битах как вы их шлете попорядку со всеми битами четности строк и колонок


Не покажу. :dont_know: Я же выше уже сказал, что я давно уже не помню всего этого. В любом случае, не заработало по даташиту.
Так как нифига не получалось, я взял реально работающую игрушку и снял с неё осциллограмму. Там всё было ровно, как я и написал в программе (и как работает у всех повторивших (и переделавших), кроме вас). И вот это и заработало.

Re: Копировщик RFID-ключей T5557

Вс мар 25, 2018 16:47:08

Хм ну да,давно,но у меня работает все четко,проверял на карточках,на брелках,вы осцилограммы посмотрите,у меня тоже снято с реального копировщика,у вас бы и не заработала потомучто вы слали данные младшим битом вперед,я у вас в программе это вижу.

Re: Копировщик RFID-ключей T5557

Вс мар 25, 2018 16:49:51

Я в какие-нибудь выходные посмотрю, что будет, если текущую программу переделать под даташит и исправить фишку с таймером (которая, тем не менее, работает и так). Возможно, заработает. :tea:

потомучто вы слали данные младшим битом вперед,я у вас в программе это вижу.


Они и сейчас вроде как так шлются. И всё работает.
Последний раз редактировалось da-nie Вс мар 25, 2018 16:52:51, всего редактировалось 1 раз.

Re: Копировщик RFID-ключей T5557

Вс мар 25, 2018 16:52:26

Обратите внимание на данные карточки!!!!!
отправляйте их не переворачивая младшим битом вперед.
Я написал выше как я отправляю данные.
Очень странно,но я не меняю порядок бит как у вас,возможно есть команда какая то вначале.
Пробуйте,потом пишите :) ,я же тоже не дурачек,все проверил,какие данные идут по Uart именно вашим методом,мерил длительности осциллографом,не работало.
Последний раз редактировалось sirha Вс мар 25, 2018 17:13:56, всего редактировалось 1 раз.

Re: Копировщик RFID-ключей T5557

Вс мар 25, 2018 17:07:42

Ув. da-nie, под Аурдину/Атм328 какая последняя прошивка?

Re: Копировщик RFID-ключей T5557

Вс мар 25, 2018 19:21:53

А та, что тут в теме где-то лежит.:)

Re: Копировщик RFID-ключей T5557

Вт мар 27, 2018 10:11:19

da-nie, sirha, каждый из вас в чем-то прав.
sirha, вот Вы пишете по поводу FirstFieldStop:
sirha писал(а):Что это вообще такое??? ,я не хочу вас обидеть но это угар.Открываем даташит и пишем правильно:Как говориться останавливаем поле на 55 циклов и включаем 17

Но я тоже видел такое на китайском копировщике, и он отлично записывал заготовки. :dont_know:
Также я собирал копировщик с казуса, в котором не было "такой кракозябры", и он также отлично записывал em4305
Кроме того, в последнем копировщике была возможность поиграться таймингами, чем я и воспользовался :) :
1. Изменение FirstFieldStop в довольно широких пределах никак не влияло на запись заготовок
2. Изменение остальных таймингов при передаче нулей и единиц на 1-2 цикла также никак не влияло на запись заготовок
3. В итоге оставил по умолчанию :)
da-nie, так как запись заготовок в вашем варианте копировщика происходит (и не только у Вас), то все команды отправляются в соответствии с даташитом (в пределах допусков).
Чей алгоритм записи лучше - не важно, главное, что работает (разбираться в дебрях программ - это не моё :roll: ).
:beer:

Re: Копировщик RFID-ключей T5557

Вс апр 15, 2018 17:11:34

Помогите разобраться перестал работать копир. на Arduino nano :
На катушке 125кГц
В контрольной точке 40 В
Программа не читает ключ который раньше читался этим же копиром.
В чем может быть проблема?

Re: Копировщик RFID-ключей T5557

Пн апр 16, 2018 06:32:24

А другие ключи читаются?
Просто, может, ключик сдох. Такое бывает.
Ответить