Чт мар 22, 2018 08:21:51
D00D01D02D03D04D05D06D07 P0
D08D09D10D11D12D13D14D15 P1
D16D17D18D19D20D21D22D23 P2
D24D25D26D27D28D29D30D31 P3
PC0PC1PC2PC3PC4PC5PC6PC7 "0"
D00D01D02D03D04D05D06D07 P0
D08D09D10D11D12D13D14D15 P1
D16D17D18D19D20D21D22D23 P2
D24D25D26D27D28D29D30D31 P3
PC0PC1PC2PC3PC4PC5PC6PC7 "0"
00001111 0
11110000 0
10101010 0
10000000 1
;//////////
11010101 0
или же так шлем четность столбцов?
10101011 0
Чт мар 22, 2018 11:02:14
вы в какой проге пишите?
всмысле???
,к примеру я все байты перевернул , что такое PC0?
Чт мар 22, 2018 11:07:57
А вы не пробовали взять строго, как в программе сделано?
;///////////////////////////////////
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);
Пт мар 23, 2018 08:11:15
я же писал уже я си вспоминать полностью не хочу,что то я помню.
я так понимаю для записи это все что нужно отослать карте?
странно что у вас функция Логин стоит на первом месте перед записью,тоесть тот кто повторит ваш проект,если у него карточка пустая без пароля получается не запишет данные?
Вс мар 25, 2018 14:02:33
Логин на карточке включать надо, чтобы он работал. Изначально он отключён.
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.
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
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();
}
void FirstFieldStop_4305(void)
{
FieldOff();
_delay_us(55*8);
FieldOn();
_delay_us(17*8);
}
void SendOne_4305(void)
{
FieldOn();
_delay_us(32*8);
}
void SendZero_4305(void)
{
FieldOff();
_delay_us(15*8);
FieldOn();
_delay_us(17*8);
}
FirstFieldStop_4305
SendZero_4305
0101
0010 00 1
Так теперь пишем данные,смотрим их в даташите,для ленивых напишу,незабываем про четность строк и колонок:
В данной конфигурации Write Логин отменен,данные не переворачиваем!!!
0xFA 0 0x01 1 0x80 1 0x00 0 0x7B 0
вконце делаем:
FieldOn
delayms 20
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
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
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
Вс мар 25, 2018 14:42:32
Автор я конечно все понимаю,если вы не знаете зачем вы путаете людей,если на карте нет пароля нахрен этот логин,тем более он выключен у вас в конфиге:
Вообщем я собрал устройство и все работает,даташит рулит как всегда,но не ваша программа.
Напишу основные ошибки из-за которых сделать по алгоритму автора ничего не выйдет это все 100 процентов.
Что это вообще такое???
Внимание у тех у кого карточка пустая не нужно при записи ставить вначале Логин и сбрасывать его ,либо еще что то с ним делать,в этом нету смысла!!!,ИТАК ВСЕ ЗАПИШЕТСЯ.
Вс мар 25, 2018 16:26:46
Вс мар 25, 2018 16:30:29
Хм да уж,поверьте не вышло,
Вс мар 25, 2018 16:31:12
FieldStop 32-100 циклов:
Fieldoff
пауза 55 циклов
Fieldon
пауза 17 циклов
всеееееее.....откуда у вас такая каша
дальше идет 0
fieldoff
пауза 15 циклов
fieldon
пауза 17 циклов
Вс мар 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 цикла включить поле.
Я, собственно, так и сделал. Но брелок не записывается. Может, кто-нибудь знает, что я делаю не так?
Вы даташит плохо значит смотрели,данные не переворачиваем.
Вс мар 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
Вс мар 25, 2018 16:44:41
покажите в битах как вы их шлете попорядку со всеми битами четности строк и колонок
Вс мар 25, 2018 16:47:08
Вс мар 25, 2018 16:49:51
потомучто вы слали данные младшим битом вперед,я у вас в программе это вижу.
Вс мар 25, 2018 16:52:26
Вс мар 25, 2018 17:07:42
Вс мар 25, 2018 19:21:53
Вт мар 27, 2018 10:11:19
sirha писал(а):Что это вообще такое??? ,я не хочу вас обидеть но это угар.Открываем даташит и пишем правильно:Как говориться останавливаем поле на 55 циклов и включаем 17
Вс апр 15, 2018 17:11:34
Пн апр 16, 2018 06:32:24